Skip to content

Commit

Permalink
Copy RSA-PSS saltlen in EVP_PKEY_CTX_dup.
Browse files Browse the repository at this point in the history
pkey_rsa_copy was missing a field. Test this by repeating the operation
through an EVP_PKEY_CTX_dup copy in evp_test.

Reviewed-by: Matt Caswell <[email protected]>
(Merged from openssl#8759)
  • Loading branch information
davidben committed Apr 26, 2019
1 parent 5ee08f4 commit d7fcf1f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
1 change: 1 addition & 0 deletions crypto/rsa/rsa_pmeth.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ static int pkey_rsa_copy(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src)
dctx->pad_mode = sctx->pad_mode;
dctx->md = sctx->md;
dctx->mgf1md = sctx->mgf1md;
dctx->saltlen = sctx->saltlen;
if (sctx->oaep_label) {
OPENSSL_free(dctx->oaep_label);
dctx->oaep_label = OPENSSL_memdup(sctx->oaep_label, sctx->oaep_labellen);
Expand Down
26 changes: 26 additions & 0 deletions test/evp_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -1378,6 +1378,7 @@ static int pkey_test_run(EVP_TEST *t)
PKEY_DATA *expected = t->data;
unsigned char *got = NULL;
size_t got_len;
EVP_PKEY_CTX *copy = NULL;

if (expected->keyop(expected->ctx, NULL, &got_len,
expected->input, expected->input_len) <= 0
Expand All @@ -1396,8 +1397,33 @@ static int pkey_test_run(EVP_TEST *t)
goto err;

t->err = NULL;
OPENSSL_free(got);
got = NULL;

/* Repeat the test on a copy. */
if (!TEST_ptr(copy = EVP_PKEY_CTX_dup(expected->ctx))) {
t->err = "INTERNAL_ERROR";
goto err;
}
if (expected->keyop(copy, NULL, &got_len, expected->input,
expected->input_len) <= 0
|| !TEST_ptr(got = OPENSSL_malloc(got_len))) {
t->err = "KEYOP_LENGTH_ERROR";
goto err;
}
if (expected->keyop(copy, got, &got_len, expected->input,
expected->input_len) <= 0) {
t->err = "KEYOP_ERROR";
goto err;
}
if (!memory_err_compare(t, "KEYOP_MISMATCH",
expected->output, expected->output_len,
got, got_len))
goto err;

err:
OPENSSL_free(got);
EVP_PKEY_CTX_free(copy);
return 1;
}

Expand Down

0 comments on commit d7fcf1f

Please sign in to comment.