aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <[email protected]>2006-03-01 22:15:24 +0100
committerDr. Stephen Henson <[email protected]>2006-03-01 22:15:24 +0100
commite8518f847e44a4cf95bb364d00ec3a2751298fb3 (patch)
tree49e281991df9bbfabe995be0692413de6f29cde9
parentforce C locale when using [a-z] in sed expressions (diff)
downloadopenssl-e8518f847e44a4cf95bb364d00ec3a2751298fb3.tar.gz
openssl-e8518f847e44a4cf95bb364d00ec3a2751298fb3.zip
Check EVP_DigestInit return value in EVP_BytesToKey() and use supported
algorithm in PKCS12_create in FIPS mode.
-rw-r--r--crypto/evp/evp_key.c3
-rw-r--r--crypto/pkcs12/p12_crt.c10
2 files changed, 11 insertions, 2 deletions
diff --git a/crypto/evp/evp_key.c b/crypto/evp/evp_key.c
index 5f387a94d32..f8650d5df69 100644
--- a/crypto/evp/evp_key.c
+++ b/crypto/evp/evp_key.c
@@ -126,7 +126,8 @@ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
EVP_MD_CTX_init(&c);
for (;;)
{
- EVP_DigestInit_ex(&c,md, NULL);
+ if (!EVP_DigestInit_ex(&c,md, NULL))
+ return 0;
if (addmd++)
EVP_DigestUpdate(&c,&(md_buf[0]),mds);
EVP_DigestUpdate(&c,data,datal);
diff --git a/crypto/pkcs12/p12_crt.c b/crypto/pkcs12/p12_crt.c
index 4c36c643ce6..40340a7bef6 100644
--- a/crypto/pkcs12/p12_crt.c
+++ b/crypto/pkcs12/p12_crt.c
@@ -76,7 +76,15 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
unsigned int keyidlen;
/* Set defaults */
- if(!nid_cert) nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC;
+ if(!nid_cert)
+ {
+#ifdef OPENSSL_FIPS
+ if (FIPS_mode())
+ nid_cert = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
+ else
+#endif
+ nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC;
+ }
if(!nid_key) nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
if(!iter) iter = PKCS12_DEFAULT_ITER;
if(!mac_iter) mac_iter = 1;