def sign_k
bend-collections@1.0.0.0 · src/crypto/secp256k1/schnorr.bend:123
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/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
123def sign_k(+d: List<&2, Nat>, +pb: List<&2, U32>, +m: List<&2, U32>, +k0: List<&2, Nat>, ra: P.Affine) -> Maybe<&2, List<&2, U32>>:
124 match ra:
125 case P.Affine{rx, +ry}:
126 +k = S.select(is_odd(ry), S.neg(k0), k0)
127 +rb = B.to_be(rx)
128 +e = S.reduce(B.of_be(tagged(tag_challenge(), cat(rb, cat(pb, m)))))
129 sign_fin(pb, m, cat(rb, B.to_be(S.add(k, S.mul(e, d)))))