summaryrefslogtreecommitdiffstats
path: root/crypto/rsa
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2006-04-09 20:44:00 +0000
committerDr. Stephen Henson <steve@openssl.org>2006-04-09 20:44:00 +0000
commit9fdab72dd793739f10d7a8217e23070492336abc (patch)
tree0c4f99b8de9a5e612b8b836453589b6f0b9ab4b5 /crypto/rsa
parentb2a97be7f4d61221f3fff3872d067851602b7aa4 (diff)
Bugfix X9.31 padding.
Diffstat (limited to 'crypto/rsa')
-rw-r--r--crypto/rsa/rsa_pmeth.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/crypto/rsa/rsa_pmeth.c b/crypto/rsa/rsa_pmeth.c
index a93adb75b9..eec74ef7b9 100644
--- a/crypto/rsa/rsa_pmeth.c
+++ b/crypto/rsa/rsa_pmeth.c
@@ -117,6 +117,8 @@ static void pkey_rsa_cleanup(EVP_PKEY_CTX *ctx)
{
if (rctx->pub_exp)
BN_free(rctx->pub_exp);
+ if (rctx->tbuf)
+ OPENSSL_free(rctx->tbuf);
}
OPENSSL_free(rctx);
}
@@ -172,18 +174,18 @@ static int pkey_rsa_verifyrecover(EVP_PKEY_CTX *ctx,
{
if (!setup_tbuf(rctx, ctx))
return -1;
- ret = RSA_private_encrypt(tbslen, tbs,
+ ret = RSA_public_decrypt(tbslen, tbs,
rctx->tbuf, ctx->pkey->pkey.rsa,
RSA_X931_PADDING);
if (ret < 1)
return 0;
+ ret--;
if (rctx->tbuf[ret] != RSA_X931_hash_id(rctx->md_nid))
{
RSAerr(RSA_F_PKEY_RSA_VERIFYRECOVER,
RSA_R_ALGORITHM_MISMATCH);
return 0;
}
- ret--;
memcpy(sig, rctx->tbuf, ret);
}
else if (rctx->pad_mode == RSA_PKCS1_PADDING)