@sismo-core/crypto
Version:
Snark friendly crypto functions
44 lines (37 loc) • 1.71 kB
TypeScript
/// <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 };