summaryrefslogtreecommitdiffstats
path: root/apps/lib
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2020-10-20 11:56:22 +0200
committerPauli <paul.dale@oracle.com>2020-10-22 12:14:32 +1000
commitb78c777ee3038920064f5c2e3eb2a4f66a35119d (patch)
tree9eb5786fb794a2e4be77327a11d89cfe8211bca2 /apps/lib
parentf31ac320012c9aa1540034288ea94f6c80924aa3 (diff)
APPS: Implement load_keyparams() to load key parameters
'openssl dsaparam' is affected as an obvious usage example. Reviewed-by: Paul Dale <paul.dale@oracle.com> (Merged from https://github.com/openssl/openssl/pull/13191)
Diffstat (limited to 'apps/lib')
-rw-r--r--apps/lib/apps.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/apps/lib/apps.c b/apps/lib/apps.c
index d90ef6a192..d100ce42dd 100644
--- a/apps/lib/apps.c
+++ b/apps/lib/apps.c
@@ -476,7 +476,7 @@ X509 *load_cert_pass(const char *uri, int maybe_stdin,
if (desc == NULL)
desc = "certificate";
(void)load_key_certs_crls(uri, maybe_stdin, pass, desc,
- NULL, NULL, &cert, NULL, NULL, NULL);
+ NULL, NULL, NULL, &cert, NULL, NULL, NULL);
if (cert == NULL) {
BIO_printf(bio_err, "Unable to load %s\n", desc);
ERR_print_errors(bio_err);
@@ -492,7 +492,7 @@ X509_CRL *load_crl(const char *uri, int format, const char *desc)
if (desc == NULL)
desc = "CRL";
(void)load_key_certs_crls(uri, 0, NULL, desc,
- NULL, NULL, NULL, NULL, &crl, NULL);
+ NULL, NULL, NULL, NULL, NULL, &crl, NULL);
if (crl == NULL) {
BIO_printf(bio_err, "Unable to load %s\n", desc);
ERR_print_errors(bio_err);
@@ -559,7 +559,7 @@ EVP_PKEY *load_key(const char *uri, int format, int may_stdin,
}
} else {
(void)load_key_certs_crls(uri, may_stdin, pass, desc,
- &pkey, NULL, NULL, NULL, NULL, NULL);
+ &pkey, NULL, NULL, NULL, NULL, NULL, NULL);
}
if (pkey == NULL) {
@@ -589,7 +589,7 @@ EVP_PKEY *load_pubkey(const char *uri, int format, int maybe_stdin,
}
} else {
(void)load_key_certs_crls(uri, maybe_stdin, pass, desc,
- NULL, &pkey, NULL, NULL, NULL, NULL);
+ NULL, &pkey, NULL, NULL, NULL, NULL, NULL);
}
if (pkey == NULL) {
BIO_printf(bio_err, "Unable to load %s\n", desc);
@@ -598,6 +598,22 @@ EVP_PKEY *load_pubkey(const char *uri, int format, int maybe_stdin,
return pkey;
}
+EVP_PKEY *load_keyparams(const char *uri, int maybe_stdin, const char *desc)
+{
+ EVP_PKEY *params = NULL;
+
+ if (desc == NULL)
+ desc = "key parameters";
+
+ (void)load_key_certs_crls(uri, maybe_stdin, NULL, desc,
+ NULL, NULL, &params, NULL, NULL, NULL, NULL);
+ if (params == NULL) {
+ BIO_printf(bio_err, "Unable to load %s\n", desc);
+ ERR_print_errors(bio_err);
+ }
+ return params;
+}
+
void app_bail_out(char *fmt, ...)
{
va_list args;
@@ -627,7 +643,7 @@ int load_certs(const char *uri, STACK_OF(X509) **certs,
const char *pass, const char *desc)
{
int was_NULL = *certs == NULL;
- int ret = load_key_certs_crls(uri, 0, pass, desc, NULL, NULL,
+ int ret = load_key_certs_crls(uri, 0, pass, desc, NULL, NULL, NULL,
NULL, certs, NULL, NULL);
if (!ret && was_NULL) {
@@ -645,7 +661,7 @@ int load_crls(const char *uri, STACK_OF(X509_CRL) **crls,
const char *pass, const char *desc)
{
int was_NULL = *crls == NULL;
- int ret = load_key_certs_crls(uri, 0, pass, desc, NULL, NULL,
+ int ret = load_key_certs_crls(uri, 0, pass, desc, NULL, NULL, NULL,
NULL, NULL, NULL, crls);
if (!ret && was_NULL) {
@@ -671,6 +687,7 @@ int load_crls(const char *uri, STACK_OF(X509_CRL) **crls,
int load_key_certs_crls(const char *uri, int maybe_stdin,
const char *pass, const char *desc,
EVP_PKEY **ppkey, EVP_PKEY **ppubkey,
+ EVP_PKEY **pparams,
X509 **pcert, STACK_OF(X509) **pcerts,
X509_CRL **pcrl, STACK_OF(X509_CRL) **pcrls)
{
@@ -761,6 +778,10 @@ int load_key_certs_crls(const char *uri, int maybe_stdin,
if (ppubkey != NULL && *ppubkey == NULL)
ok = ((*ppubkey = OSSL_STORE_INFO_get1_PUBKEY(info)) != NULL);
break;
+ case OSSL_STORE_INFO_PARAMS:
+ if (pparams != NULL && *pparams == NULL)
+ ok = ((*pparams = OSSL_STORE_INFO_get1_PARAMS(info)) != NULL);
+ break;
case OSSL_STORE_INFO_CERT:
if (pcert != NULL && *pcert == NULL)
ok = (*pcert = OSSL_STORE_INFO_get1_CERT(info)) != NULL;
@@ -794,8 +815,11 @@ int load_key_certs_crls(const char *uri, int maybe_stdin,
if (failed == NULL) {
int any = 0;
- if (ppkey != NULL && *ppkey == NULL) {
+ if ((ppkey != NULL && *ppkey == NULL)
+ || (ppubkey != NULL && *ppubkey == NULL)) {
failed = "key";
+ } else if (pparams != NULL && *pparams == NULL) {
+ failed = "params";
} else if ((pcert != NULL || pcerts != NULL) && ncerts == 0) {
if (pcert == NULL)
any = 1;