]> www.wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
gost_ec_sign: Fix sig verify step 1 range checks
authorVitaly Chikunov <vt@altlinux.org>
Fri, 22 Apr 2022 00:02:36 +0000 (03:02 +0300)
committerDmitry Belyavskiy <beldmit@users.noreply.github.com>
Tue, 24 May 2022 18:49:32 +0000 (20:49 +0200)
Ensure 0 < r < q, 0 < s < q. (34.10-2021 6.2).

Signed-off-by: Vitaly Chikunov <vt@altlinux.org>
gost_ec_sign.c

index 47996e1666a4d3b4534d0db064dec59d07018582..a825dbabac64e0a6eb1dfa077954ba10ee14a1de 100644 (file)
@@ -365,10 +365,10 @@ int gost_ec_verify(const unsigned char *dgst, int dgst_len,
     ECDSA_SIG_get0(sig, &sig_r, &sig_s);
 
     if (BN_is_zero(sig_s) || BN_is_zero(sig_r) ||
-        (BN_cmp(sig_s, order) >= 1) || (BN_cmp(sig_r, order) >= 1)) {
+        BN_is_negative(sig_s) || BN_is_negative(sig_r) ||
+        BN_ucmp(sig_s, order) >= 0 || BN_ucmp(sig_r, order) >= 0) {
         GOSTerr(GOST_F_GOST_EC_VERIFY, GOST_R_SIGNATURE_PARTS_GREATER_THAN_Q);
         goto err;
-
     }
 
     OPENSSL_assert(dgst_len == 32 || dgst_len == 64);