def sign_p
bend-collections-laws-crypto@1.0.0.0 · src/crypto/secp256k1/schnorr.bend:136
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/schnorr.bend as Schnorr
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
136def sign_p(+d0: List<&2, Nat>, +m: List<&2, U32>, +aux: List<&2, U32>, pa: P.Affine) -> Maybe<&2, List<&2, U32>>:
137 match pa:
138 case P.Affine{px, +py}:
139 +d = S.select(is_odd(py), S.neg(d0), d0)
140 +pb = B.to_be(px)
141 +t = xor_bytes(B.to_be(d), tagged(tag_aux(), aux))
142 +k0 = S.reduce(B.of_be(tagged(tag_nonce(), cat(t, cat(pb, m)))))
143 sign_nz(d, pb, m, k0, Bool.not(S.is_zero(k0)))