UNPKG

@reclaimprotocol/attestor-core

Version:

<div> <div> <img src="https://raw.githubusercontent.com/reclaimprotocol/.github/main/assets/banners/Attestor-Core.png" /> </div> </div>

72 lines (71 loc) 3.37 kB
import type { CipherSuite } from '@reclaimprotocol/tls'; import type { EncryptionAlgorithm, OPRFOperator, PrivateInput, PublicInput, ZKEngine, ZKOperator } from '@reclaimprotocol/zk-symmetric-crypto'; import type { MessageReveal_MessageRevealZk as ZKReveal, MessageReveal_TOPRFProof as TOPRFProof, MessageReveal_ZKProof as ZKProof } from '../proto/api.ts'; import { ZKProofEngine } from '../proto/api.ts'; import type { CompleteTLSPacket, Logger, OPRFOperators, PrepareZKProofsBaseOpts, TOPRFProofParams, ZKOperators, ZKRevealInfo } from '../types/index.ts'; type PrepareZKProofsOpts = { logger?: Logger; cipherSuite: CipherSuite; } & PrepareZKProofsBaseOpts; type ZKVerifyOpts = { cipherSuite: CipherSuite; ciphertext: Uint8Array; zkReveal: ZKReveal; iv: Uint8Array; recordNumber: number; toprfOvershotNullifier?: Uint8Array; /** * Get the ciphertext of the next packet. * @param overshotNullifier The TOPRF nullifier that overshoots into * the next packet. This should be passed into the verifyZkPacket function * of the next packet. */ getNextPacket: (overshotNullifier: Uint8Array) => (Uint8Array | undefined); logger?: Logger; /** get ZK operator for specified algorithm */ zkOperators?: ZKOperators; oprfOperators?: OPRFOperators; zkEngine?: ZKEngine; }; type ZKProofToGenerate = { startIdx: number; redactedPlaintext: Uint8Array; privateInput: PrivateInput; publicInput: PublicInput; }; type TOPRFProofToGenerate = { privateInput: PrivateInput; publicInput: PublicInput; toprf: TOPRFProofParams; startIdx: number; }; type ZKPacketToProve = { onGeneratedProofs(proofs: ZKProof[], toprfs: TOPRFProof[]): void; algorithm: EncryptionAlgorithm; proofsToGenerate: ZKProofToGenerate[]; toprfsToGenerate: TOPRFProofToGenerate[]; iv: Uint8Array; }; export declare function makeZkProofGenerator({ zkOperators, oprfOperators, logger, zkProofConcurrency, cipherSuite, zkEngine }: PrepareZKProofsOpts): Promise<{ /** * Adds the given packet to the list of packets to * generate ZK proofs for. * * Call `generateProofs()` to finally generate the proofs */ addPacketToProve(packet: CompleteTLSPacket, { redactedPlaintext, toprfs, overshotToprfFromPrevBlock }: ZKRevealInfo, onGeneratedProofs: ZKPacketToProve["onGeneratedProofs"], getNextPacket: () => CompleteTLSPacket | undefined): Promise<void>; getTotalChunksToProve(): number; generateProofs(onChunkDone?: () => void): Promise<void>; }>; /** * Verify the given ZK proof */ export declare function verifyZkPacket({ cipherSuite, ciphertext, zkReveal, zkOperators, oprfOperators, logger, zkEngine, iv, recordNumber, toprfOvershotNullifier, getNextPacket }: ZKVerifyOpts): Promise<{ redactedPlaintext: Uint8Array<ArrayBuffer>; oprfRawMarkers: import("../proto/api.ts").MessageReveal_OPRFRawMarker[]; }>; export declare function makeDefaultZkOperator(algorithm: EncryptionAlgorithm, zkEngine: ZKEngine, logger: Logger): ZKOperator; export declare function makeDefaultOPRFOperator(algorithm: EncryptionAlgorithm, zkEngine: ZKEngine, logger: Logger): OPRFOperator; export declare function getEngineString(engine: ZKProofEngine): "snarkjs" | "gnark" | "stwo"; export declare function getEngineProto(engine: ZKEngine): 0 | 1 | 2; export {};