diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2006-04-09 20:44:00 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2006-04-09 20:44:00 +0000 |
commit | 9fdab72dd793739f10d7a8217e23070492336abc (patch) | |
tree | 0c4f99b8de9a5e612b8b836453589b6f0b9ab4b5 /crypto/rsa | |
parent | b2a97be7f4d61221f3fff3872d067851602b7aa4 (diff) | |
download | openssl-9fdab72dd793739f10d7a8217e23070492336abc.tar.gz |
Bugfix X9.31 padding.
Diffstat (limited to 'crypto/rsa')
-rw-r--r-- | crypto/rsa/rsa_pmeth.c | 6 |
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) |