summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormiod <>2014-07-13 12:53:46 +0000
committermiod <>2014-07-13 12:53:46 +0000
commit111fadec15cbbe302bb6c1aa84e3035fbe782ff9 (patch)
tree7bb560c2803648ce9adc8ce91f96c74942f8f7db /src
parent19e9baa82a5d67c6fa2f5695d30f290bbf838772 (diff)
downloadopenbsd-111fadec15cbbe302bb6c1aa84e3035fbe782ff9.tar.gz
openbsd-111fadec15cbbe302bb6c1aa84e3035fbe782ff9.tar.bz2
openbsd-111fadec15cbbe302bb6c1aa84e3035fbe782ff9.zip
Make sure all error conditions in RSA_padding_add_PKCS1_PSS_mgf1() cause
EVP_MD_CTX_cleanup() to be called.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/rsa/rsa_pss.c7
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_pss.c7
2 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_pss.c b/src/lib/libcrypto/rsa/rsa_pss.c
index e18ca632aa..f841b2f8a3 100644
--- a/src/lib/libcrypto/rsa/rsa_pss.c
+++ b/src/lib/libcrypto/rsa/rsa_pss.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_pss.c,v 1.9 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: rsa_pss.c,v 1.10 2014/07/13 12:53:46 miod Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2005. 3 * project 2005.
4 */ 4 */
@@ -199,6 +199,8 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
199 unsigned char *H, *salt = NULL, *p; 199 unsigned char *H, *salt = NULL, *p;
200 EVP_MD_CTX ctx; 200 EVP_MD_CTX ctx;
201 201
202 EVP_MD_CTX_init(&ctx);
203
202 if (mgf1Hash == NULL) 204 if (mgf1Hash == NULL)
203 mgf1Hash = Hash; 205 mgf1Hash = Hash;
204 206
@@ -246,7 +248,6 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
246 } 248 }
247 maskedDBLen = emLen - hLen - 1; 249 maskedDBLen = emLen - hLen - 1;
248 H = EM + maskedDBLen; 250 H = EM + maskedDBLen;
249 EVP_MD_CTX_init(&ctx);
250 if (!EVP_DigestInit_ex(&ctx, Hash, NULL) || 251 if (!EVP_DigestInit_ex(&ctx, Hash, NULL) ||
251 !EVP_DigestUpdate(&ctx, zeroes, sizeof zeroes) || 252 !EVP_DigestUpdate(&ctx, zeroes, sizeof zeroes) ||
252 !EVP_DigestUpdate(&ctx, mHash, hLen)) 253 !EVP_DigestUpdate(&ctx, mHash, hLen))
@@ -255,7 +256,6 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
255 goto err; 256 goto err;
256 if (!EVP_DigestFinal_ex(&ctx, H, NULL)) 257 if (!EVP_DigestFinal_ex(&ctx, H, NULL))
257 goto err; 258 goto err;
258 EVP_MD_CTX_cleanup(&ctx);
259 259
260 /* Generate dbMask in place then perform XOR on it */ 260 /* Generate dbMask in place then perform XOR on it */
261 if (PKCS1_MGF1(EM, maskedDBLen, H, hLen, mgf1Hash)) 261 if (PKCS1_MGF1(EM, maskedDBLen, H, hLen, mgf1Hash))
@@ -284,6 +284,7 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
284 284
285err: 285err:
286 free(salt); 286 free(salt);
287 EVP_MD_CTX_cleanup(&ctx);
287 288
288 return ret; 289 return ret;
289} 290}
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_pss.c b/src/lib/libssl/src/crypto/rsa/rsa_pss.c
index e18ca632aa..f841b2f8a3 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_pss.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_pss.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_pss.c,v 1.9 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: rsa_pss.c,v 1.10 2014/07/13 12:53:46 miod Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2005. 3 * project 2005.
4 */ 4 */
@@ -199,6 +199,8 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
199 unsigned char *H, *salt = NULL, *p; 199 unsigned char *H, *salt = NULL, *p;
200 EVP_MD_CTX ctx; 200 EVP_MD_CTX ctx;
201 201
202 EVP_MD_CTX_init(&ctx);
203
202 if (mgf1Hash == NULL) 204 if (mgf1Hash == NULL)
203 mgf1Hash = Hash; 205 mgf1Hash = Hash;
204 206
@@ -246,7 +248,6 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
246 } 248 }
247 maskedDBLen = emLen - hLen - 1; 249 maskedDBLen = emLen - hLen - 1;
248 H = EM + maskedDBLen; 250 H = EM + maskedDBLen;
249 EVP_MD_CTX_init(&ctx);
250 if (!EVP_DigestInit_ex(&ctx, Hash, NULL) || 251 if (!EVP_DigestInit_ex(&ctx, Hash, NULL) ||
251 !EVP_DigestUpdate(&ctx, zeroes, sizeof zeroes) || 252 !EVP_DigestUpdate(&ctx, zeroes, sizeof zeroes) ||
252 !EVP_DigestUpdate(&ctx, mHash, hLen)) 253 !EVP_DigestUpdate(&ctx, mHash, hLen))
@@ -255,7 +256,6 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
255 goto err; 256 goto err;
256 if (!EVP_DigestFinal_ex(&ctx, H, NULL)) 257 if (!EVP_DigestFinal_ex(&ctx, H, NULL))
257 goto err; 258 goto err;
258 EVP_MD_CTX_cleanup(&ctx);
259 259
260 /* Generate dbMask in place then perform XOR on it */ 260 /* Generate dbMask in place then perform XOR on it */
261 if (PKCS1_MGF1(EM, maskedDBLen, H, hLen, mgf1Hash)) 261 if (PKCS1_MGF1(EM, maskedDBLen, H, hLen, mgf1Hash))
@@ -284,6 +284,7 @@ RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM,
284 284
285err: 285err:
286 free(salt); 286 free(salt);
287 EVP_MD_CTX_cleanup(&ctx);
287 288
288 return ret; 289 return ret;
289} 290}