diff options
| author | joshua <> | 2024-03-26 05:37:28 +0000 |
|---|---|---|
| committer | joshua <> | 2024-03-26 05:37:28 +0000 |
| commit | 55b0e6a268660db3dd97c93e5ffa45e7f3f4ffd3 (patch) | |
| tree | 84915a1a91da8814941a999d6aa613ac034a2524 /src | |
| parent | 546ff25658fd218a53468022a08b3b423fd9331f (diff) | |
| download | openbsd-55b0e6a268660db3dd97c93e5ffa45e7f3f4ffd3.tar.gz openbsd-55b0e6a268660db3dd97c93e5ffa45e7f3f4ffd3.tar.bz2 openbsd-55b0e6a268660db3dd97c93e5ffa45e7f3f4ffd3.zip | |
Clean up use of EVP_MD_CTX_{legacy_clear,cleanup} in PKCS1_MGF1
ok tb@
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/rsa/rsa_oaep.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_oaep.c b/src/lib/libcrypto/rsa/rsa_oaep.c index 4927673898..d1e138c299 100644 --- a/src/lib/libcrypto/rsa/rsa_oaep.c +++ b/src/lib/libcrypto/rsa/rsa_oaep.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: rsa_oaep.c,v 1.38 2024/02/18 15:45:42 tb Exp $ */ | 1 | /* $OpenBSD: rsa_oaep.c,v 1.39 2024/03/26 05:37:28 joshua Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. | 3 | * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. |
| 4 | * | 4 | * |
| @@ -326,12 +326,14 @@ PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, | |||
| 326 | { | 326 | { |
| 327 | long i, outlen = 0; | 327 | long i, outlen = 0; |
| 328 | unsigned char cnt[4]; | 328 | unsigned char cnt[4]; |
| 329 | EVP_MD_CTX c; | 329 | EVP_MD_CTX *md_ctx; |
| 330 | unsigned char md[EVP_MAX_MD_SIZE]; | 330 | unsigned char md[EVP_MAX_MD_SIZE]; |
| 331 | int mdlen; | 331 | int mdlen; |
| 332 | int rv = -1; | 332 | int rv = -1; |
| 333 | 333 | ||
| 334 | EVP_MD_CTX_legacy_clear(&c); | 334 | if ((md_ctx = EVP_MD_CTX_new()) == NULL) |
| 335 | goto err; | ||
| 336 | |||
| 335 | mdlen = EVP_MD_size(dgst); | 337 | mdlen = EVP_MD_size(dgst); |
| 336 | if (mdlen < 0) | 338 | if (mdlen < 0) |
| 337 | goto err; | 339 | goto err; |
| @@ -340,24 +342,27 @@ PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, | |||
| 340 | cnt[1] = (unsigned char)((i >> 16) & 255); | 342 | cnt[1] = (unsigned char)((i >> 16) & 255); |
| 341 | cnt[2] = (unsigned char)((i >> 8)) & 255; | 343 | cnt[2] = (unsigned char)((i >> 8)) & 255; |
| 342 | cnt[3] = (unsigned char)(i & 255); | 344 | cnt[3] = (unsigned char)(i & 255); |
| 343 | if (!EVP_DigestInit_ex(&c, dgst, NULL) || | 345 | if (!EVP_DigestInit_ex(md_ctx, dgst, NULL) || |
| 344 | !EVP_DigestUpdate(&c, seed, seedlen) || | 346 | !EVP_DigestUpdate(md_ctx, seed, seedlen) || |
| 345 | !EVP_DigestUpdate(&c, cnt, 4)) | 347 | !EVP_DigestUpdate(md_ctx, cnt, 4)) |
| 346 | goto err; | 348 | goto err; |
| 347 | if (outlen + mdlen <= len) { | 349 | if (outlen + mdlen <= len) { |
| 348 | if (!EVP_DigestFinal_ex(&c, mask + outlen, NULL)) | 350 | if (!EVP_DigestFinal_ex(md_ctx, mask + outlen, NULL)) |
| 349 | goto err; | 351 | goto err; |
| 350 | outlen += mdlen; | 352 | outlen += mdlen; |
| 351 | } else { | 353 | } else { |
| 352 | if (!EVP_DigestFinal_ex(&c, md, NULL)) | 354 | if (!EVP_DigestFinal_ex(md_ctx, md, NULL)) |
| 353 | goto err; | 355 | goto err; |
| 354 | memcpy(mask + outlen, md, len - outlen); | 356 | memcpy(mask + outlen, md, len - outlen); |
| 355 | outlen = len; | 357 | outlen = len; |
| 356 | } | 358 | } |
| 357 | } | 359 | } |
| 360 | |||
| 358 | rv = 0; | 361 | rv = 0; |
| 362 | |||
| 359 | err: | 363 | err: |
| 360 | EVP_MD_CTX_cleanup(&c); | 364 | EVP_MD_CTX_free(md_ctx); |
| 365 | |||
| 361 | return rv; | 366 | return rv; |
| 362 | } | 367 | } |
| 363 | LCRYPTO_ALIAS(PKCS1_MGF1); | 368 | LCRYPTO_ALIAS(PKCS1_MGF1); |
