@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
TypeScript
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 {};