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 | ||