Schnorr.verify_p: def of bend-collections@1.0.0.0 Import: import bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend as Schnorr Lines 61-69 of bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend: https://jend.leeeet.dev/read.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend&start_line=61&end_line=69 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 def verify_p(+pk: List<&2, U32>, +m: List<&2, U32>, +sig: List<&2, U32>, mp: Maybe<&2, P.Point>) -> Bool: match mp: case None{}: False{} case Some{+pp}: +rb = B.prefix(32n, sig) +r = B.of_be(rb) +s = B.of_be(B.suffix(32n, sig)) +e = S.reduce(B.of_be(tagged(tag_challenge(), cat(rb, cat(pk, m))))) verify_ok(r, s, e, pp, Bool.and(F.lt_p(r), S.lt_n(s))) Uses (16): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.and https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/bytes.bend&name=of_be https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/bytes.bend&name=prefix https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/bytes.bend&name=suffix https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/field.bend&name=lt_p https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/point.bend&name=Point https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/scalar.bend&name=lt_n https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/scalar.bend&name=reduce https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend&name=cat https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend&name=tag_challenge https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend&name=tagged https://jend.leeeet.dev/definition.txt?path=bend-collections@1.0.0.0/src/crypto/secp256k1/schnorr.bend&name=verify_ok