mirror of https://github.com/openssl/openssl.git
test: add EVP_Q_digest tests to evp_test
Fixes #15837 Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com> Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com> (Merged from https://github.com/openssl/openssl/pull/15888)
This commit is contained in:
parent
e86b2e78a4
commit
4d7c39f40f
|
|
@ -399,9 +399,12 @@ static int digest_update_fn(void *ctx, const unsigned char *buf, size_t buflen)
|
||||||
static int digest_test_run(EVP_TEST *t)
|
static int digest_test_run(EVP_TEST *t)
|
||||||
{
|
{
|
||||||
DIGEST_DATA *expected = t->data;
|
DIGEST_DATA *expected = t->data;
|
||||||
|
EVP_TEST_BUFFER *inbuf;
|
||||||
EVP_MD_CTX *mctx;
|
EVP_MD_CTX *mctx;
|
||||||
unsigned char *got = NULL;
|
unsigned char *got = NULL;
|
||||||
unsigned int got_len;
|
unsigned int got_len;
|
||||||
|
size_t size;
|
||||||
|
int xof = 0;
|
||||||
OSSL_PARAM params[2];
|
OSSL_PARAM params[2];
|
||||||
|
|
||||||
t->err = "TEST_FAILURE";
|
t->err = "TEST_FAILURE";
|
||||||
|
|
@ -431,7 +434,8 @@ static int digest_test_run(EVP_TEST *t)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EVP_MD_get_flags(expected->digest) & EVP_MD_FLAG_XOF) {
|
xof = (EVP_MD_get_flags(expected->digest) & EVP_MD_FLAG_XOF) != 0;
|
||||||
|
if (xof) {
|
||||||
EVP_MD_CTX *mctx_cpy;
|
EVP_MD_CTX *mctx_cpy;
|
||||||
char dont[] = "touch";
|
char dont[] = "touch";
|
||||||
|
|
||||||
|
|
@ -476,6 +480,24 @@ static int digest_test_run(EVP_TEST *t)
|
||||||
|
|
||||||
t->err = NULL;
|
t->err = NULL;
|
||||||
|
|
||||||
|
/* Test the EVP_Q_ interface as well */
|
||||||
|
if (sk_EVP_TEST_BUFFER_num(expected->input) == 1
|
||||||
|
&& !xof
|
||||||
|
/* This should never fail but we need the returned pointer now */
|
||||||
|
&& !TEST_ptr(inbuf = sk_EVP_TEST_BUFFER_value(expected->input, 0))
|
||||||
|
&& !inbuf->count_set) {
|
||||||
|
OPENSSL_cleanse(got, sizeof(got));
|
||||||
|
if (!TEST_true(EVP_Q_digest(libctx,
|
||||||
|
EVP_MD_get0_name(expected->fetched_digest),
|
||||||
|
NULL, inbuf->buf, inbuf->buflen,
|
||||||
|
got, &size))
|
||||||
|
|| !TEST_mem_eq(got, size,
|
||||||
|
expected->output, expected->output_len)) {
|
||||||
|
t->err = "EVP_Q_digest failed";
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err:
|
err:
|
||||||
OPENSSL_free(got);
|
OPENSSL_free(got);
|
||||||
EVP_MD_CTX_free(mctx);
|
EVP_MD_CTX_free(mctx);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue