diff options
author | Richard Levitte <levitte@openssl.org> | 2002-11-26 11:14:32 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2002-11-26 11:14:32 +0000 |
commit | ba8ad074905ac260117a983237bc61a488e9fb1e (patch) | |
tree | f244f6f587a13bf67d44658c4a2438090866b199 | |
parent | 17582ccf21912342b1aeaa60f44c55abc7779a00 (diff) |
The logic in the main signing and verifying functions to check lengths was
incorrect. Fortunately, there is a second check that's correct, when adding
the pads.
PR: 355
-rw-r--r-- | crypto/rsa/rsa.h | 2 | ||||
-rw-r--r-- | crypto/rsa/rsa_pk1.c | 2 | ||||
-rw-r--r-- | crypto/rsa/rsa_saos.c | 2 | ||||
-rw-r--r-- | crypto/rsa/rsa_sign.c | 2 |
4 files changed, 5 insertions, 3 deletions
diff --git a/crypto/rsa/rsa.h b/crypto/rsa/rsa.h index 98b3bd7cc5..b2e25e4e7c 100644 --- a/crypto/rsa/rsa.h +++ b/crypto/rsa/rsa.h @@ -175,6 +175,8 @@ struct rsa_st #define RSA_NO_PADDING 3 #define RSA_PKCS1_OAEP_PADDING 4 +#define RSA_PKCS1_PADDING_SIZE 11 + #define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) #define RSA_get_app_data(s) RSA_get_ex_data(s,0) diff --git a/crypto/rsa/rsa_pk1.c b/crypto/rsa/rsa_pk1.c index c1edd6764f..8560755f1d 100644 --- a/crypto/rsa/rsa_pk1.c +++ b/crypto/rsa/rsa_pk1.c @@ -68,7 +68,7 @@ int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, int j; unsigned char *p; - if (flen > (tlen-11)) + if (flen > (tlen-RSA_PKCS1_PADDING_SIZE)) { RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1,RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE); return(0); diff --git a/crypto/rsa/rsa_saos.c b/crypto/rsa/rsa_saos.c index 85adacc08f..423cb50652 100644 --- a/crypto/rsa/rsa_saos.c +++ b/crypto/rsa/rsa_saos.c @@ -77,7 +77,7 @@ int RSA_sign_ASN1_OCTET_STRING(int type, i=i2d_ASN1_OCTET_STRING(&sig,NULL); j=RSA_size(rsa); - if ((i-RSA_PKCS1_PADDING) > j) + if (i > (j-RSA_PKCS1_PADDING_SIZE)) { RSAerr(RSA_F_RSA_SIGN_ASN1_OCTET_STRING,RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY); return(0); diff --git a/crypto/rsa/rsa_sign.c b/crypto/rsa/rsa_sign.c index 2a440901de..c53ca73914 100644 --- a/crypto/rsa/rsa_sign.c +++ b/crypto/rsa/rsa_sign.c @@ -113,7 +113,7 @@ int RSA_sign(int type, const unsigned char *m, unsigned int m_len, i=i2d_X509_SIG(&sig,NULL); } j=RSA_size(rsa); - if ((i-RSA_PKCS1_PADDING) > j) + if (i > (j-RSA_PKCS1_PADDING_SIZE)) { RSAerr(RSA_F_RSA_SIGN,RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY); return(0); |