UNPKG

blocklock-js

Version:

A library for encrypting and decrypting data for the future

69 lines (68 loc) 2.51 kB
import { BytesLike } from "ethers"; import * as mcl from "mcl-wasm"; import type { G1, G2, Fr, Fp, Fp2 } from "mcl-wasm"; /** * Mcl wrapper for BLS operations * Adapted from: https://github.com/kilic/evmbls */ declare class BlsBn254 { static readonly FIELD_ORDER = 21888242871839275222246405745257275088696311157297823662689037894645226208583n; readonly G1: G1; readonly G2: G2; private constructor(); static create(): Promise<BlsBn254>; newG1(): G1; newG2(): G2; newFp(): Fp; expandMsg(domain: Uint8Array, msg: Uint8Array, outLen: number): Uint8Array; hashToField(domain: Uint8Array, msg: Uint8Array, count: number): bigint[]; hashToPoint(domain: Uint8Array, msg: Uint8Array): G1; serialiseFp(p: Fp | Fp2): `0x${string}`; serialiseG1Point(p: G1): [bigint, bigint]; serialiseG2Point(p: G2): [bigint, bigint, bigint, bigint]; deserialiseFp2([x, y]: [bigint, bigint]): Fp2; g1FromEvmHex(input: BytesLike): mcl.G1; g1FromEvm(g1X: bigint, g1Y: bigint): mcl.G1; g2FromEvm([x1, x2, y1, y2]: [bigint, bigint, bigint, bigint]): mcl.G2; g2From(input: BytesLike): G2; createKeyPair(_secretKey?: `0x${string}`): { secretKey: mcl.Fr; _secretKey: `0x${string}`; pubKey: mcl.G2; }; createKeyPairG1PublicKey(_secretKey?: `0x${string}`): { secretKey: mcl.Fr; _secretKey: `0x${string}`; pubKey: mcl.G1; }; sign(M: G1, secret: Fr): { signature: mcl.G1; M: mcl.G1; }; verify(h_m: G1, pk: G2, signature: G1): boolean; toArgs(pubKey: G2, M: G1, signature: G1): { signature: [bigint, bigint]; pubKey: [bigint, bigint, bigint, bigint]; M: [bigint, bigint]; }; mapToPoint(eHex: `0x${string}`): G1; private g; private neg; private mul; private add; private sub; private exp; private sqrt; private sgn0; private inv0; private legendre; aggregate(acc: G1 | G2, other: G1 | G2): mcl.G1 | mcl.G2; } export declare function byteSwap(hex: string, n: number): string; export declare function kyberMarshalG2(p: G2): string; export declare function kyberMarshalG1(p: G1): string; export declare function toHex(n: bigint): `0x${string}`; declare function bytesEqual(bytes1: BytesLike, bytes2: BytesLike): boolean; export declare function serialiseG2Point(p: G2): [bigint, bigint, bigint, bigint]; export declare function serialiseFp(p: Fp | Fp2): `0x${string}`; export { BlsBn254, bytesEqual };