summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2023-06-10 15:34:36 +0000
committertb <>2023-06-10 15:34:36 +0000
commiteb0246e144fe40ea036a24f84618aff44aeec499 (patch)
tree21d70bef9b7aa0b3bee4a21d86ddc42c67815288
parent845474be2d49eab2540acf0c233c0f1045cdd2f8 (diff)
downloadopenbsd-eb0246e144fe40ea036a24f84618aff44aeec499.tar.gz
openbsd-eb0246e144fe40ea036a24f84618aff44aeec499.tar.bz2
openbsd-eb0246e144fe40ea036a24f84618aff44aeec499.zip
Convert EVP_Digest{Sign,Verify}* to one-shot for TLSv1.3
Using one-shot EVP_DigestSign() and EVP_DigestVerify() is slightly shorter and is needed for Ed25519 support. ok jsing
-rw-r--r--src/lib/libssl/tls13_client.c16
-rw-r--r--src/lib/libssl/tls13_server.c16
2 files changed, 10 insertions, 22 deletions
diff --git a/src/lib/libssl/tls13_client.c b/src/lib/libssl/tls13_client.c
index 3555ebadd1..053cf1689b 100644
--- a/src/lib/libssl/tls13_client.c
+++ b/src/lib/libssl/tls13_client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_client.c,v 1.101 2022/11/26 16:08:56 tb Exp $ */ 1/* $OpenBSD: tls13_client.c,v 1.102 2023/06/10 15:34:36 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -688,12 +688,8 @@ tls13_server_certificate_verify_recv(struct tls13_ctx *ctx, CBS *cbs)
688 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1)) 688 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1))
689 goto err; 689 goto err;
690 } 690 }
691 if (!EVP_DigestVerifyUpdate(mdctx, sig_content, sig_content_len)) { 691 if (EVP_DigestVerify(mdctx, CBS_data(&signature), CBS_len(&signature),
692 ctx->alert = TLS13_ALERT_DECRYPT_ERROR; 692 sig_content, sig_content_len) <= 0) {
693 goto err;
694 }
695 if (EVP_DigestVerifyFinal(mdctx, CBS_data(&signature),
696 CBS_len(&signature)) <= 0) {
697 ctx->alert = TLS13_ALERT_DECRYPT_ERROR; 693 ctx->alert = TLS13_ALERT_DECRYPT_ERROR;
698 goto err; 694 goto err;
699 } 695 }
@@ -956,13 +952,11 @@ tls13_client_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb)
956 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1)) 952 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1))
957 goto err; 953 goto err;
958 } 954 }
959 if (!EVP_DigestSignUpdate(mdctx, sig_content, sig_content_len)) 955 if (!EVP_DigestSign(mdctx, NULL, &sig_len, sig_content, sig_content_len))
960 goto err;
961 if (EVP_DigestSignFinal(mdctx, NULL, &sig_len) <= 0)
962 goto err; 956 goto err;
963 if ((sig = calloc(1, sig_len)) == NULL) 957 if ((sig = calloc(1, sig_len)) == NULL)
964 goto err; 958 goto err;
965 if (EVP_DigestSignFinal(mdctx, sig, &sig_len) <= 0) 959 if (!EVP_DigestSign(mdctx, sig, &sig_len, sig_content, sig_content_len))
966 goto err; 960 goto err;
967 961
968 if (!CBB_add_u16(cbb, sigalg->value)) 962 if (!CBB_add_u16(cbb, sigalg->value))
diff --git a/src/lib/libssl/tls13_server.c b/src/lib/libssl/tls13_server.c
index 75510a9085..dfeb1e0166 100644
--- a/src/lib/libssl/tls13_server.c
+++ b/src/lib/libssl/tls13_server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_server.c,v 1.105 2022/11/26 16:08:56 tb Exp $ */ 1/* $OpenBSD: tls13_server.c,v 1.106 2023/06/10 15:34:36 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2019, 2020 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2020 Bob Beck <beck@openbsd.org> 4 * Copyright (c) 2020 Bob Beck <beck@openbsd.org>
@@ -754,13 +754,11 @@ tls13_server_certificate_verify_send(struct tls13_ctx *ctx, CBB *cbb)
754 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1)) 754 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1))
755 goto err; 755 goto err;
756 } 756 }
757 if (!EVP_DigestSignUpdate(mdctx, sig_content, sig_content_len)) 757 if (!EVP_DigestSign(mdctx, NULL, &sig_len, sig_content, sig_content_len))
758 goto err;
759 if (EVP_DigestSignFinal(mdctx, NULL, &sig_len) <= 0)
760 goto err; 758 goto err;
761 if ((sig = calloc(1, sig_len)) == NULL) 759 if ((sig = calloc(1, sig_len)) == NULL)
762 goto err; 760 goto err;
763 if (EVP_DigestSignFinal(mdctx, sig, &sig_len) <= 0) 761 if (!EVP_DigestSign(mdctx, sig, &sig_len, sig_content, sig_content_len))
764 goto err; 762 goto err;
765 763
766 if (!CBB_add_u16(cbb, sigalg->value)) 764 if (!CBB_add_u16(cbb, sigalg->value))
@@ -999,12 +997,8 @@ tls13_client_certificate_verify_recv(struct tls13_ctx *ctx, CBS *cbs)
999 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1)) 997 if (!EVP_PKEY_CTX_set_rsa_pss_saltlen(pctx, -1))
1000 goto err; 998 goto err;
1001 } 999 }
1002 if (!EVP_DigestVerifyUpdate(mdctx, sig_content, sig_content_len)) { 1000 if (EVP_DigestVerify(mdctx, CBS_data(&signature), CBS_len(&signature),
1003 ctx->alert = TLS13_ALERT_DECRYPT_ERROR; 1001 sig_content, sig_content_len) <= 0) {
1004 goto err;
1005 }
1006 if (EVP_DigestVerifyFinal(mdctx, CBS_data(&signature),
1007 CBS_len(&signature)) <= 0) {
1008 ctx->alert = TLS13_ALERT_DECRYPT_ERROR; 1002 ctx->alert = TLS13_ALERT_DECRYPT_ERROR;
1009 goto err; 1003 goto err;
1010 } 1004 }