mirror of
https://github.com/openssl/openssl.git
synced 2025-02-17 14:32:04 +08:00
EVP: add name traversal functions to all fetchable types
The following new functions all do the same thing; they traverse the set of names assigned to implementations of each algorithm type: EVP_MD_names_do_all(), EVP_CIPHER_names_do_all(), EVP_MAC_names_do_all(), EVP_KEYMGMT_names_do_all(), EVP_KEYEXCH_names_do_all(), EVP_KDF_names_do_all(), EVP_SIGNATURE_names_do_all() We add a warning to the documentation of EVP_CIPHER_name() and EVP_MD_name(), as they aren't suitable to use with multiple-name implementation. We also remove EVP_MAC_name() and evp_KDF_name(), as they serve no useful purpose. Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/9979)
This commit is contained in:
parent
251e610ce4
commit
f651c727f8
@ -760,7 +760,7 @@ static void *evp_md_from_dispatch(int name_id,
|
||||
#ifndef FIPS_MODE
|
||||
/* TODO(3.x) get rid of the need for legacy NIDs */
|
||||
md->type = NID_undef;
|
||||
evp_doall_names(prov, name_id, set_legacy_nid, &md->type);
|
||||
evp_names_do_all(prov, name_id, set_legacy_nid, &md->type);
|
||||
if (md->type == -1) {
|
||||
ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
|
||||
EVP_MD_free(md);
|
||||
|
@ -1365,7 +1365,7 @@ static void *evp_cipher_from_dispatch(const int name_id,
|
||||
#ifndef FIPS_MODE
|
||||
/* TODO(3.x) get rid of the need for legacy NIDs */
|
||||
cipher->nid = NID_undef;
|
||||
evp_doall_names(prov, name_id, set_legacy_nid, &cipher->nid);
|
||||
evp_names_do_all(prov, name_id, set_legacy_nid, &cipher->nid);
|
||||
if (cipher->nid == -1) {
|
||||
ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
|
||||
EVP_CIPHER_free(cipher);
|
||||
|
@ -468,9 +468,9 @@ int evp_is_a(OSSL_PROVIDER *prov, int number, const char *name)
|
||||
return ossl_namemap_name2num(namemap, name) == number;
|
||||
}
|
||||
|
||||
void evp_doall_names(OSSL_PROVIDER *prov, int number,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
void evp_names_do_all(OSSL_PROVIDER *prov, int number,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
OPENSSL_CTX *libctx = ossl_provider_library_context(prov);
|
||||
OSSL_NAMEMAP *namemap = ossl_namemap_stored(libctx);
|
||||
|
@ -556,6 +556,14 @@ const char *EVP_CIPHER_name(const EVP_CIPHER *cipher)
|
||||
#endif
|
||||
}
|
||||
|
||||
void EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (cipher->prov != NULL)
|
||||
evp_names_do_all(cipher->prov, cipher->name_id, fn, data);
|
||||
}
|
||||
|
||||
const OSSL_PROVIDER *EVP_CIPHER_provider(const EVP_CIPHER *cipher)
|
||||
{
|
||||
return cipher->prov;
|
||||
@ -589,6 +597,14 @@ const char *EVP_MD_name(const EVP_MD *md)
|
||||
#endif
|
||||
}
|
||||
|
||||
void EVP_MD_names_do_all(const EVP_MD *md,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (md->prov != NULL)
|
||||
evp_names_do_all(md->prov, md->name_id, fn, data);
|
||||
}
|
||||
|
||||
const OSSL_PROVIDER *EVP_MD_provider(const EVP_MD *md)
|
||||
{
|
||||
return md->prov;
|
||||
|
@ -261,6 +261,6 @@ void evp_pkey_ctx_free_old_ops(EVP_PKEY_CTX *ctx);
|
||||
/* OSSL_PROVIDER * is only used to get the library context */
|
||||
const char *evp_first_name(OSSL_PROVIDER *prov, int name_id);
|
||||
int evp_is_a(OSSL_PROVIDER *prov, int number, const char *name);
|
||||
void evp_doall_names(OSSL_PROVIDER *prov, int number,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
void evp_names_do_all(OSSL_PROVIDER *prov, int number,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
@ -405,3 +405,11 @@ void EVP_KEYEXCH_do_all_provided(OPENSSL_CTX *libctx,
|
||||
evp_keyexch_from_dispatch, &keymgmt_data,
|
||||
(void (*)(void *))EVP_KEYEXCH_free);
|
||||
}
|
||||
|
||||
void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (keyexch->prov != NULL)
|
||||
evp_names_do_all(keyexch->prov, keyexch->name_id, fn, data);
|
||||
}
|
||||
|
@ -83,11 +83,6 @@ EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src)
|
||||
return dst;
|
||||
}
|
||||
|
||||
const char *EVP_KDF_name(const EVP_KDF *kdf)
|
||||
{
|
||||
return evp_first_name(kdf->prov, kdf->name_id);
|
||||
}
|
||||
|
||||
int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name)
|
||||
{
|
||||
return evp_is_a(kdf->prov, kdf->name_id, name);
|
||||
@ -164,3 +159,11 @@ int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[])
|
||||
return ctx->meth->set_ctx_params(ctx->data, params);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void EVP_KDF_names_do_all(const EVP_KDF *kdf,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (kdf->prov != NULL)
|
||||
evp_names_do_all(kdf->prov, kdf->name_id, fn, data);
|
||||
}
|
||||
|
@ -214,3 +214,11 @@ void EVP_KEYMGMT_do_all_provided(OPENSSL_CTX *libctx,
|
||||
keymgmt_from_dispatch, NULL,
|
||||
(void (*)(void *))EVP_KEYMGMT_free);
|
||||
}
|
||||
|
||||
void EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (keymgmt->prov != NULL)
|
||||
evp_names_do_all(keymgmt->prov, keymgmt->name_id, fn, data);
|
||||
}
|
||||
|
@ -162,3 +162,11 @@ int EVP_MAC_is_a(const EVP_MAC *mac, const char *name)
|
||||
{
|
||||
return evp_is_a(mac->prov, mac->name_id, name);
|
||||
}
|
||||
|
||||
void EVP_MAC_names_do_all(const EVP_MAC *mac,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (mac->prov != NULL)
|
||||
evp_names_do_all(mac->prov, mac->name_id, fn, data);
|
||||
}
|
||||
|
@ -168,11 +168,6 @@ void EVP_MAC_free(EVP_MAC *mac)
|
||||
evp_mac_free(mac);
|
||||
}
|
||||
|
||||
const char *EVP_MAC_name(const EVP_MAC *mac)
|
||||
{
|
||||
return evp_first_name(mac->prov, mac->name_id);
|
||||
}
|
||||
|
||||
const OSSL_PROVIDER *EVP_MAC_provider(const EVP_MAC *mac)
|
||||
{
|
||||
return mac->prov;
|
||||
|
@ -332,6 +332,15 @@ void EVP_SIGNATURE_do_all_provided(OPENSSL_CTX *libctx,
|
||||
(void (*)(void *))EVP_SIGNATURE_free);
|
||||
}
|
||||
|
||||
|
||||
void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data)
|
||||
{
|
||||
if (signature->prov != NULL)
|
||||
evp_names_do_all(signature->prov, signature->name_id, fn, data);
|
||||
}
|
||||
|
||||
static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, EVP_SIGNATURE *signature,
|
||||
int operation)
|
||||
{
|
||||
|
@ -12,7 +12,7 @@ EVP_MD_CTX_settable_params, EVP_MD_CTX_gettable_params,
|
||||
EVP_MD_CTX_set_flags, EVP_MD_CTX_clear_flags, EVP_MD_CTX_test_flags,
|
||||
EVP_Digest, EVP_DigestInit_ex, EVP_DigestInit, EVP_DigestUpdate,
|
||||
EVP_DigestFinal_ex, EVP_DigestFinalXOF, EVP_DigestFinal,
|
||||
EVP_MD_is_a, EVP_MD_name, EVP_MD_provider,
|
||||
EVP_MD_is_a, EVP_MD_name, EVP_MD_names_do_all, EVP_MD_provider,
|
||||
EVP_MD_type, EVP_MD_pkey_type, EVP_MD_size, EVP_MD_block_size, EVP_MD_flags,
|
||||
EVP_MD_CTX_name,
|
||||
EVP_MD_CTX_md, EVP_MD_CTX_type, EVP_MD_CTX_size, EVP_MD_CTX_block_size,
|
||||
@ -63,6 +63,9 @@ EVP_MD_do_all_provided
|
||||
|
||||
const char *EVP_MD_name(const EVP_MD *md);
|
||||
int EVP_MD_is_a(const EVP_MD *md, const char *name);
|
||||
void EVP_MD_names_do_all(const EVP_MD *md,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
const OSSL_PROVIDER *EVP_MD_provider(const EVP_MD *md);
|
||||
int EVP_MD_type(const EVP_MD *md);
|
||||
int EVP_MD_pkey_type(const EVP_MD *md);
|
||||
@ -248,7 +251,13 @@ identifiable with I<name>, otherwise 0.
|
||||
EVP_MD_CTX_name()
|
||||
|
||||
Return the name of the given message digest. For fetched message
|
||||
digests with multiple names, only one of them is returned.
|
||||
digests with multiple names, only one of them is returned; it's
|
||||
recommended to use EVP_MD_names_do_all() instead.
|
||||
|
||||
=item EVP_MD_names_do_all()
|
||||
|
||||
Traverses all names for the I<md>, and calls I<fn> with each name and
|
||||
I<data>. This is only useful with fetched B<EVP_MD>s.
|
||||
|
||||
=item EVP_MD_provider()
|
||||
|
||||
|
@ -31,6 +31,7 @@ EVP_get_cipherbynid,
|
||||
EVP_get_cipherbyobj,
|
||||
EVP_CIPHER_is_a,
|
||||
EVP_CIPHER_name,
|
||||
EVP_CIPHER_names_do_all,
|
||||
EVP_CIPHER_provider,
|
||||
EVP_CIPHER_nid,
|
||||
EVP_CIPHER_get_params,
|
||||
@ -122,6 +123,9 @@ EVP_CIPHER_do_all_provided
|
||||
|
||||
int EVP_CIPHER_nid(const EVP_CIPHER *e);
|
||||
int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name);
|
||||
void EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
const char *EVP_CIPHER_name(const EVP_CIPHER *cipher);
|
||||
const OSSL_PROVIDER *EVP_CIPHER_provider(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_block_size(const EVP_CIPHER *e);
|
||||
@ -335,7 +339,12 @@ algorithm that's identifiable with I<name>, otherwise 0.
|
||||
|
||||
EVP_CIPHER_name() and EVP_CIPHER_CTX_name() return the name of the passed
|
||||
cipher or context. For fetched ciphers with multiple names, only one
|
||||
of them is returned.
|
||||
of them is returned; it's recommended to use EVP_CIPHER_names_do_all()
|
||||
instead.
|
||||
|
||||
EVP_CIPHER_names_do_all() traverses all names for the I<cipher>, and
|
||||
calls I<fn> with each name and I<data>. This is only useful with
|
||||
fetched B<EVP_CIPHER>s.
|
||||
|
||||
EVP_CIPHER_provider() returns an B<OSSL_PROVIDER> pointer to the provider
|
||||
that implements the given B<EVP_CIPHER>.
|
||||
|
@ -6,6 +6,7 @@ EVP_KDF, EVP_KDF_fetch, EVP_KDF_free, EVP_KDF_up_ref,
|
||||
EVP_KDF_CTX, EVP_KDF_CTX_new, EVP_KDF_CTX_free, EVP_KDF_CTX_dup,
|
||||
EVP_KDF_reset, EVP_KDF_derive,
|
||||
EVP_KDF_size, EVP_KDF_provider, EVP_KDF_CTX_kdf, EVP_KDF_is_a,
|
||||
EVP_KDF_names_do_all,
|
||||
EVP_KDF_CTX_get_params, EVP_KDF_CTX_set_params, EVP_KDF_do_all_provided,
|
||||
EVP_KDF_get_params, EVP_KDF_gettable_ctx_params, EVP_KDF_settable_ctx_params,
|
||||
EVP_KDF_gettable_params - EVP KDF routines
|
||||
@ -24,7 +25,6 @@ EVP_KDF_gettable_params - EVP KDF routines
|
||||
void EVP_KDF_reset(EVP_KDF_CTX *ctx);
|
||||
size_t EVP_KDF_size(EVP_KDF_CTX *ctx);
|
||||
int EVP_KDF_derive(EVP_KDF_CTX *ctx, unsigned char *key, size_t keylen);
|
||||
const char *EVP_KDF_name(const EVP_KDF *kdf);
|
||||
int EVP_KDF_up_ref(EVP_KDF *kdf);
|
||||
void EVP_KDF_free(EVP_KDF *kdf);
|
||||
EVP_KDF *EVP_KDF_fetch(OPENSSL_CTX *libctx, const char *algorithm,
|
||||
@ -34,6 +34,9 @@ EVP_KDF_gettable_params - EVP KDF routines
|
||||
void EVP_KDF_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_KDF *kdf, void *arg),
|
||||
void *arg);
|
||||
void EVP_KDF_names_do_all(const EVP_KDF *kdf,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
int EVP_KDF_get_params(EVP_KDF *kdf, OSSL_PARAM params[]);
|
||||
int EVP_KDF_CTX_get_params(EVP_KDF_CTX *ctx, OSSL_PARAM params[]);
|
||||
int EVP_KDF_CTX_set_params(EVP_KDF_CTX *ctx, const OSSL_PARAM params[]);
|
||||
@ -130,8 +133,6 @@ of output and B<SIZE_MAX> otherwise. If an error occurs then 0 is returned.
|
||||
For some algorithms an error may result if input parameters necessary to
|
||||
calculate a fixed output size have not yet been supplied.
|
||||
|
||||
EVP_KDF_name() returns the name of the given KDF implementation.
|
||||
|
||||
EVP_KDF_is_a() returns 1 if I<kdf> is an implementation of an
|
||||
algorithm that's identifiable with I<name>, otherwise 0.
|
||||
|
||||
@ -143,6 +144,9 @@ providers in the given library context I<libctx>, and for each of the
|
||||
implementations, calls the given function I<fn> with the implementation method
|
||||
and the given I<arg> as argument.
|
||||
|
||||
EVP_KDF_names_do_all() traverses all names for I<kdf>, and calls
|
||||
I<fn> with each name and I<data>.
|
||||
|
||||
=head1 PARAMETERS
|
||||
|
||||
The standard parameter names are:
|
||||
@ -219,9 +223,6 @@ The memory size must never exceed what can be given with a B<size_t>.
|
||||
EVP_KDF_fetch() returns a pointer to a newly fetched B<EVP_KDF>, or
|
||||
NULL if allocation failed.
|
||||
|
||||
EVP_KDF_name() returns the name for the given I<kdf>, if it has been
|
||||
added to the object database.
|
||||
|
||||
EVP_KDF_provider() returns a pointer to the provider for the KDF, or
|
||||
NULL on error.
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
=head1 NAME
|
||||
|
||||
EVP_KEYEXCH_fetch, EVP_KEYEXCH_free, EVP_KEYEXCH_up_ref, EVP_KEYEXCH_provider,
|
||||
EVP_KEYEXCH_is_a, EVP_KEYEXCH_do_all_provided,
|
||||
EVP_KEYEXCH_is_a, EVP_KEYEXCH_do_all_provided, EVP_KEYEXCH_names_do_all
|
||||
- Functions to manage EVP_KEYEXCH algorithm objects
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@ -19,6 +19,9 @@ EVP_KEYEXCH_is_a, EVP_KEYEXCH_do_all_provided,
|
||||
void EVP_KEYEXCH_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_KEYEXCH *exchange, void *arg),
|
||||
void *arg);
|
||||
void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *exchange,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@ -42,6 +45,9 @@ EVP_KEYEXCH_provider() returns the provider that I<exchange> was fetched from.
|
||||
EVP_KEYEXCH_is_a() checks if I<exchange> is an implementation of an
|
||||
algorithm that's identifiable with I<name>.
|
||||
|
||||
EVP_KEYEXCH_names_do_all() traverses all names for the I<exchange>, and
|
||||
calls I<fn> with each name and I<data>.
|
||||
|
||||
EVP_KEYEXCH_do_all_provided() traverses all key exchange implementations by
|
||||
all activated providers in the library context I<libctx>, and for each
|
||||
of the implementations, calls I<fn> with the implementation method and
|
||||
|
@ -9,6 +9,7 @@ EVP_KEYMGMT_free,
|
||||
EVP_KEYMGMT_provider,
|
||||
EVP_KEYMGMT_is_a,
|
||||
EVP_KEYMGMT_do_all_provided,
|
||||
EVP_KEYMGMT_names_do_all
|
||||
- EVP key management routines
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@ -26,6 +27,9 @@ EVP_KEYMGMT_do_all_provided,
|
||||
void EVP_KEYMGMT_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_KEYMGMT *keymgmt, void *arg),
|
||||
void *arg);
|
||||
void EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@ -54,6 +58,9 @@ implementation.
|
||||
EVP_KEYMGMT_is_a() checks if I<keymgmt> is an implementation of an
|
||||
algorithm that's identifiable with I<name>.
|
||||
|
||||
EVP_KEYMGMT_names_do_all() traverses all names for the I<keymgmt>, and
|
||||
calls I<fn> with each name and I<data>.
|
||||
|
||||
EVP_KEYMGMT_do_all_provided() traverses all key keymgmt implementations by
|
||||
all activated providers in the library context I<libctx>, and for each
|
||||
of the implementations, calls I<fn> with the implementation method and
|
||||
|
@ -3,7 +3,7 @@
|
||||
=head1 NAME
|
||||
|
||||
EVP_MAC, EVP_MAC_fetch, EVP_MAC_up_ref, EVP_MAC_free,
|
||||
EVP_MAC_is_a, EVP_MAC_name,
|
||||
EVP_MAC_is_a, EVP_MAC_names_do_all,
|
||||
EVP_MAC_provider, EVP_MAC_get_params, EVP_MAC_gettable_params,
|
||||
EVP_MAC_CTX, EVP_MAC_CTX_new, EVP_MAC_CTX_free, EVP_MAC_CTX_dup,
|
||||
EVP_MAC_CTX_mac, EVP_MAC_CTX_get_params, EVP_MAC_CTX_set_params,
|
||||
@ -23,7 +23,9 @@ EVP_MAC_do_all_provided - EVP MAC routines
|
||||
int EVP_MAC_up_ref(EVP_MAC *mac);
|
||||
void EVP_MAC_free(EVP_MAC *mac);
|
||||
int EVP_MAC_is_a(const EVP_MAC *mac, const char *name);
|
||||
const char *EVP_MAC_name(const EVP_MAC *mac);
|
||||
void EVP_MAC_names_do_all(const EVP_MAC *mac,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
const OSSL_PROVIDER *EVP_MAC_provider(const EVP_MAC *mac);
|
||||
int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]);
|
||||
|
||||
@ -157,8 +159,6 @@ See L<OSSL_PARAM(3)> for the use of B<OSSL_PARAM> as parameter descriptor.
|
||||
|
||||
EVP_MAC_size() returns the MAC output size for the given context.
|
||||
|
||||
EVP_MAC_name() returns the name of the given MAC implementation.
|
||||
|
||||
EVP_MAC_is_a() checks if the given I<mac> is an implementation of an
|
||||
algorithm that's identifiable with I<name>.
|
||||
|
||||
@ -170,6 +170,9 @@ providers in the given library context I<libctx>, and for each of the
|
||||
implementations, calls the given function I<fn> with the implementation method
|
||||
and the given I<arg> as argument.
|
||||
|
||||
EVP_MAC_names_do_all() traverses all names for I<mac>, and calls
|
||||
I<fn> with each name and I<data>.
|
||||
|
||||
=head1 PARAMETERS
|
||||
|
||||
Parameters are identified by name as strings, and have an expected
|
||||
@ -254,9 +257,6 @@ EVP_MAC_up_ref() returns 1 on success, 0 on error.
|
||||
|
||||
EVP_MAC_free() returns nothing at all.
|
||||
|
||||
EVP_MAC_name() returns the name of the MAC, or NULL if NULL was
|
||||
passed.
|
||||
|
||||
EVP_MAC_is_a() returns 1 if the given method can be identified with
|
||||
the given name, otherwise 0.
|
||||
|
||||
|
@ -3,7 +3,8 @@
|
||||
=head1 NAME
|
||||
|
||||
EVP_SIGNATURE_fetch, EVP_SIGNATURE_free, EVP_SIGNATURE_up_ref,
|
||||
EVP_SIGNATURE_is_a, EVP_SIGNATURE_provider, EVP_SIGNATURE_do_all_provided
|
||||
EVP_SIGNATURE_is_a, EVP_SIGNATURE_provider, EVP_SIGNATURE_do_all_provided,
|
||||
EVP_SIGNATURE_names_do_all
|
||||
- Functions to manage EVP_SIGNATURE algorithm objects
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@ -20,6 +21,9 @@ EVP_SIGNATURE_is_a, EVP_SIGNATURE_provider, EVP_SIGNATURE_do_all_provided
|
||||
void (*fn)(EVP_SIGNATURE *signature,
|
||||
void *arg),
|
||||
void *arg);
|
||||
void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@ -50,6 +54,9 @@ activated roviders in the given library context I<libctx>, and for each of the
|
||||
implementations, calls the given function I<fn> with the implementation method
|
||||
and the given I<arg> as argument.
|
||||
|
||||
EVP_SIGNATURE_names_do_all() traverses all names for I<signature>, and calls
|
||||
I<fn> with each name and I<data>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_SIGNATURE_fetch() returns a pointer to an B<EVP_SIGNATURE> for success
|
||||
|
@ -463,6 +463,9 @@ int EVP_MD_type(const EVP_MD *md);
|
||||
# define EVP_MD_nid(e) EVP_MD_type(e)
|
||||
const char *EVP_MD_name(const EVP_MD *md);
|
||||
int EVP_MD_is_a(const EVP_MD *md, const char *name);
|
||||
void EVP_MD_names_do_all(const EVP_MD *md,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
const OSSL_PROVIDER *EVP_MD_provider(const EVP_MD *md);
|
||||
int EVP_MD_pkey_type(const EVP_MD *md);
|
||||
int EVP_MD_size(const EVP_MD *md);
|
||||
@ -486,6 +489,9 @@ void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx);
|
||||
int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
|
||||
const char *EVP_CIPHER_name(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name);
|
||||
void EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
const OSSL_PROVIDER *EVP_CIPHER_provider(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
|
||||
int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher);
|
||||
@ -1052,7 +1058,6 @@ EVP_MAC *EVP_MAC_fetch(OPENSSL_CTX *libctx, const char *algorithm,
|
||||
const char *properties);
|
||||
int EVP_MAC_up_ref(EVP_MAC *mac);
|
||||
void EVP_MAC_free(EVP_MAC *mac);
|
||||
const char *EVP_MAC_name(const EVP_MAC *mac);
|
||||
int EVP_MAC_is_a(const EVP_MAC *mac, const char *name);
|
||||
const OSSL_PROVIDER *EVP_MAC_provider(const EVP_MAC *mac);
|
||||
int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]);
|
||||
@ -1076,6 +1081,9 @@ const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac);
|
||||
void EVP_MAC_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_MAC *mac, void *arg),
|
||||
void *arg);
|
||||
void EVP_MAC_names_do_all(const EVP_MAC *mac,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
/* PKEY stuff */
|
||||
int EVP_PKEY_decrypt_old(unsigned char *dec_key,
|
||||
@ -1443,6 +1451,9 @@ int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name);
|
||||
void EVP_KEYMGMT_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_KEYMGMT *keymgmt, void *arg),
|
||||
void *arg);
|
||||
void EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
|
||||
@ -1505,6 +1516,9 @@ void EVP_SIGNATURE_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_SIGNATURE *signature,
|
||||
void *data),
|
||||
void *data);
|
||||
void EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, EVP_SIGNATURE *signature);
|
||||
int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
|
||||
@ -1769,6 +1783,9 @@ int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name);
|
||||
void EVP_KEYEXCH_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_KEYEXCH *keyexch, void *data),
|
||||
void *data);
|
||||
void EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
void EVP_add_alg_module(void);
|
||||
|
||||
|
@ -33,7 +33,6 @@ EVP_KDF *EVP_KDF_fetch(OPENSSL_CTX *libctx, const char *algorithm,
|
||||
EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf);
|
||||
void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx);
|
||||
EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src);
|
||||
const char *EVP_KDF_name(const EVP_KDF *kdf);
|
||||
int EVP_KDF_is_a(const EVP_KDF *kdf, const char *name);
|
||||
const OSSL_PROVIDER *EVP_KDF_provider(const EVP_KDF *kdf);
|
||||
const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx);
|
||||
@ -51,6 +50,9 @@ const OSSL_PARAM *EVP_KDF_settable_ctx_params(const EVP_KDF *kdf);
|
||||
void EVP_KDF_do_all_provided(OPENSSL_CTX *libctx,
|
||||
void (*fn)(EVP_KDF *kdf, void *arg),
|
||||
void *arg);
|
||||
void EVP_KDF_names_do_all(const EVP_KDF *kdf,
|
||||
void (*fn)(const char *name, void *data),
|
||||
void *data);
|
||||
|
||||
# define EVP_KDF_CTRL_SET_PASS 0x01 /* unsigned char *, size_t */
|
||||
# define EVP_KDF_CTRL_SET_SALT 0x02 /* unsigned char *, size_t */
|
||||
|
@ -938,6 +938,7 @@ static const EVP_TEST_METHOD cipher_test_method = {
|
||||
|
||||
typedef struct mac_data_st {
|
||||
/* MAC type in one form or another */
|
||||
char *mac_name;
|
||||
EVP_MAC *mac; /* for mac_test_run_mac */
|
||||
int type; /* for mac_test_run_pkey */
|
||||
/* Algorithm string for this MAC */
|
||||
@ -1021,6 +1022,7 @@ static int mac_test_init(EVP_TEST *t, const char *alg)
|
||||
|
||||
mdat = OPENSSL_zalloc(sizeof(*mdat));
|
||||
mdat->type = type;
|
||||
mdat->mac_name = OPENSSL_strdup(alg);
|
||||
mdat->mac = mac;
|
||||
mdat->controls = sk_OPENSSL_STRING_new_null();
|
||||
t->data = mdat;
|
||||
@ -1038,6 +1040,7 @@ static void mac_test_cleanup(EVP_TEST *t)
|
||||
MAC_DATA *mdat = t->data;
|
||||
|
||||
EVP_MAC_free(mdat->mac);
|
||||
OPENSSL_free(mdat->mac_name);
|
||||
sk_OPENSSL_STRING_pop_free(mdat->controls, openssl_free);
|
||||
OPENSSL_free(mdat->alg);
|
||||
OPENSSL_free(mdat->key);
|
||||
@ -1198,10 +1201,10 @@ static int mac_test_run_mac(EVP_TEST *t)
|
||||
EVP_MAC_settable_ctx_params(expected->mac);
|
||||
|
||||
if (expected->alg == NULL)
|
||||
TEST_info("Trying the EVP_MAC %s test", EVP_MAC_name(expected->mac));
|
||||
TEST_info("Trying the EVP_MAC %s test", expected->mac_name);
|
||||
else
|
||||
TEST_info("Trying the EVP_MAC %s test with %s",
|
||||
EVP_MAC_name(expected->mac), expected->alg);
|
||||
expected->mac_name, expected->alg);
|
||||
|
||||
#ifdef OPENSSL_NO_DES
|
||||
if (expected->alg != NULL && strstr(expected->alg, "DES") != NULL) {
|
||||
|
@ -4718,7 +4718,7 @@ EVP_MAC_CTX_get_params 4834 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_gettable_ctx_params 4835 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_free 4836 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_up_ref 4837 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_name 4838 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_name 4838 3_0_0 NOEXIST::FUNCTION:
|
||||
EVP_MAC_get_params 4839 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_gettable_params 4840 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_provider 4841 3_0_0 EXIST::FUNCTION:
|
||||
@ -4729,7 +4729,7 @@ EVP_KDF_up_ref 4845 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_free 4846 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_fetch 4847 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_CTX_dup 4848 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_name 4849 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_name 4849 3_0_0 NOEXIST::FUNCTION:
|
||||
EVP_KDF_provider 4850 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_get_params 4851 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_CTX_get_params 4852 3_0_0 EXIST::FUNCTION:
|
||||
@ -4836,3 +4836,10 @@ EVP_KDF_is_a 4952 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MD_is_a 4953 3_0_0 EXIST::FUNCTION:
|
||||
EVP_SIGNATURE_is_a 4954 3_0_0 EXIST::FUNCTION:
|
||||
EVP_SIGNATURE_do_all_provided 4955 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MD_names_do_all 4956 3_0_0 EXIST::FUNCTION:
|
||||
EVP_CIPHER_names_do_all 4957 3_0_0 EXIST::FUNCTION:
|
||||
EVP_MAC_names_do_all 4958 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KEYMGMT_names_do_all 4959 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KEYEXCH_names_do_all 4960 3_0_0 EXIST::FUNCTION:
|
||||
EVP_KDF_names_do_all 4961 3_0_0 EXIST::FUNCTION:
|
||||
EVP_SIGNATURE_names_do_all 4962 3_0_0 EXIST::FUNCTION:
|
||||
|
Loading…
Reference in New Issue
Block a user