summaryrefslogtreecommitdiffstats
path: root/crypto/evp
diff options
context:
space:
mode:
authorShane Lontis <shane.lontis@oracle.com>2020-08-12 11:59:43 +1000
committerShane Lontis <shane.lontis@oracle.com>2020-08-12 11:59:43 +1000
commite3efe7a53299dff3cd2222542b6a999b1360d626 (patch)
treec65037e5c1c56b9cb732d5f5725ed1ed81ada946 /crypto/evp
parentaf88e64a98a6402dabd41ac2de194444dd285b49 (diff)
Add public API for gettables and settables for keymanagement, signatures and key exchange.
The openssl provider app will now display these params. Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/12396)
Diffstat (limited to 'crypto/evp')
-rw-r--r--crypto/evp/exchange.c21
-rw-r--r--crypto/evp/keymgmt_meth.c7
-rw-r--r--crypto/evp/p_lib.c2
-rw-r--r--crypto/evp/pmeth_lib.c2
-rw-r--r--crypto/evp/signature.c22
5 files changed, 48 insertions, 6 deletions
diff --git a/crypto/evp/exchange.c b/crypto/evp/exchange.c
index a47a0f0367..ccd75099ad 100644
--- a/crypto/evp/exchange.c
+++ b/crypto/evp/exchange.c
@@ -474,3 +474,24 @@ void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch,
if (keyexch->prov != NULL)
evp_names_do_all(keyexch->prov, keyexch->name_id, fn, data);
}
+
+const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch)
+{
+ void *provctx;
+
+ if (keyexch == NULL || keyexch->gettable_ctx_params == NULL)
+ return NULL;
+
+ provctx = ossl_provider_ctx(EVP_KEYEXCH_provider(keyexch));
+ return keyexch->gettable_ctx_params(provctx);
+}
+
+const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch)
+{
+ void *provctx;
+
+ if (keyexch == NULL || keyexch->settable_ctx_params == NULL)
+ return NULL;
+ provctx = ossl_provider_ctx(EVP_KEYEXCH_provider(keyexch));
+ return keyexch->settable_ctx_params(provctx);
+}
diff --git a/crypto/evp/keymgmt_meth.c b/crypto/evp/keymgmt_meth.c
index 99d9504251..1459b64f0e 100644
--- a/crypto/evp/keymgmt_meth.c
+++ b/crypto/evp/keymgmt_meth.c
@@ -16,7 +16,6 @@
#include "crypto/evp.h"
#include "evp_local.h"
-
static void *keymgmt_new(void)
{
EVP_KEYMGMT *keymgmt = NULL;
@@ -328,7 +327,7 @@ int evp_keymgmt_gen_set_params(const EVP_KEYMGMT *keymgmt, void *genctx,
return keymgmt->gen_set_params(genctx, params);
}
-const OSSL_PARAM *evp_keymgmt_gen_settable_params(const EVP_KEYMGMT *keymgmt)
+const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt)
{
void *provctx = ossl_provider_ctx(EVP_KEYMGMT_provider(keymgmt));
@@ -367,7 +366,7 @@ int evp_keymgmt_get_params(const EVP_KEYMGMT *keymgmt, void *keydata,
return keymgmt->get_params(keydata, params);
}
-const OSSL_PARAM *evp_keymgmt_gettable_params(const EVP_KEYMGMT *keymgmt)
+const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt)
{
void *provctx = ossl_provider_ctx(EVP_KEYMGMT_provider(keymgmt));
@@ -384,7 +383,7 @@ int evp_keymgmt_set_params(const EVP_KEYMGMT *keymgmt, void *keydata,
return keymgmt->set_params(keydata, params);
}
-const OSSL_PARAM *evp_keymgmt_settable_params(const EVP_KEYMGMT *keymgmt)
+const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt)
{
void *provctx = ossl_provider_ctx(EVP_KEYMGMT_provider(keymgmt));
diff --git a/crypto/evp/p_lib.c b/crypto/evp/p_lib.c
index b057669a2d..145c5286ce 100644
--- a/crypto/evp/p_lib.c
+++ b/crypto/evp/p_lib.c
@@ -1883,7 +1883,7 @@ const OSSL_PARAM *EVP_PKEY_gettable_params(EVP_PKEY *pkey)
|| pkey->keymgmt == NULL
|| pkey->keydata == NULL)
return 0;
- return evp_keymgmt_gettable_params(pkey->keymgmt);
+ return EVP_KEYMGMT_gettable_params(pkey->keymgmt);
}
int EVP_PKEY_get_bn_param(EVP_PKEY *pkey, const char *key_name, BIGNUM **bn)
diff --git a/crypto/evp/pmeth_lib.c b/crypto/evp/pmeth_lib.c
index ba85a8c143..fe2cc689f6 100644
--- a/crypto/evp/pmeth_lib.c
+++ b/crypto/evp/pmeth_lib.c
@@ -680,7 +680,7 @@ const OSSL_PARAM *EVP_PKEY_CTX_settable_params(EVP_PKEY_CTX *ctx)
}
if (EVP_PKEY_CTX_IS_GEN_OP(ctx)
&& ctx->keymgmt != NULL)
- return evp_keymgmt_gen_settable_params(ctx->keymgmt);
+ return EVP_KEYMGMT_gen_settable_params(ctx->keymgmt);
return NULL;
}
diff --git a/crypto/evp/signature.c b/crypto/evp/signature.c
index 03fd8582f8..67242f59be 100644
--- a/crypto/evp/signature.c
+++ b/crypto/evp/signature.c
@@ -337,6 +337,28 @@ void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
evp_names_do_all(signature->prov, signature->name_id, fn, data);
}
+const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig)
+{
+ void *provctx;
+
+ if (sig == NULL || sig->gettable_ctx_params == NULL)
+ return NULL;
+
+ provctx = ossl_provider_ctx(EVP_SIGNATURE_provider(sig));
+ return sig->gettable_ctx_params(provctx);
+}
+
+const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig)
+{
+ void *provctx;
+
+ if (sig == NULL || sig->settable_ctx_params == NULL)
+ return NULL;
+
+ provctx = ossl_provider_ctx(EVP_SIGNATURE_provider(sig));
+ return sig->settable_ctx_params(provctx);
+}
+
static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation)
{
int ret = 0;