def sign_k

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

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

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)))))

Uses (17)

Used by (3)