summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/evp_key.c
diff options
context:
space:
mode:
authordjm <>2012-10-13 21:25:14 +0000
committerdjm <>2012-10-13 21:25:14 +0000
commit93723b50b639d8dc717bc1bf463fd46e1b321239 (patch)
tree281e0a29ae8f87a8c47fbd4deaa1f3d48b8cc5c1 /src/lib/libcrypto/evp/evp_key.c
parent65e72ac55a6405783db7a12d7e35a7561d46005b (diff)
downloadopenbsd-93723b50b639d8dc717bc1bf463fd46e1b321239.tar.gz
openbsd-93723b50b639d8dc717bc1bf463fd46e1b321239.tar.bz2
openbsd-93723b50b639d8dc717bc1bf463fd46e1b321239.zip
resolve conflicts
Diffstat (limited to 'src/lib/libcrypto/evp/evp_key.c')
-rw-r--r--src/lib/libcrypto/evp/evp_key.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/lib/libcrypto/evp/evp_key.c b/src/lib/libcrypto/evp/evp_key.c
index 839d6a3a16..7961fbebf2 100644
--- a/src/lib/libcrypto/evp/evp_key.c
+++ b/src/lib/libcrypto/evp/evp_key.c
@@ -120,7 +120,7 @@ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
120 unsigned char md_buf[EVP_MAX_MD_SIZE]; 120 unsigned char md_buf[EVP_MAX_MD_SIZE];
121 int niv,nkey,addmd=0; 121 int niv,nkey,addmd=0;
122 unsigned int mds=0,i; 122 unsigned int mds=0,i;
123 123 int rv = 0;
124 nkey=type->key_len; 124 nkey=type->key_len;
125 niv=type->iv_len; 125 niv=type->iv_len;
126 OPENSSL_assert(nkey <= EVP_MAX_KEY_LENGTH); 126 OPENSSL_assert(nkey <= EVP_MAX_KEY_LENGTH);
@@ -134,17 +134,24 @@ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
134 if (!EVP_DigestInit_ex(&c,md, NULL)) 134 if (!EVP_DigestInit_ex(&c,md, NULL))
135 return 0; 135 return 0;
136 if (addmd++) 136 if (addmd++)
137 EVP_DigestUpdate(&c,&(md_buf[0]),mds); 137 if (!EVP_DigestUpdate(&c,&(md_buf[0]),mds))
138 EVP_DigestUpdate(&c,data,datal); 138 goto err;
139 if (!EVP_DigestUpdate(&c,data,datal))
140 goto err;
139 if (salt != NULL) 141 if (salt != NULL)
140 EVP_DigestUpdate(&c,salt,PKCS5_SALT_LEN); 142 if (!EVP_DigestUpdate(&c,salt,PKCS5_SALT_LEN))
141 EVP_DigestFinal_ex(&c,&(md_buf[0]),&mds); 143 goto err;
144 if (!EVP_DigestFinal_ex(&c,&(md_buf[0]),&mds))
145 goto err;
142 146
143 for (i=1; i<(unsigned int)count; i++) 147 for (i=1; i<(unsigned int)count; i++)
144 { 148 {
145 EVP_DigestInit_ex(&c,md, NULL); 149 if (!EVP_DigestInit_ex(&c,md, NULL))
146 EVP_DigestUpdate(&c,&(md_buf[0]),mds); 150 goto err;
147 EVP_DigestFinal_ex(&c,&(md_buf[0]),&mds); 151 if (!EVP_DigestUpdate(&c,&(md_buf[0]),mds))
152 goto err;
153 if (!EVP_DigestFinal_ex(&c,&(md_buf[0]),&mds))
154 goto err;
148 } 155 }
149 i=0; 156 i=0;
150 if (nkey) 157 if (nkey)
@@ -173,8 +180,10 @@ int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
173 } 180 }
174 if ((nkey == 0) && (niv == 0)) break; 181 if ((nkey == 0) && (niv == 0)) break;
175 } 182 }
183 rv = type->key_len;
184 err:
176 EVP_MD_CTX_cleanup(&c); 185 EVP_MD_CTX_cleanup(&c);
177 OPENSSL_cleanse(&(md_buf[0]),EVP_MAX_MD_SIZE); 186 OPENSSL_cleanse(&(md_buf[0]),EVP_MAX_MD_SIZE);
178 return(type->key_len); 187 return rv;
179 } 188 }
180 189