~/bend-docscommunity

proofs/crypto/secp256k1/proof_sign.bend source

proofs/crypto/secp256k1/proof_sign.bend on the hub · documented module

import Baseimport ../../../src/crypto/secp256k1.bend as Kimport ../../../src/crypto/secp256k1/ecdsa.bend as Eimport ../../../spec/crypto/secp256k1/ecdsa.bend as ESimport ./laws_sign.bend as Lawsimport ./psign.bend as PS# ECDSA signing of src/crypto/secp256k1.bend (laws.bend Sign.correct):# `bend proofs/crypto/secp256k1/proof_sign.bend`.def compact_v(m: Maybe<&2, E.Signature>) -> {K.compact(m) == PS.msig(m) : Maybe<&2, List<&2, U32>>}:  match m:    case None{}:      {==}    case Some{sig}:      match sig:        case E.Signature{r, s, v}:          {==}def sign_c(+one: Nat, +h1: {one == 1n : Nat}, +sk: List<&2, U32>, +h: List<&2, U32>) -> {K.sign_compact(sk, h) == ES.sign(one, sk, h) : Maybe<&2, List<&2, U32>>}:  Equal.trans(Maybe<&2, List<&2, U32>>, K.compact(E.sign(sk, h)), PS.msig(E.sign(sk, h)), ES.sign(one, sk, h), compact_v(E.sign(sk, h)), PS.sign_v(one, h1, sk, h))def Laws.Sign.correct(one, h1, sk, h):  sign_c(one, h1, sk, h)