def recover_r
bend-collections-laws-crypto@1.0.0.0 · src/crypto/secp256k1/ecdsa.bend:224
import bend-collections-laws-crypto@1.0.0.0/src/crypto/secp256k1/ecdsa.bend as Ecdsa
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
224
225
226def recover_r(+z: List<&2, Nat>, +r: List<&2, Nat>, +s: List<&2, Nat>, m: Maybe<&2, P.Point>) -> Maybe<&2, List<&2, U32>>:
227 match m:
228 case None{}: None{}
229 case Some{+pr}:
230 +ri = S.inv(r)
231 +q = P.add(P.mul(S.mul(S.neg(z), ri), P.g()), P.mul(S.mul(s, ri), pr))
232 recover_q(q, P.is_inf(q))