mirror of
https://github.com/openssl/openssl.git
synced 2025-02-17 14:32:04 +08:00
EVP: Change the output size type of EVP_Q_digest() and EVP_Q_mac()
This makes them more consistent with other new interfaces. Fixes #15839 Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tim Hudson <tjh@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15861)
This commit is contained in:
parent
86ff7cf2a6
commit
006de7670a
@ -630,16 +630,19 @@ int EVP_Digest(const void *data, size_t count,
|
||||
}
|
||||
|
||||
int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, const char *propq,
|
||||
const void *data, size_t count,
|
||||
unsigned char *md, unsigned int *size)
|
||||
const void *data, size_t datalen,
|
||||
unsigned char *md, size_t *mdlen)
|
||||
{
|
||||
EVP_MD *digest = EVP_MD_fetch(libctx, name, propq);
|
||||
unsigned int temp = 0;
|
||||
int ret = 0;
|
||||
|
||||
if (digest != NULL) {
|
||||
ret = EVP_Digest(data, count, md, size, digest, NULL);
|
||||
ret = EVP_Digest(data, datalen, md, &temp, digest, NULL);
|
||||
EVP_MD_free(digest);
|
||||
}
|
||||
if (mdlen != NULL)
|
||||
*mdlen = temp;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -233,16 +233,17 @@ int EVP_MAC_names_do_all(const EVP_MAC *mac,
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq,
|
||||
unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx,
|
||||
const char *name, const char *propq,
|
||||
const char *subalg, const OSSL_PARAM *params,
|
||||
const void *key, size_t keylen,
|
||||
const unsigned char *data, size_t datalen,
|
||||
unsigned char *out, size_t outsize, unsigned int *outlen)
|
||||
unsigned char *out, size_t outsize, size_t *outlen)
|
||||
{
|
||||
EVP_MAC *mac = EVP_MAC_fetch(libctx, name, propq);
|
||||
OSSL_PARAM subalg_param[] = { OSSL_PARAM_END, OSSL_PARAM_END };
|
||||
EVP_MAC_CTX *ctx = NULL;
|
||||
size_t len;
|
||||
size_t len = 0;
|
||||
unsigned char *res = NULL;
|
||||
|
||||
if (outlen != NULL)
|
||||
@ -286,7 +287,7 @@ unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *pro
|
||||
}
|
||||
res = out;
|
||||
if (res != NULL && outlen != NULL)
|
||||
*outlen = (unsigned int)len;
|
||||
*outlen = len;
|
||||
}
|
||||
|
||||
err:
|
||||
|
@ -52,8 +52,8 @@ EVP_MD_CTX_type, EVP_MD_CTX_pkey_ctx, EVP_MD_CTX_md_data
|
||||
int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags);
|
||||
|
||||
int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name, const char *propq,
|
||||
const void *data, size_t count,
|
||||
unsigned char *md, unsigned int *size);
|
||||
const void *data, size_t datalen,
|
||||
unsigned char *md, size_t *mdlen);
|
||||
int EVP_Digest(const void *data, size_t count, unsigned char *md,
|
||||
unsigned int *size, const EVP_MD *type, ENGINE *impl);
|
||||
int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type,
|
||||
@ -234,9 +234,10 @@ as a parameter descriptor.
|
||||
Sets, clears and tests I<ctx> flags. See L</FLAGS> below for more information.
|
||||
|
||||
=item EVP_Q_digest() is a quick one-shot digest function.
|
||||
It hashes I<count> bytes of data at I<data> using the digest algorithm I<name>,
|
||||
which is fetched using the optional I<libctx> and I<propq> parameters.
|
||||
The digest value is placed in I<md> and its length is written at I<size>
|
||||
|
||||
It hashes I<datalen> bytes of data at I<data> using the digest algorithm
|
||||
I<name>, which is fetched using the optional I<libctx> and I<propq> parameters.
|
||||
The digest value is placed in I<md> and its length is written at I<mdlen>
|
||||
if the pointer is not NULL. At most B<EVP_MAX_MD_SIZE> bytes will be written.
|
||||
|
||||
=item EVP_Digest()
|
||||
|
@ -46,7 +46,7 @@ EVP_MAC_do_all_provided - EVP MAC routines
|
||||
const char *subalg, const OSSL_PARAM *params,
|
||||
const void *key, size_t keylen,
|
||||
const unsigned char *data, size_t datalen,
|
||||
unsigned char *out, size_t outsize, unsigned int *outlen);
|
||||
unsigned char *out, size_t outsize, size_t *outlen);
|
||||
int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen,
|
||||
const OSSL_PARAM params[]);
|
||||
int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen);
|
||||
|
@ -715,8 +715,8 @@ __owur int EVP_Digest(const void *data, size_t count,
|
||||
unsigned char *md, unsigned int *size,
|
||||
const EVP_MD *type, ENGINE *impl);
|
||||
__owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name,
|
||||
const char *propq, const void *data, size_t count,
|
||||
unsigned char *md, unsigned int *size);
|
||||
const char *propq, const void *data, size_t datalen,
|
||||
unsigned char *md, size_t *mdlen);
|
||||
|
||||
__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in);
|
||||
__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
|
||||
@ -1216,7 +1216,7 @@ unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *pro
|
||||
const char *subalg, const OSSL_PARAM *params,
|
||||
const void *key, size_t keylen,
|
||||
const unsigned char *data, size_t datalen,
|
||||
unsigned char *out, size_t outsize, unsigned int *outlen);
|
||||
unsigned char *out, size_t outsize, size_t *outlen);
|
||||
int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen,
|
||||
const OSSL_PARAM params[]);
|
||||
int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen);
|
||||
|
Loading…
Reference in New Issue
Block a user