diff options
| author | joshua <> | 2024-03-25 11:38:47 +0000 |
|---|---|---|
| committer | joshua <> | 2024-03-25 11:38:47 +0000 |
| commit | 1748604c22ab9b87e756b85e879ef253711dc504 (patch) | |
| tree | d401904b5f7e7e95de9124bf859b3cc1d430d24d /src | |
| parent | ec375ef313c6e05bac01515399bc03875319c473 (diff) | |
| download | openbsd-1748604c22ab9b87e756b85e879ef253711dc504.tar.gz openbsd-1748604c22ab9b87e756b85e879ef253711dc504.tar.bz2 openbsd-1748604c22ab9b87e756b85e879ef253711dc504.zip | |
Clean up use of EVP_MD_CTX_{legacy_clear,cleanup} in PKCS5_PBE_keyivgen
ok tb@
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/evp/evp_pbe.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/lib/libcrypto/evp/evp_pbe.c b/src/lib/libcrypto/evp/evp_pbe.c index 37282202bc..81fa0446ed 100644 --- a/src/lib/libcrypto/evp/evp_pbe.c +++ b/src/lib/libcrypto/evp/evp_pbe.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: evp_pbe.c,v 1.48 2024/03/24 06:48:03 tb Exp $ */ | 1 | /* $OpenBSD: evp_pbe.c,v 1.49 2024/03/25 11:38:47 joshua 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 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -234,7 +234,7 @@ int | |||
| 234 | PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | 234 | PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, |
| 235 | ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, int en_de) | 235 | ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, int en_de) |
| 236 | { | 236 | { |
| 237 | EVP_MD_CTX ctx; | 237 | EVP_MD_CTX *md_ctx; |
| 238 | unsigned char md_tmp[EVP_MAX_MD_SIZE]; | 238 | unsigned char md_tmp[EVP_MAX_MD_SIZE]; |
| 239 | unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; | 239 | unsigned char key[EVP_MAX_KEY_LENGTH], iv[EVP_MAX_IV_LENGTH]; |
| 240 | int i; | 240 | int i; |
| @@ -277,22 +277,23 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 277 | else if (passlen == -1) | 277 | else if (passlen == -1) |
| 278 | passlen = strlen(pass); | 278 | passlen = strlen(pass); |
| 279 | 279 | ||
| 280 | EVP_MD_CTX_legacy_clear(&ctx); | 280 | if ((md_ctx = EVP_MD_CTX_new()) == NULL) |
| 281 | goto err; | ||
| 281 | 282 | ||
| 282 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) | 283 | if (!EVP_DigestInit_ex(md_ctx, md, NULL)) |
| 283 | goto err; | 284 | goto err; |
| 284 | if (!EVP_DigestUpdate(&ctx, pass, passlen)) | 285 | if (!EVP_DigestUpdate(md_ctx, pass, passlen)) |
| 285 | goto err; | 286 | goto err; |
| 286 | if (!EVP_DigestUpdate(&ctx, salt, saltlen)) | 287 | if (!EVP_DigestUpdate(md_ctx, salt, saltlen)) |
| 287 | goto err; | 288 | goto err; |
| 288 | if (!EVP_DigestFinal_ex(&ctx, md_tmp, NULL)) | 289 | if (!EVP_DigestFinal_ex(md_ctx, md_tmp, NULL)) |
| 289 | goto err; | 290 | goto err; |
| 290 | for (i = 1; i < iter; i++) { | 291 | for (i = 1; i < iter; i++) { |
| 291 | if (!EVP_DigestInit_ex(&ctx, md, NULL)) | 292 | if (!EVP_DigestInit_ex(md_ctx, md, NULL)) |
| 292 | goto err; | 293 | goto err; |
| 293 | if (!EVP_DigestUpdate(&ctx, md_tmp, mdsize)) | 294 | if (!EVP_DigestUpdate(md_ctx, md_tmp, mdsize)) |
| 294 | goto err; | 295 | goto err; |
| 295 | if (!EVP_DigestFinal_ex (&ctx, md_tmp, NULL)) | 296 | if (!EVP_DigestFinal_ex(md_ctx, md_tmp, NULL)) |
| 296 | goto err; | 297 | goto err; |
| 297 | } | 298 | } |
| 298 | if ((size_t)EVP_CIPHER_key_length(cipher) > sizeof(md_tmp)) { | 299 | if ((size_t)EVP_CIPHER_key_length(cipher) > sizeof(md_tmp)) { |
| @@ -315,7 +316,7 @@ PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, | |||
| 315 | ret = 1; | 316 | ret = 1; |
| 316 | 317 | ||
| 317 | err: | 318 | err: |
| 318 | EVP_MD_CTX_cleanup(&ctx); | 319 | EVP_MD_CTX_free(md_ctx); |
| 319 | PBEPARAM_free(pbe); | 320 | PBEPARAM_free(pbe); |
| 320 | 321 | ||
| 321 | return ret; | 322 | return ret; |
