diff options
author | joshua <> | 2024-03-25 10:58:06 +0000 |
---|---|---|
committer | joshua <> | 2024-03-25 10:58:06 +0000 |
commit | dda57bed0a76ddfb0856125602db1c44b1bc08fe (patch) | |
tree | 23a21e1b4f243b7be5a359c373f8441ef7fb2184 /src | |
parent | 20a39d2a3c5047f76ad6b865804f321ccc27e6c1 (diff) | |
download | openbsd-dda57bed0a76ddfb0856125602db1c44b1bc08fe.tar.gz openbsd-dda57bed0a76ddfb0856125602db1c44b1bc08fe.tar.bz2 openbsd-dda57bed0a76ddfb0856125602db1c44b1bc08fe.zip |
Clean up use of EVP_MD_CTX_{legacy_clear,cleanup} in EVP_BytesToKey
ok tb@
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/evp/evp_key.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/lib/libcrypto/evp/evp_key.c b/src/lib/libcrypto/evp/evp_key.c index f51584b84b..da103c853f 100644 --- a/src/lib/libcrypto/evp/evp_key.c +++ b/src/lib/libcrypto/evp/evp_key.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp_key.c,v 1.34 2024/02/18 15:45:42 tb Exp $ */ | 1 | /* $OpenBSD: evp_key.c,v 1.35 2024/03/25 10:58:06 joshua Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -135,7 +135,7 @@ EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, | |||
135 | const unsigned char *salt, const unsigned char *data, int datal, | 135 | const unsigned char *salt, const unsigned char *data, int datal, |
136 | int count, unsigned char *key, unsigned char *iv) | 136 | int count, unsigned char *key, unsigned char *iv) |
137 | { | 137 | { |
138 | EVP_MD_CTX c; | 138 | EVP_MD_CTX *md_ctx; |
139 | unsigned char md_buf[EVP_MAX_MD_SIZE]; | 139 | unsigned char md_buf[EVP_MAX_MD_SIZE]; |
140 | int niv, nkey, addmd = 0; | 140 | int niv, nkey, addmd = 0; |
141 | unsigned int mds = 0, i; | 141 | unsigned int mds = 0, i; |
@@ -156,27 +156,29 @@ EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, | |||
156 | if (data == NULL) | 156 | if (data == NULL) |
157 | return nkey; | 157 | return nkey; |
158 | 158 | ||
159 | EVP_MD_CTX_legacy_clear(&c); | 159 | if ((md_ctx = EVP_MD_CTX_new()) == NULL) |
160 | goto err; | ||
161 | |||
160 | for (;;) { | 162 | for (;;) { |
161 | if (!EVP_DigestInit_ex(&c, md, NULL)) | 163 | if (!EVP_DigestInit_ex(md_ctx, md, NULL)) |
162 | goto err; | 164 | goto err; |
163 | if (addmd++) | 165 | if (addmd++) |
164 | if (!EVP_DigestUpdate(&c, &(md_buf[0]), mds)) | 166 | if (!EVP_DigestUpdate(md_ctx, &(md_buf[0]), mds)) |
165 | goto err; | 167 | goto err; |
166 | if (!EVP_DigestUpdate(&c, data, datal)) | 168 | if (!EVP_DigestUpdate(md_ctx, data, datal)) |
167 | goto err; | 169 | goto err; |
168 | if (salt != NULL) | 170 | if (salt != NULL) |
169 | if (!EVP_DigestUpdate(&c, salt, PKCS5_SALT_LEN)) | 171 | if (!EVP_DigestUpdate(md_ctx, salt, PKCS5_SALT_LEN)) |
170 | goto err; | 172 | goto err; |
171 | if (!EVP_DigestFinal_ex(&c, &(md_buf[0]), &mds)) | 173 | if (!EVP_DigestFinal_ex(md_ctx, &(md_buf[0]), &mds)) |
172 | goto err; | 174 | goto err; |
173 | 175 | ||
174 | for (i = 1; i < (unsigned int)count; i++) { | 176 | for (i = 1; i < (unsigned int)count; i++) { |
175 | if (!EVP_DigestInit_ex(&c, md, NULL)) | 177 | if (!EVP_DigestInit_ex(md_ctx, md, NULL)) |
176 | goto err; | 178 | goto err; |
177 | if (!EVP_DigestUpdate(&c, &(md_buf[0]), mds)) | 179 | if (!EVP_DigestUpdate(md_ctx, &(md_buf[0]), mds)) |
178 | goto err; | 180 | goto err; |
179 | if (!EVP_DigestFinal_ex(&c, &(md_buf[0]), &mds)) | 181 | if (!EVP_DigestFinal_ex(md_ctx, &(md_buf[0]), &mds)) |
180 | goto err; | 182 | goto err; |
181 | } | 183 | } |
182 | i = 0; | 184 | i = 0; |
@@ -210,7 +212,7 @@ EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, | |||
210 | rv = type->key_len; | 212 | rv = type->key_len; |
211 | 213 | ||
212 | err: | 214 | err: |
213 | EVP_MD_CTX_cleanup(&c); | 215 | EVP_MD_CTX_free(md_ctx); |
214 | explicit_bzero(md_buf, sizeof md_buf); | 216 | explicit_bzero(md_buf, sizeof md_buf); |
215 | return rv; | 217 | return rv; |
216 | } | 218 | } |