The branch master has been updated via 0f7a4ca5d6eba03d0bcd18bcc0c6705b8dd8f0b0 (commit) via 4d7c39f40f89e0920d0a60e6cf5bf4f346bef757 (commit) from e86b2e78a4b7b618824c4e5cdf7f5d32feacd8b6 (commit)
- Log ----------------------------------------------------------------- commit 0f7a4ca5d6eba03d0bcd18bcc0c6705b8dd8f0b0 Author: Pauli <pa...@openssl.org> Date: Thu Jun 24 11:47:48 2021 +1000 test: add EVP_Q_mac tests to evp_test Fixes #15837 Reviewed-by: David von Oheimb <david.von.ohe...@siemens.com> Reviewed-by: Nicola Tuveri <nic....@gmail.com> (Merged from https://github.com/openssl/openssl/pull/15888) commit 4d7c39f40f89e0920d0a60e6cf5bf4f346bef757 Author: Pauli <pa...@openssl.org> Date: Thu Jun 24 11:32:50 2021 +1000 test: add EVP_Q_digest tests to evp_test Fixes #15837 Reviewed-by: David von Oheimb <david.von.ohe...@siemens.com> Reviewed-by: Nicola Tuveri <nic....@gmail.com> (Merged from https://github.com/openssl/openssl/pull/15888) ----------------------------------------------------------------------- Summary of changes: test/evp_test.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/test/evp_test.c b/test/evp_test.c index d8ddf27eaf..2310fb7907 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -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) { DIGEST_DATA *expected = t->data; + EVP_TEST_BUFFER *inbuf; EVP_MD_CTX *mctx; unsigned char *got = NULL; unsigned int got_len; + size_t size = 0; + int xof = 0; OSSL_PARAM params[2]; t->err = "TEST_FAILURE"; @@ -431,7 +434,8 @@ static int digest_test_run(EVP_TEST *t) 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; char dont[] = "touch"; @@ -476,6 +480,24 @@ static int digest_test_run(EVP_TEST *t) t->err = NULL; + /* Test the EVP_Q_digest 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: OPENSSL_free(got); EVP_MD_CTX_free(mctx); @@ -1365,13 +1387,14 @@ static int mac_test_run_mac(EVP_TEST *t) MAC_DATA *expected = t->data; EVP_MAC_CTX *ctx = NULL; unsigned char *got = NULL; - size_t got_len; + size_t got_len = 0, size = 0; int i, block_size = -1, output_size = -1; OSSL_PARAM params[21], sizes[3], *psizes = sizes; size_t params_n = 0; size_t params_n_allocstart = 0; const OSSL_PARAM *defined_params = EVP_MAC_settable_ctx_params(expected->mac); + int xof; if (expected->alg == NULL) TEST_info("Trying the EVP_MAC %s test", expected->mac_name); @@ -1486,7 +1509,8 @@ static int mac_test_run_mac(EVP_TEST *t) t->err = "MAC_UPDATE_ERROR"; goto err; } - if (expected->xof) { + xof = expected->xof; + if (xof) { if (!TEST_ptr(got = OPENSSL_malloc(expected->output_len))) { t->err = "TEST_FAILURE"; goto err; @@ -1516,6 +1540,21 @@ static int mac_test_run_mac(EVP_TEST *t) } } t->err = NULL; + + /* Test the EVP_Q_mac interface as well */ + if (!xof) { + OPENSSL_cleanse(got, sizeof(got)); + if (!TEST_true(EVP_Q_mac(libctx, expected->mac_name, NULL, + expected->alg, params, + expected->key, expected->key_len, + expected->input, expected->input_len, + got, got_len, &size)) + || !TEST_mem_eq(got, size, + expected->output, expected->output_len)) { + t->err = "EVP_Q_mac failed"; + goto err; + } + } err: while (params_n-- > params_n_allocstart) { OPENSSL_free(params[params_n].data);