UNPKG

@sismo-core/crypto

Version:

Snark friendly crypto functions

44 lines (37 loc) 1.71 kB
/// <reference types="node" /> import { BigNumber, BigNumberish } from 'ethers'; declare type EddsaPrivateKey = Buffer; declare type EddsaPublicKey = [BigNumber, BigNumber]; declare type EddsaSignature = [BigNumber, BigNumber, BigNumber]; declare class EddsaAccount { private eddsa; private babyJub; private pubKey; private privKey; constructor(pubKey: EddsaPublicKey, privKey: EddsaPrivateKey, eddsa: any, babyjub: any); static generateFromSeed(seed: BigNumberish): Promise<EddsaAccount>; sign(msg: BigNumberish): EddsaSignature; static verify(msg: BigNumberish, signature: [BigNumberish, BigNumberish, BigNumberish], pubKey: [BigNumberish, BigNumberish]): Promise<boolean>; getPubKey(): EddsaPublicKey; } interface FiniteField { one: bigint; zero: bigint; mul(a: bigint, b: bigint): bigint; sub(a: bigint, b: bigint): bigint; div(a: bigint, b: bigint): bigint; add(a: bigint, b: bigint): bigint; eq(a: bigint, b: bigint): boolean; e(a: BigNumberish): bigint; isZero(a: bigint): boolean; square(a: bigint): bigint; toObject(a: BigNumberish): BigNumberish; toRprLE(a: Uint8Array, size: number, msg: any): any; } declare type Poseidon = (inputs: any[]) => BigNumber; declare function buildPoseidon(): Promise<(inputs: BigNumberish[]) => BigNumber>; declare function getPoseidonFiniteField(): Promise<FiniteField>; declare const SNARK_FIELD: BigNumber; declare type Keccak256 = (inputs: any[]) => BigNumber; declare function keccak256(inputs: any[]): BigNumber; export { EddsaAccount, EddsaPrivateKey, EddsaPublicKey, EddsaSignature, Keccak256, Poseidon, SNARK_FIELD, buildPoseidon, getPoseidonFiniteField, keccak256 };