test/evp_test.c: improve output in case of errors.

Recently introduced TEST_* macros print variables' symbolic names.
In order to make error output more readable rename some variables.

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Andy Polyakov 2017-05-25 13:48:32 +02:00
parent 14bb100b6c
commit e3d378bcf1

View file

@ -206,14 +206,6 @@ static int evp_test_buffer_do(STACK_OF(EVP_TEST_BUFFER) *sk,
return 1;
}
static int compare_mem(unsigned char *expected, size_t expected_len,
unsigned char *got, size_t got_len)
{
if (!TEST_mem_eq(expected, expected_len, got, got_len))
return 0;
return 1;
}
/*
* Unescape some sequences in string literals (only \n for now).
* Return an allocated buffer, set |out_len|. If |input_len|
@ -374,33 +366,33 @@ static int digest_update_fn(void *ctx, const unsigned char *buf, size_t buflen)
static int digest_test_run(EVP_TEST *t)
{
DIGEST_DATA *mdata = t->data;
DIGEST_DATA *expected = t->data;
EVP_MD_CTX *mctx;
unsigned char md[EVP_MAX_MD_SIZE];
unsigned int md_len;
unsigned char got[EVP_MAX_MD_SIZE];
unsigned int got_len;
t->err = "TEST_FAILURE";
if (!TEST_ptr(mctx = EVP_MD_CTX_new()))
goto err;
if (!EVP_DigestInit_ex(mctx, mdata->digest, NULL)) {
if (!EVP_DigestInit_ex(mctx, expected->digest, NULL)) {
t->err = "DIGESTINIT_ERROR";
goto err;
}
if (!evp_test_buffer_do(mdata->input, digest_update_fn, mctx)) {
if (!evp_test_buffer_do(expected->input, digest_update_fn, mctx)) {
t->err = "DIGESTUPDATE_ERROR";
goto err;
}
if (!EVP_DigestFinal(mctx, md, &md_len)) {
if (!EVP_DigestFinal(mctx, got, &got_len)) {
t->err = "DIGESTFINAL_ERROR";
goto err;
}
if (md_len != mdata->output_len) {
if (!TEST_int_eq(expected->output_len, got_len)) {
t->err = "DIGEST_LENGTH_MISMATCH";
goto err;
}
if (!compare_mem(mdata->output, mdata->output_len, md, md_len)) {
if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) {
t->err = "DIGEST_MISMATCH";
goto err;
}
@ -522,8 +514,8 @@ static int cipher_test_parse(EVP_TEST *t, const char *keyword,
static int cipher_test_enc(EVP_TEST *t, int enc,
size_t out_misalign, size_t inp_misalign, int frag)
{
CIPHER_DATA *cdat = t->data;
unsigned char *in, *out, *tmp = NULL;
CIPHER_DATA *expected = t->data;
unsigned char *in, *expected_out, *tmp = NULL;
size_t in_len, out_len, donelen = 0;
int ok = 0, tmplen, chunklen, tmpflen;
EVP_CIPHER_CTX *ctx = NULL;
@ -533,15 +525,15 @@ static int cipher_test_enc(EVP_TEST *t, int enc,
goto err;
EVP_CIPHER_CTX_set_flags(ctx, EVP_CIPHER_CTX_FLAG_WRAP_ALLOW);
if (enc) {
in = cdat->plaintext;
in_len = cdat->plaintext_len;
out = cdat->ciphertext;
out_len = cdat->ciphertext_len;
in = expected->plaintext;
in_len = expected->plaintext_len;
expected_out = expected->ciphertext;
out_len = expected->ciphertext_len;
} else {
in = cdat->ciphertext;
in_len = cdat->ciphertext_len;
out = cdat->plaintext;
out_len = cdat->plaintext_len;
in = expected->ciphertext;
in_len = expected->ciphertext_len;
expected_out = expected->plaintext;
out_len = expected->plaintext_len;
}
if (inp_misalign == (size_t)-1) {
/*
@ -568,89 +560,90 @@ static int cipher_test_enc(EVP_TEST *t, int enc,
in = memcpy(tmp + out_misalign + in_len + 2 * EVP_MAX_BLOCK_LENGTH +
inp_misalign, in, in_len);
}
if (!EVP_CipherInit_ex(ctx, cdat->cipher, NULL, NULL, NULL, enc)) {
if (!EVP_CipherInit_ex(ctx, expected->cipher, NULL, NULL, NULL, enc)) {
t->err = "CIPHERINIT_ERROR";
goto err;
}
if (cdat->iv) {
if (cdat->aead) {
if (expected->iv) {
if (expected->aead) {
if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_IVLEN,
cdat->iv_len, 0)) {
expected->iv_len, 0)) {
t->err = "INVALID_IV_LENGTH";
goto err;
}
} else if (cdat->iv_len != (size_t)EVP_CIPHER_CTX_iv_length(ctx)) {
} else if (expected->iv_len != (size_t)EVP_CIPHER_CTX_iv_length(ctx)) {
t->err = "INVALID_IV_LENGTH";
goto err;
}
}
if (cdat->aead) {
if (expected->aead) {
unsigned char *tag;
/*
* If encrypting or OCB just set tag length initially, otherwise
* set tag length and value.
*/
if (enc || cdat->aead == EVP_CIPH_OCB_MODE) {
if (enc || expected->aead == EVP_CIPH_OCB_MODE) {
t->err = "TAG_LENGTH_SET_ERROR";
tag = NULL;
} else {
t->err = "TAG_SET_ERROR";
tag = cdat->tag;
tag = expected->tag;
}
if (tag || cdat->aead != EVP_CIPH_GCM_MODE) {
if (tag || expected->aead != EVP_CIPH_GCM_MODE) {
if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
cdat->tag_len, tag))
expected->tag_len, tag))
goto err;
}
}
if (!EVP_CIPHER_CTX_set_key_length(ctx, cdat->key_len)) {
if (!EVP_CIPHER_CTX_set_key_length(ctx, expected->key_len)) {
t->err = "INVALID_KEY_LENGTH";
goto err;
}
if (!EVP_CipherInit_ex(ctx, NULL, NULL, cdat->key, cdat->iv, -1)) {
if (!EVP_CipherInit_ex(ctx, NULL, NULL, expected->key, expected->iv, -1)) {
t->err = "KEY_SET_ERROR";
goto err;
}
if (!enc && cdat->aead == EVP_CIPH_OCB_MODE) {
if (!enc && expected->aead == EVP_CIPH_OCB_MODE) {
if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG,
cdat->tag_len, cdat->tag)) {
expected->tag_len, expected->tag)) {
t->err = "TAG_SET_ERROR";
goto err;
}
}
if (cdat->aead == EVP_CIPH_CCM_MODE) {
if (expected->aead == EVP_CIPH_CCM_MODE) {
if (!EVP_CipherUpdate(ctx, NULL, &tmplen, NULL, out_len)) {
t->err = "CCM_PLAINTEXT_LENGTH_SET_ERROR";
goto err;
}
}
if (cdat->aad) {
if (expected->aad) {
t->err = "AAD_SET_ERROR";
if (!frag) {
if (!EVP_CipherUpdate(ctx, NULL, &chunklen, cdat->aad,
cdat->aad_len))
if (!EVP_CipherUpdate(ctx, NULL, &chunklen, expected->aad,
expected->aad_len))
goto err;
} else {
/*
* Supply the AAD in chunks less than the block size where possible
*/
if (cdat->aad_len > 0) {
if (!EVP_CipherUpdate(ctx, NULL, &chunklen, cdat->aad, 1))
if (expected->aad_len > 0) {
if (!EVP_CipherUpdate(ctx, NULL, &chunklen, expected->aad, 1))
goto err;
donelen++;
}
if (cdat->aad_len > 2) {
if (!EVP_CipherUpdate(ctx, NULL, &chunklen, cdat->aad + donelen,
cdat->aad_len - 2))
if (expected->aad_len > 2) {
if (!EVP_CipherUpdate(ctx, NULL, &chunklen,
expected->aad + donelen,
expected->aad_len - 2))
goto err;
donelen += cdat->aad_len - 2;
donelen += expected->aad_len - 2;
}
if (cdat->aad_len > 1
if (expected->aad_len > 1
&& !EVP_CipherUpdate(ctx, NULL, &chunklen,
cdat->aad + donelen, 1))
expected->aad + donelen, 1))
goto err;
}
}
@ -689,23 +682,25 @@ static int cipher_test_enc(EVP_TEST *t, int enc,
t->err = "CIPHERFINAL_ERROR";
goto err;
}
if (!compare_mem(out, out_len, tmp + out_misalign, tmplen + tmpflen)) {
if (!TEST_mem_eq(expected_out, out_len,
tmp + out_misalign, tmplen + tmpflen)) {
t->err = "VALUE_MISMATCH";
goto err;
}
if (enc && cdat->aead) {
if (enc && expected->aead) {
unsigned char rtag[16];
if (cdat->tag_len > sizeof(rtag)) {
if (!TEST_size_t_le(expected->tag_len, sizeof(rtag))) {
t->err = "TAG_LENGTH_INTERNAL_ERROR";
goto err;
}
if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG,
cdat->tag_len, rtag)) {
expected->tag_len, rtag)) {
t->err = "TAG_RETRIEVE_ERROR";
goto err;
}
if (!compare_mem(cdat->tag, cdat->tag_len, rtag, cdat->tag_len)) {
if (!TEST_mem_eq(expected->tag, expected->tag_len,
rtag, expected->tag_len)) {
t->err = "TAG_VALUE_MISMATCH";
goto err;
}
@ -783,7 +778,7 @@ static int cipher_test_run(EVP_TEST *t)
*/
if (cdat->aead == EVP_CIPH_CCM_MODE
|| EVP_CIPHER_mode(cdat->cipher) == EVP_CIPH_XTS_MODE
|| EVP_CIPHER_mode(cdat->cipher) == EVP_CIPH_WRAP_MODE)
|| EVP_CIPHER_mode(cdat->cipher) == EVP_CIPH_WRAP_MODE)
break;
out_misalign = 0;
frag++;
@ -894,23 +889,23 @@ static int mac_test_parse(EVP_TEST *t,
static int mac_test_run(EVP_TEST *t)
{
MAC_DATA *mdata = t->data;
MAC_DATA *expected = t->data;
EVP_MD_CTX *mctx = NULL;
EVP_PKEY_CTX *pctx = NULL, *genctx = NULL;
EVP_PKEY *key = NULL;
const EVP_MD *md = NULL;
unsigned char *mac = NULL;
size_t mac_len;
unsigned char *got = NULL;
size_t got_len;
#ifdef OPENSSL_NO_DES
if (mdata->alg != NULL && strstr(mdata->alg, "DES") != NULL) {
if (expected->alg != NULL && strstr(expected->alg, "DES") != NULL) {
/* Skip DES */
t->err = NULL;
goto err;
}
#endif
if (!TEST_ptr(genctx = EVP_PKEY_CTX_new_id(mdata->type, NULL))) {
if (!TEST_ptr(genctx = EVP_PKEY_CTX_new_id(expected->type, NULL))) {
t->err = "MAC_PKEY_CTX_ERROR";
goto err;
}
@ -919,13 +914,14 @@ static int mac_test_run(EVP_TEST *t)
t->err = "MAC_KEYGEN_INIT_ERROR";
goto err;
}
if (mdata->type == EVP_PKEY_CMAC
&& EVP_PKEY_CTX_ctrl_str(genctx, "cipher", mdata->alg) <= 0) {
if (expected->type == EVP_PKEY_CMAC
&& EVP_PKEY_CTX_ctrl_str(genctx, "cipher", expected->alg) <= 0) {
t->err = "MAC_ALGORITHM_SET_ERROR";
goto err;
}
if (EVP_PKEY_CTX_set_mac_key(genctx, mdata->key, mdata->key_len) <= 0) {
if (EVP_PKEY_CTX_set_mac_key(genctx, expected->key,
expected->key_len) <= 0) {
t->err = "MAC_KEY_SET_ERROR";
goto err;
}
@ -934,8 +930,8 @@ static int mac_test_run(EVP_TEST *t)
t->err = "MAC_KEY_GENERATE_ERROR";
goto err;
}
if (mdata->type == EVP_PKEY_HMAC) {
if (!TEST_ptr(md = EVP_get_digestbyname(mdata->alg))) {
if (expected->type == EVP_PKEY_HMAC) {
if (!TEST_ptr(md = EVP_get_digestbyname(expected->alg))) {
t->err = "MAC_ALGORITHM_SET_ERROR";
goto err;
}
@ -949,27 +945,28 @@ static int mac_test_run(EVP_TEST *t)
goto err;
}
if (!EVP_DigestSignUpdate(mctx, mdata->input, mdata->input_len)) {
if (!EVP_DigestSignUpdate(mctx, expected->input, expected->input_len)) {
t->err = "DIGESTSIGNUPDATE_ERROR";
goto err;
}
if (!EVP_DigestSignFinal(mctx, NULL, &mac_len)) {
if (!EVP_DigestSignFinal(mctx, NULL, &got_len)) {
t->err = "DIGESTSIGNFINAL_LENGTH_ERROR";
goto err;
}
if (!TEST_ptr(mac = OPENSSL_malloc(mac_len))) {
if (!TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "TEST_FAILURE";
goto err;
}
if (!EVP_DigestSignFinal(mctx, mac, &mac_len)
|| !compare_mem(mdata->output, mdata->output_len, mac, mac_len)) {
if (!EVP_DigestSignFinal(mctx, got, &got_len)
|| !TEST_mem_eq(expected->output, expected->output_len,
got, got_len)) {
t->err = "TEST_MAC_ERR";
goto err;
}
t->err = NULL;
err:
EVP_MD_CTX_free(mctx);
OPENSSL_free(mac);
OPENSSL_free(got);
EVP_PKEY_CTX_free(genctx);
EVP_PKEY_free(key);
return 1;
@ -1101,28 +1098,28 @@ static int pkey_test_parse(EVP_TEST *t,
static int pkey_test_run(EVP_TEST *t)
{
PKEY_DATA *kdata = t->data;
unsigned char *out = NULL;
size_t out_len;
PKEY_DATA *expected = t->data;
unsigned char *got = NULL;
size_t got_len;
if (kdata->keyop(kdata->ctx, NULL, &out_len, kdata->input,
kdata->input_len) <= 0
|| !TEST_ptr(out = OPENSSL_malloc(out_len))) {
if (expected->keyop(expected->ctx, NULL, &got_len,
expected->input, expected->input_len) <= 0
|| !TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "KEYOP_LENGTH_ERROR";
goto err;
}
if (kdata->keyop(kdata->ctx, out,
&out_len, kdata->input, kdata->input_len) <= 0) {
if (expected->keyop(expected->ctx, got, &got_len,
expected->input, expected->input_len) <= 0) {
t->err = "KEYOP_ERROR";
goto err;
}
if (!compare_mem(kdata->output, kdata->output_len, out, out_len)) {
if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) {
t->err = "KEYOP_MISMATCH";
goto err;
}
t->err = NULL;
err:
OPENSSL_free(out);
OPENSSL_free(got);
return 1;
}
@ -1218,27 +1215,27 @@ static int pderive_test_parse(EVP_TEST *t,
static int pderive_test_run(EVP_TEST *t)
{
PKEY_DATA *kdata = t->data;
unsigned char *out = NULL;
size_t out_len;
PKEY_DATA *expected = t->data;
unsigned char *got = NULL;
size_t got_len;
out_len = kdata->output_len;
if (!TEST_ptr(out = OPENSSL_malloc(out_len))) {
got_len = expected->output_len;
if (!TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "DERIVE_ERROR";
goto err;
}
if (EVP_PKEY_derive(kdata->ctx, out, &out_len) <= 0) {
if (EVP_PKEY_derive(expected->ctx, got, &got_len) <= 0) {
t->err = "DERIVE_ERROR";
goto err;
}
if (!compare_mem(kdata->output, kdata->output_len, out, out_len)) {
if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) {
t->err = "SHARED_SECRET_MISMATCH";
goto err;
}
t->err = NULL;
err:
OPENSSL_free(out);
OPENSSL_free(got);
return 1;
}
@ -1415,41 +1412,42 @@ static int pbe_test_parse(EVP_TEST *t,
static int pbe_test_run(EVP_TEST *t)
{
PBE_DATA *pdata = t->data;
PBE_DATA *expected = t->data;
unsigned char *key;
if (!TEST_ptr(key = OPENSSL_malloc(pdata->key_len))) {
if (!TEST_ptr(key = OPENSSL_malloc(expected->key_len))) {
t->err = "INTERNAL_ERROR";
goto err;
}
if (pdata->pbe_type == PBE_TYPE_PBKDF2) {
if (PKCS5_PBKDF2_HMAC((char *)pdata->pass, pdata->pass_len,
pdata->salt, pdata->salt_len,
pdata->iter, pdata->md,
pdata->key_len, key) == 0) {
if (expected->pbe_type == PBE_TYPE_PBKDF2) {
if (PKCS5_PBKDF2_HMAC((char *)expected->pass, expected->pass_len,
expected->salt, expected->salt_len,
expected->iter, expected->md,
expected->key_len, key) == 0) {
t->err = "PBKDF2_ERROR";
goto err;
}
#ifndef OPENSSL_NO_SCRYPT
} else if (pdata->pbe_type == PBE_TYPE_SCRYPT) {
if (EVP_PBE_scrypt((const char *)pdata->pass, pdata->pass_len,
pdata->salt, pdata->salt_len,
pdata->N, pdata->r, pdata->p, pdata->maxmem,
key, pdata->key_len) == 0) {
} else if (expected->pbe_type == PBE_TYPE_SCRYPT) {
if (EVP_PBE_scrypt((const char *)expected->pass, expected->pass_len,
expected->salt, expected->salt_len, expected->N,
expected->r, expected->p, expected->maxmem,
key, expected->key_len) == 0) {
t->err = "SCRYPT_ERROR";
goto err;
}
#endif
} else if (pdata->pbe_type == PBE_TYPE_PKCS12) {
if (PKCS12_key_gen_uni(pdata->pass, pdata->pass_len,
pdata->salt, pdata->salt_len,
pdata->id, pdata->iter, pdata->key_len,
key, pdata->md) == 0) {
} else if (expected->pbe_type == PBE_TYPE_PKCS12) {
if (PKCS12_key_gen_uni(expected->pass, expected->pass_len,
expected->salt, expected->salt_len,
expected->id, expected->iter, expected->key_len,
key, expected->md) == 0) {
t->err = "PKCS12_ERROR";
goto err;
}
}
if (!compare_mem(pdata->key, pdata->key_len, key, pdata->key_len)) {
if (!TEST_mem_eq(expected->key, expected->key_len,
key, expected->key_len)) {
t->err = "KEY_MISMATCH";
goto err;
}
@ -1535,7 +1533,7 @@ static int encode_test_parse(EVP_TEST *t,
static int encode_test_run(EVP_TEST *t)
{
ENCODE_DATA *edata = t->data;
ENCODE_DATA *expected = t->data;
unsigned char *encode_out = NULL, *decode_out = NULL;
int output_len, chunk_len;
EVP_ENCODE_CTX *decode_ctx;
@ -1545,17 +1543,17 @@ static int encode_test_run(EVP_TEST *t)
goto err;
}
if (edata->encoding == BASE64_CANONICAL_ENCODING) {
if (expected->encoding == BASE64_CANONICAL_ENCODING) {
EVP_ENCODE_CTX *encode_ctx;
if (!TEST_ptr(encode_ctx = EVP_ENCODE_CTX_new())
|| !TEST_ptr(encode_out =
OPENSSL_malloc(EVP_ENCODE_LENGTH(edata->input_len))))
OPENSSL_malloc(EVP_ENCODE_LENGTH(expected->input_len))))
goto err;
EVP_EncodeInit(encode_ctx);
EVP_EncodeUpdate(encode_ctx, encode_out, &chunk_len,
edata->input, edata->input_len);
expected->input, expected->input_len);
output_len = chunk_len;
EVP_EncodeFinal(encode_ctx, encode_out + chunk_len, &chunk_len);
@ -1563,7 +1561,7 @@ static int encode_test_run(EVP_TEST *t)
EVP_ENCODE_CTX_free(encode_ctx);
if (!compare_mem(edata->output, edata->output_len,
if (!TEST_mem_eq(expected->output, expected->output_len,
encode_out, output_len)) {
t->err = "BAD_ENCODING";
goto err;
@ -1571,12 +1569,12 @@ static int encode_test_run(EVP_TEST *t)
}
if (!TEST_ptr(decode_out =
OPENSSL_malloc(EVP_DECODE_LENGTH(edata->output_len))))
OPENSSL_malloc(EVP_DECODE_LENGTH(expected->output_len))))
goto err;
EVP_DecodeInit(decode_ctx);
if (EVP_DecodeUpdate(decode_ctx, decode_out, &chunk_len, edata->output,
edata->output_len) < 0) {
if (EVP_DecodeUpdate(decode_ctx, decode_out, &chunk_len, expected->output,
expected->output_len) < 0) {
t->err = "DECODE_ERROR";
goto err;
}
@ -1588,8 +1586,8 @@ static int encode_test_run(EVP_TEST *t)
}
output_len += chunk_len;
if (edata->encoding != BASE64_INVALID_ENCODING
&& !compare_mem(edata->input, edata->input_len,
if (expected->encoding != BASE64_INVALID_ENCODING
&& !TEST_mem_eq(expected->input, expected->input_len,
decode_out, output_len)) {
t->err = "BAD_DECODING";
goto err;
@ -1663,26 +1661,26 @@ static int kdf_test_parse(EVP_TEST *t,
static int kdf_test_run(EVP_TEST *t)
{
KDF_DATA *kdata = t->data;
unsigned char *out = NULL;
size_t out_len = kdata->output_len;
KDF_DATA *expected = t->data;
unsigned char *got = NULL;
size_t got_len = expected->output_len;
if (!TEST_ptr(out = OPENSSL_malloc(out_len))) {
if (!TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "INTERNAL_ERROR";
goto err;
}
if (EVP_PKEY_derive(kdata->ctx, out, &out_len) <= 0) {
if (EVP_PKEY_derive(expected->ctx, got, &got_len) <= 0) {
t->err = "KDF_DERIVE_ERROR";
goto err;
}
if (!compare_mem(kdata->output, kdata->output_len, out, out_len)) {
if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) {
t->err = "KDF_MISMATCH";
goto err;
}
t->err = NULL;
err:
OPENSSL_free(out);
OPENSSL_free(got);
return 1;
}
@ -1934,34 +1932,35 @@ static int digestsign_update_fn(void *ctx, const unsigned char *buf,
static int digestsign_test_run(EVP_TEST *t)
{
DIGESTSIGN_DATA *mdata = t->data;
unsigned char *buf = NULL;
size_t buflen;
DIGESTSIGN_DATA *expected = t->data;
unsigned char *got = NULL;
size_t got_len;
if (!evp_test_buffer_do(mdata->input, digestsign_update_fn, mdata->ctx)) {
if (!evp_test_buffer_do(expected->input, digestsign_update_fn,
expected->ctx)) {
t->err = "DIGESTUPDATE_ERROR";
goto err;
}
if (!EVP_DigestSignFinal(mdata->ctx, NULL, &buflen)) {
if (!EVP_DigestSignFinal(expected->ctx, NULL, &got_len)) {
t->err = "DIGESTSIGNFINAL_LENGTH_ERROR";
goto err;
}
if (!TEST_ptr(buf = OPENSSL_malloc(buflen))) {
if (!TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "MALLOC_FAILURE";
goto err;
}
if (!EVP_DigestSignFinal(mdata->ctx, buf, &buflen)) {
if (!EVP_DigestSignFinal(expected->ctx, got, &got_len)) {
t->err = "DIGESTSIGNFINAL_ERROR";
goto err;
}
if (!compare_mem(mdata->output, mdata->output_len, buf, buflen)) {
if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) {
t->err = "SIGNATURE_MISMATCH";
goto err;
}
err:
OPENSSL_free(buf);
OPENSSL_free(got);
return 1;
}
@ -2014,31 +2013,31 @@ static int oneshot_digestsign_test_init(EVP_TEST *t, const char *alg)
static int oneshot_digestsign_test_run(EVP_TEST *t)
{
DIGESTSIGN_DATA *mdata = t->data;
unsigned char *buf = NULL;
size_t buflen;
DIGESTSIGN_DATA *expected = t->data;
unsigned char *got = NULL;
size_t got_len;
if (!EVP_DigestSign(mdata->ctx, NULL, &buflen, mdata->osin,
mdata->osin_len)) {
if (!EVP_DigestSign(expected->ctx, NULL, &got_len,
expected->osin, expected->osin_len)) {
t->err = "DIGESTSIGN_LENGTH_ERROR";
goto err;
}
if (!TEST_ptr(buf = OPENSSL_malloc(buflen))) {
if (!TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "MALLOC_FAILURE";
goto err;
}
if (!EVP_DigestSign(mdata->ctx, buf, &buflen, mdata->osin,
mdata->osin_len)) {
if (!EVP_DigestSign(expected->ctx, got, &got_len,
expected->osin, expected->osin_len)) {
t->err = "DIGESTSIGN_ERROR";
goto err;
}
if (!compare_mem(mdata->output, mdata->output_len, buf, buflen)) {
if (!TEST_mem_eq(expected->output, expected->output_len, got, got_len)) {
t->err = "SIGNATURE_MISMATCH";
goto err;
}
err:
OPENSSL_free(buf);
OPENSSL_free(got);
return 1;
}