summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2021-12-09 17:45:49 +0000
committertb <>2021-12-09 17:45:49 +0000
commit7f76eb8796847dbd2050d240c944670b9a00e1c0 (patch)
treef2ee1942a8e0c77ea8238f6aac97bd6442d88a90
parente7add5a48f0fbacb763e7b236ce4313a52b67073 (diff)
downloadopenbsd-7f76eb8796847dbd2050d240c944670b9a00e1c0.tar.gz
openbsd-7f76eb8796847dbd2050d240c944670b9a00e1c0.tar.bz2
openbsd-7f76eb8796847dbd2050d240c944670b9a00e1c0.zip
Convert s3_cbc.c to opaque EVP_MD_CTX.
ok inoguchi jsing
-rw-r--r--src/lib/libssl/s3_cbc.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/lib/libssl/s3_cbc.c b/src/lib/libssl/s3_cbc.c
index 1c0286f087..e0289d894b 100644
--- a/src/lib/libssl/s3_cbc.c
+++ b/src/lib/libssl/s3_cbc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_cbc.c,v 1.24 2021/05/16 14:10:43 jsing Exp $ */ 1/* $OpenBSD: s3_cbc.c,v 1.25 2021/12/09 17:45:49 tb Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2012 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2012 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -404,7 +404,7 @@ ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out,
404 unsigned char first_block[MAX_HASH_BLOCK_SIZE]; 404 unsigned char first_block[MAX_HASH_BLOCK_SIZE];
405 unsigned char mac_out[EVP_MAX_MD_SIZE]; 405 unsigned char mac_out[EVP_MAX_MD_SIZE];
406 unsigned int i, j, md_out_size_u; 406 unsigned int i, j, md_out_size_u;
407 EVP_MD_CTX md_ctx; 407 EVP_MD_CTX *md_ctx;
408 /* mdLengthSize is the number of bytes in the length field that terminates 408 /* mdLengthSize is the number of bytes in the length field that terminates
409 * the hash. */ 409 * the hash. */
410 unsigned int md_length_size = 8; 410 unsigned int md_length_size = 8;
@@ -605,9 +605,10 @@ ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out,
605 mac_out[j] |= block[j]&is_block_b; 605 mac_out[j] |= block[j]&is_block_b;
606 } 606 }
607 607
608 EVP_MD_CTX_init(&md_ctx); 608 if ((md_ctx = EVP_MD_CTX_new()) == NULL)
609 if (!EVP_DigestInit_ex(&md_ctx, ctx->digest, NULL /* engine */)) { 609 return 0;
610 EVP_MD_CTX_cleanup(&md_ctx); 610 if (!EVP_DigestInit_ex(md_ctx, EVP_MD_CTX_md(ctx), NULL /* engine */)) {
611 EVP_MD_CTX_free(md_ctx);
611 return 0; 612 return 0;
612 } 613 }
613 614
@@ -615,13 +616,13 @@ ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char* md_out,
615 for (i = 0; i < md_block_size; i++) 616 for (i = 0; i < md_block_size; i++)
616 hmac_pad[i] ^= 0x6a; 617 hmac_pad[i] ^= 0x6a;
617 618
618 EVP_DigestUpdate(&md_ctx, hmac_pad, md_block_size); 619 EVP_DigestUpdate(md_ctx, hmac_pad, md_block_size);
619 EVP_DigestUpdate(&md_ctx, mac_out, md_size); 620 EVP_DigestUpdate(md_ctx, mac_out, md_size);
620 621
621 EVP_DigestFinal(&md_ctx, md_out, &md_out_size_u); 622 EVP_DigestFinal(md_ctx, md_out, &md_out_size_u);
622 if (md_out_size) 623 if (md_out_size)
623 *md_out_size = md_out_size_u; 624 *md_out_size = md_out_size_u;
624 EVP_MD_CTX_cleanup(&md_ctx); 625 EVP_MD_CTX_free(md_ctx);
625 626
626 return 1; 627 return 1;
627} 628}