summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortb <>2023-07-03 10:21:25 +0000
committertb <>2023-07-03 10:21:25 +0000
commitf80fc69932486713b4150b313ac84df92faf6113 (patch)
treea1972a4c6ed2e370f7ace0abf0a77f6697f43539 /src/lib
parent094db396b7bc3dec23cc6b9bfda2ab7919e94f1e (diff)
downloadopenbsd-f80fc69932486713b4150b313ac84df92faf6113.tar.gz
openbsd-f80fc69932486713b4150b313ac84df92faf6113.tar.bz2
openbsd-f80fc69932486713b4150b313ac84df92faf6113.zip
Split range checks for ECDSA r and ECDSA s
requested by jsing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/ecdsa/ecs_ossl.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_ossl.c b/src/lib/libcrypto/ecdsa/ecs_ossl.c
index e52cacbf12..441033e5cd 100644
--- a/src/lib/libcrypto/ecdsa/ecs_ossl.c
+++ b/src/lib/libcrypto/ecdsa/ecs_ossl.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ecs_ossl.c,v 1.56 2023/07/03 10:19:52 tb Exp $ */ 1/* $OpenBSD: ecs_ossl.c,v 1.57 2023/07/03 10:21:25 tb Exp $ */
2/* 2/*
3 * Written by Nils Larsch for the OpenSSL project 3 * Written by Nils Larsch for the OpenSSL project
4 */ 4 */
@@ -499,8 +499,12 @@ ossl_ecdsa_verify_sig(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *
499 } 499 }
500 500
501 /* Verify that r and s are in the range [1, order). */ 501 /* Verify that r and s are in the range [1, order). */
502 if (BN_cmp(sig->r, BN_value_one()) < 0 || BN_cmp(sig->r, order) >= 0 || 502 if (BN_cmp(sig->r, BN_value_one()) < 0 || BN_cmp(sig->r, order) >= 0) {
503 BN_cmp(sig->s, BN_value_one()) < 0 || BN_cmp(sig->s, order) >= 0) { 503 ECDSAerror(ECDSA_R_BAD_SIGNATURE);
504 ret = 0;
505 goto err;
506 }
507 if (BN_cmp(sig->s, BN_value_one()) < 0 || BN_cmp(sig->s, order) >= 0) {
504 ECDSAerror(ECDSA_R_BAD_SIGNATURE); 508 ECDSAerror(ECDSA_R_BAD_SIGNATURE);
505 ret = 0; 509 ret = 0;
506 goto err; 510 goto err;
@@ -547,6 +551,7 @@ ossl_ecdsa_verify_sig(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *
547 BN_CTX_end(ctx); 551 BN_CTX_end(ctx);
548 BN_CTX_free(ctx); 552 BN_CTX_free(ctx);
549 EC_POINT_free(point); 553 EC_POINT_free(point);
554
550 return ret; 555 return ret;
551} 556}
552 557