diff options
author | tb <> | 2023-07-03 10:21:25 +0000 |
---|---|---|
committer | tb <> | 2023-07-03 10:21:25 +0000 |
commit | f80fc69932486713b4150b313ac84df92faf6113 (patch) | |
tree | a1972a4c6ed2e370f7ace0abf0a77f6697f43539 /src/lib | |
parent | 094db396b7bc3dec23cc6b9bfda2ab7919e94f1e (diff) | |
download | openbsd-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.c | 11 |
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 | ||