diff options
Diffstat (limited to 'src/lib/libcrypto/rsa/rsa_pss.c')
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_pss.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_pss.c b/src/lib/libcrypto/rsa/rsa_pss.c index 9b993aca49..ac211e2ffe 100644 --- a/src/lib/libcrypto/rsa/rsa_pss.c +++ b/src/lib/libcrypto/rsa/rsa_pss.c | |||
| @@ -81,7 +81,9 @@ int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, | |||
| 81 | EVP_MD_CTX ctx; | 81 | EVP_MD_CTX ctx; |
| 82 | unsigned char H_[EVP_MAX_MD_SIZE]; | 82 | unsigned char H_[EVP_MAX_MD_SIZE]; |
| 83 | 83 | ||
| 84 | hLen = M_EVP_MD_size(Hash); | 84 | hLen = EVP_MD_size(Hash); |
| 85 | if (hLen < 0) | ||
| 86 | goto err; | ||
| 85 | /* | 87 | /* |
| 86 | * Negative sLen has special meanings: | 88 | * Negative sLen has special meanings: |
| 87 | * -1 sLen == hLen | 89 | * -1 sLen == hLen |
| @@ -126,7 +128,8 @@ int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, | |||
| 126 | RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, ERR_R_MALLOC_FAILURE); | 128 | RSAerr(RSA_F_RSA_VERIFY_PKCS1_PSS, ERR_R_MALLOC_FAILURE); |
| 127 | goto err; | 129 | goto err; |
| 128 | } | 130 | } |
| 129 | PKCS1_MGF1(DB, maskedDBLen, H, hLen, Hash); | 131 | if (PKCS1_MGF1(DB, maskedDBLen, H, hLen, Hash) < 0) |
| 132 | goto err; | ||
| 130 | for (i = 0; i < maskedDBLen; i++) | 133 | for (i = 0; i < maskedDBLen; i++) |
| 131 | DB[i] ^= EM[i]; | 134 | DB[i] ^= EM[i]; |
| 132 | if (MSBits) | 135 | if (MSBits) |
| @@ -176,7 +179,9 @@ int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, | |||
| 176 | unsigned char *H, *salt = NULL, *p; | 179 | unsigned char *H, *salt = NULL, *p; |
| 177 | EVP_MD_CTX ctx; | 180 | EVP_MD_CTX ctx; |
| 178 | 181 | ||
| 179 | hLen = M_EVP_MD_size(Hash); | 182 | hLen = EVP_MD_size(Hash); |
| 183 | if (hLen < 0) | ||
| 184 | goto err; | ||
| 180 | /* | 185 | /* |
| 181 | * Negative sLen has special meanings: | 186 | * Negative sLen has special meanings: |
| 182 | * -1 sLen == hLen | 187 | * -1 sLen == hLen |
| @@ -217,7 +222,7 @@ int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, | |||
| 217 | ERR_R_MALLOC_FAILURE); | 222 | ERR_R_MALLOC_FAILURE); |
| 218 | goto err; | 223 | goto err; |
| 219 | } | 224 | } |
| 220 | if (!RAND_bytes(salt, sLen)) | 225 | if (RAND_bytes(salt, sLen) <= 0) |
| 221 | goto err; | 226 | goto err; |
| 222 | } | 227 | } |
| 223 | maskedDBLen = emLen - hLen - 1; | 228 | maskedDBLen = emLen - hLen - 1; |
| @@ -232,7 +237,8 @@ int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, | |||
| 232 | EVP_MD_CTX_cleanup(&ctx); | 237 | EVP_MD_CTX_cleanup(&ctx); |
| 233 | 238 | ||
| 234 | /* Generate dbMask in place then perform XOR on it */ | 239 | /* Generate dbMask in place then perform XOR on it */ |
| 235 | PKCS1_MGF1(EM, maskedDBLen, H, hLen, Hash); | 240 | if (PKCS1_MGF1(EM, maskedDBLen, H, hLen, Hash)) |
| 241 | goto err; | ||
| 236 | 242 | ||
| 237 | p = EM; | 243 | p = EM; |
| 238 | 244 | ||
