mirror of https://github.com/openssl/openssl.git
KEYMGMT: Add a keydata matching function
Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/11158)
This commit is contained in:
parent
157ded39ee
commit
bee5d6cd3f
|
@ -85,6 +85,7 @@ struct evp_keymgmt_st {
|
|||
OSSL_OP_keymgmt_query_operation_name_fn *query_operation_name;
|
||||
OSSL_OP_keymgmt_has_fn *has;
|
||||
OSSL_OP_keymgmt_validate_fn *validate;
|
||||
OSSL_OP_keymgmt_match_fn *match;
|
||||
|
||||
/* Import and export routines */
|
||||
OSSL_OP_keymgmt_import_fn *import;
|
||||
|
|
|
@ -95,6 +95,10 @@ static void *keymgmt_from_dispatch(int name_id,
|
|||
if (keymgmt->validate == NULL)
|
||||
keymgmt->validate = OSSL_get_OP_keymgmt_validate(fns);
|
||||
break;
|
||||
case OSSL_FUNC_KEYMGMT_MATCH:
|
||||
if (keymgmt->match == NULL)
|
||||
keymgmt->match = OSSL_get_OP_keymgmt_match(fns);
|
||||
break;
|
||||
case OSSL_FUNC_KEYMGMT_IMPORT:
|
||||
if (keymgmt->import == NULL) {
|
||||
importfncnt++;
|
||||
|
@ -290,6 +294,16 @@ int evp_keymgmt_validate(const EVP_KEYMGMT *keymgmt, void *keydata,
|
|||
return keymgmt->validate(keydata, selection);
|
||||
}
|
||||
|
||||
int evp_keymgmt_match(const EVP_KEYMGMT *keymgmt,
|
||||
const void *keydata1, const void *keydata2,
|
||||
int selection)
|
||||
{
|
||||
/* We assume no match if the implementation doesn't have a function */
|
||||
if (keymgmt->match == NULL)
|
||||
return 0;
|
||||
return keymgmt->match(keydata1, keydata2, selection);
|
||||
}
|
||||
|
||||
int evp_keymgmt_import(const EVP_KEYMGMT *keymgmt, void *keydata,
|
||||
int selection, const OSSL_PARAM params[])
|
||||
{
|
||||
|
|
|
@ -26,6 +26,8 @@ provider-keymgmt - The KEYMGMT library E<lt>-E<gt> provider functions
|
|||
|
||||
/* Key object content checks */
|
||||
int OP_keymgmt_has(void *keydata, int selection);
|
||||
int OP_keymgmt_match(const void *keydata1, const void *keydata2,
|
||||
int selection);
|
||||
|
||||
/* Discovery of supported operations */
|
||||
const char *OP_keymgmt_query_operation_name(int operation_id);
|
||||
|
@ -84,6 +86,7 @@ macros in L<openssl-core_numbers.h(7)>, as follows:
|
|||
|
||||
OP_keymgmt_has OSSL_FUNC_KEYMGMT_HAS
|
||||
OP_keymgmt_validate OSSL_FUNC_KEYMGMT_VALIDATE
|
||||
OP_keymgmt_match OSSL_FUNC_KEYMGMT_MATCH
|
||||
|
||||
OP_keymgmt_import OSSL_FUNC_KEYMGMT_IMPORT
|
||||
OP_keymgmt_import_types OSSL_FUNC_KEYMGMT_IMPORT_TYPES
|
||||
|
@ -239,6 +242,11 @@ B<OSSL_KEYMGMT_SELECT_PUBLIC_KEY> (or B<OSSL_KEYMGMT_SELECT_KEYPAIR>
|
|||
for short) is expected to check that the pairwise consistency of
|
||||
I<keydata> is valid.
|
||||
|
||||
OP_keymgmt_match() should check if the data subset indicated by
|
||||
I<selection> in I<keydata1> and I<keydata2> match. It is assumed that
|
||||
the caller has ensured that I<keydata1> and I<keydata2> are both owned
|
||||
by the implementation of this function.
|
||||
|
||||
=head2 Key Object Import and Export Functions
|
||||
|
||||
OP_keymgmt_import() should import data indicated by I<selection> into
|
||||
|
|
|
@ -638,6 +638,9 @@ const OSSL_PARAM *evp_keymgmt_settable_params(const EVP_KEYMGMT *keymgmt);
|
|||
int evp_keymgmt_has(const EVP_KEYMGMT *keymgmt, void *keyddata, int selection);
|
||||
int evp_keymgmt_validate(const EVP_KEYMGMT *keymgmt, void *keydata,
|
||||
int selection);
|
||||
int evp_keymgmt_match(const EVP_KEYMGMT *keymgmt,
|
||||
const void *keydata1, const void *keydata2,
|
||||
int selection);
|
||||
|
||||
int evp_keymgmt_import(const EVP_KEYMGMT *keymgmt, void *keydata,
|
||||
int selection, const OSSL_PARAM params[]);
|
||||
|
|
|
@ -412,6 +412,12 @@ OSSL_CORE_MAKE_FUNC(int, OP_keymgmt_has, (void *keydata, int selection))
|
|||
# define OSSL_FUNC_KEYMGMT_VALIDATE 22
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_keymgmt_validate, (void *keydata, int selection))
|
||||
|
||||
/* Key checks - matching */
|
||||
# define OSSL_FUNC_KEYMGMT_MATCH 23
|
||||
OSSL_CORE_MAKE_FUNC(int, OP_keymgmt_match,
|
||||
(const void *keydata1, const void *keydata2,
|
||||
int selection))
|
||||
|
||||
/* Import and export functions, with ddiscovery */
|
||||
# define OSSL_FUNC_KEYMGMT_IMPORT 40
|
||||
# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES 41
|
||||
|
|
Loading…
Reference in New Issue