def verify_q

bend-collections-laws-crypto@1.0.0.0 · src/crypto/secp256k1/ecdsa.bend:191

import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/ecdsa.bend as Ecdsa
import Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/scalar.bend as S
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/point.bend as P
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/bytes.bend as B

191def verify_q(+h: List<&2, U32>, +sig: List<&2, U32>, strict: Bool, m: Maybe<&2, P.Point>) -> Bool:
192  match m:
193    case None{}: False{}
194    case Some{+q}:
195      +r = B.of_be(B.prefix(32n, sig))
196      +s = B.of_be(B.suffix(32n, sig))
197      verify_ok(q, hash_scalar(h), r, s, Bool.and(Bool.and(scalar_ok(r), scalar_ok(s)), Bool.or(Bool.not(strict), Bool.not(S.is_high(s)))))

Uses (15)

Used by (3)