OPT_NAME, OPT_CSP, OPT_CANAME,
OPT_IN, OPT_OUT, OPT_PASSIN, OPT_PASSOUT, OPT_PASSWORD, OPT_CAPATH,
OPT_CAFILE, OPT_CASTORE, OPT_NOCAPATH, OPT_NOCAFILE, OPT_NOCASTORE, OPT_ENGINE,
- OPT_R_ENUM, OPT_PROV_ENUM,
+ OPT_R_ENUM, OPT_PROV_ENUM, OPT_JDKTRUST,
#ifndef OPENSSL_NO_DES
OPT_LEGACY_ALG
#endif
{"maciter", OPT_MACITER, '-', "Unused, kept for backwards compatibility"},
{"macsaltlen", OPT_MACSALTLEN, 'p', "Specify the salt len for MAC"},
{"nomac", OPT_NOMAC, '-', "Don't generate MAC"},
+ {"jdktrust", OPT_JDKTRUST, 's', "Mark certificate in PKCS#12 store as trusted for JDK compatibility"},
{NULL}
};
char *name = NULL, *csp_name = NULL;
char pass[PASSWD_BUF_SIZE] = "", macpass[PASSWD_BUF_SIZE] = "";
int export_pkcs12 = 0, options = 0, chain = 0, twopass = 0, keytype = 0;
+ char *jdktrust = NULL;
#ifndef OPENSSL_NO_DES
int use_legacy = 0;
#endif
case OPT_NOOUT:
options |= (NOKEYS | NOCERTS);
break;
+ case OPT_JDKTRUST:
+ jdktrust = opt_arg();
+ /* Adding jdk trust implies nokeys */
+ options |= NOKEYS;
+ break;
case OPT_INFO:
options |= INFO;
break;
int i;
CONF *conf = NULL;
ASN1_OBJECT *obj = NULL;
- STACK_OF(CONF_VALUE) *cb_sk = NULL;
- const char *cb_attr = NULL;
- const CONF_VALUE *val = NULL;
if ((options & (NOCERTS | NOKEYS)) == (NOCERTS | NOKEYS)) {
BIO_printf(bio_err, "Nothing to export due to -noout or -nocerts and -nokeys\n");
goto export_end;
if (!app_load_modules(conf))
goto export_end;
- /* Find the cert bag section */
- cb_attr = app_conf_try_string(conf, "pkcs12", "certBagAttr");
- if (cb_attr != NULL) {
- if ((cb_sk = NCONF_get_section(conf, cb_attr)) != NULL) {
- for (i = 0; i < sk_CONF_VALUE_num(cb_sk); i++) {
- val = sk_CONF_VALUE_value(cb_sk, i);
- if (strcmp(val->name, "jdkTrustedKeyUsage") == 0) {
- obj = OBJ_txt2obj(val->value, 0);
- break;
- }
- }
- } else {
- ERR_clear_error();
- }
+
+ if (jdktrust != NULL) {
+ obj = OBJ_txt2obj(jdktrust, 0);
}
p12 = PKCS12_create_ex2(cpass, name, key, ee_cert, certs,
# Test with Oracle Trusted Key Usage specified in openssl.cnf
{
- $ENV{OPENSSL_CONF} = srctop_file("test", "recipes", "80-test_pkcs12_data", "jdk_trusted.cnf");
ok(run(app(["openssl", "pkcs12", "-export", "-out", $outfile7,
- "-in", srctop_file(@path, "ee-cert.pem"),
+ "-jdktrust", "anyExtendedKeyUsage", "-in", srctop_file(@path, "ee-cert.pem"),
"-nokeys", "-passout", "pass:", "-certpbe", "NONE"])),
"test nokeys single cert");