def verify_p

bend-collections@1.0.0.0 · src/crypto/secp256k1/schnorr.bend:61

import bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend as Schnorr
import Base
import bend-collections@1.0.0.0/src/crypto/secp256k1/field.bend as F
import bend-collections@1.0.0.0/src/crypto/secp256k1/scalar.bend as S
import bend-collections@1.0.0.0/src/crypto/secp256k1/point.bend as P
import bend-collections@1.0.0.0/src/crypto/secp256k1/bytes.bend as B

61def verify_p(+pk: List<&2, U32>, +m: List<&2, U32>, +sig: List<&2, U32>, mp: Maybe<&2, P.Point>) -> Bool:
62  match mp:
63    case None{}: False{}
64    case Some{+pp}:
65      +rb = B.prefix(32n, sig)
66      +r = B.of_be(rb)
67      +s = B.of_be(B.suffix(32n, sig))
68      +e = S.reduce(B.of_be(tagged(tag_challenge(), cat(rb, cat(pk, m)))))
69      verify_ok(r, s, e, pp, Bool.and(F.lt_p(r), S.lt_n(s)))

Uses (16)

Used by (1)