summaryrefslogtreecommitdiffstats
path: root/crypto/rsa
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2006-04-09 12:53:55 +0000
committerDr. Stephen Henson <steve@openssl.org>2006-04-09 12:53:55 +0000
commit6471c9f4787d64c2942ea75073374d86f5aa6517 (patch)
tree1626021bcb609a9c6112ff7254c864b08a5396db /crypto/rsa
parent4a3dc3c0e34d44590b6565f8a8f5f4f5192df988 (diff)
Add checking to padding ctrl.
Diffstat (limited to 'crypto/rsa')
-rw-r--r--crypto/rsa/rsa.h2
-rw-r--r--crypto/rsa/rsa_pmeth.c6
2 files changed, 5 insertions, 3 deletions
diff --git a/crypto/rsa/rsa.h b/crypto/rsa/rsa.h
index 2b03ede5fd..09db1c88de 100644
--- a/crypto/rsa/rsa.h
+++ b/crypto/rsa/rsa.h
@@ -193,7 +193,7 @@ struct rsa_st
*/
#define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \
- EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_CTRL_RSA_PADDING, \
+ EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \
pad, NULL)
#define EVP_PKEY_CTRL_RSA_PADDING 1
diff --git a/crypto/rsa/rsa_pmeth.c b/crypto/rsa/rsa_pmeth.c
index 5401b0544a..3552fce8d9 100644
--- a/crypto/rsa/rsa_pmeth.c
+++ b/crypto/rsa/rsa_pmeth.c
@@ -161,10 +161,12 @@ static int pkey_rsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
/* TODO: add PSS support */
if ((p1 >= RSA_PKCS1_PADDING) && (p1 <= RSA_X931_PADDING))
{
+ if (ctx->operation == EVP_PKEY_OP_KEYGEN)
+ return -2;
rctx->pad_mode = p1;
return 1;
}
- return 0;
+ return -2;
default:
return -2;
@@ -192,7 +194,7 @@ static int pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx,
pm = RSA_X931_PADDING;
else
return -2;
- return pkey_rsa_ctrl(ctx, EVP_PKEY_CTRL_RSA_PADDING, pm, NULL);
+ return EVP_PKEY_CTX_set_rsa_padding(ctx, pm);
}
return -2;
}