UNPKG

o1js

Version:

TypeScript framework for zk-SNARKs and zkApps

46 lines (39 loc) 1.09 kB
import { ZkProgram, Crypto, createEcdsa, createForeignCurveV2, Bool, Bytes, } from 'o1js'; export { keccakAndEcdsa, ecdsa, Secp256k1, Ecdsa, Bytes32 }; class Secp256k1 extends createForeignCurveV2(Crypto.CurveParams.Secp256k1) {} class Scalar extends Secp256k1.Scalar {} class Ecdsa extends createEcdsa(Secp256k1) {} class Bytes32 extends Bytes(32) {} const keccakAndEcdsa = ZkProgram({ name: 'ecdsa', publicInput: Bytes32.provable, publicOutput: Bool, methods: { verifyEcdsa: { privateInputs: [Ecdsa.provable, Secp256k1.provable], async method(message: Bytes32, signature: Ecdsa, publicKey: Secp256k1) { return signature.verifyV2(message, publicKey); }, }, }, }); const ecdsa = ZkProgram({ name: 'ecdsa-only', publicInput: Scalar.provable, publicOutput: Bool, methods: { verifySignedHash: { privateInputs: [Ecdsa.provable, Secp256k1.provable], async method(message: Scalar, signature: Ecdsa, publicKey: Secp256k1) { return signature.verifySignedHashV2(message, publicKey); }, }, }, });