tlsn-wasm
Version:
A core WebAssembly package for TLSNotary.
311 lines (284 loc) • 10.4 kB
TypeScript
/* tslint:disable */
/* eslint-disable */
/**
* Initializes the module.
*/
export function initialize(logging_config: LoggingConfig | null | undefined, thread_count: number): Promise<void>;
/**
* Builds a presentation.
*/
export function build_presentation(attestation: Attestation, secrets: Secrets, reveal: Reveal): Presentation;
export function web_spawn_start_worker(worker: number): void;
export function web_spawn_recover_spawner(spawner: number): Spawner;
/**
* Starts the thread spawner on a dedicated worker thread.
*/
export function startSpawner(): Promise<any>;
export type Body = JsonValue;
export type Method = "GET" | "POST" | "PUT" | "DELETE";
export interface HttpRequest {
uri: string;
method: Method;
headers: Map<string, number[]>;
body: Body | undefined;
}
export interface HttpResponse {
status: number;
headers: [string, number[]][];
}
export type TlsVersion = "V1_2" | "V1_3";
export interface TranscriptLength {
sent: number;
recv: number;
}
export interface ConnectionInfo {
time: number;
version: TlsVersion;
transcript_length: TranscriptLength;
}
export interface Transcript {
sent: number[];
recv: number[];
}
export interface PartialTranscript {
sent: number[];
sent_authed: { start: number; end: number }[];
recv: number[];
recv_authed: { start: number; end: number }[];
}
export interface Commit {
sent: { start: number; end: number }[];
recv: { start: number; end: number }[];
}
export interface Reveal {
sent: { start: number; end: number }[];
recv: { start: number; end: number }[];
server_identity: boolean;
}
export type KeyType = "P256";
export interface PresentationOutput {
attestation: Attestation;
server_name: string | undefined;
connection_info: ConnectionInfo;
transcript: PartialTranscript | undefined;
}
export interface VerifierOutput {
server_name: string | undefined;
connection_info: ConnectionInfo;
transcript: PartialTranscript | undefined;
}
export interface VerifyingKey {
alg: number;
data: number[];
}
export type NetworkSetting = "Bandwidth" | "Latency";
export interface VerifierConfig {
max_sent_data: number;
max_recv_data: number;
max_sent_records: number | undefined;
max_recv_records_online: number | undefined;
}
export interface ProverConfig {
server_name: string;
max_sent_data: number;
max_sent_records: number | undefined;
max_recv_data_online: number | undefined;
max_recv_data: number;
max_recv_records_online: number | undefined;
defer_decryption_from_start: boolean | undefined;
network: NetworkSetting;
client_auth: [number[][], number[]] | undefined;
}
export interface CrateLogFilter {
level: LoggingLevel;
name: string;
}
export interface LoggingConfig {
level: LoggingLevel | undefined;
crate_filters: CrateLogFilter[] | undefined;
span_events: SpanEvent[] | undefined;
}
export type SpanEvent = "New" | "Close" | "Active";
export type LoggingLevel = "Trace" | "Debug" | "Info" | "Warn" | "Error";
export class Attestation {
private constructor();
free(): void;
verifying_key(): VerifyingKey;
/**
* Serializes to a byte array.
*/
serialize(): Uint8Array;
/**
* Deserializes from a byte array.
*/
static deserialize(bytes: Uint8Array): Attestation;
}
export class NotarizationOutput {
private constructor();
free(): void;
attestation: Attestation;
secrets: Secrets;
}
export class Presentation {
private constructor();
free(): void;
/**
* Returns the verifying key.
*/
verifying_key(): VerifyingKey;
/**
* Verifies the presentation.
*/
verify(): PresentationOutput;
serialize(): Uint8Array;
static deserialize(bytes: Uint8Array): Presentation;
}
export class Prover {
free(): void;
constructor(config: ProverConfig);
/**
* Set up the prover.
*
* This performs all MPC setup prior to establishing the connection to the
* application server.
*/
setup(verifier_url: string): Promise<void>;
/**
* Send the HTTP request to the server.
*/
send_request(ws_proxy_url: string, request: HttpRequest): Promise<HttpResponse>;
/**
* Returns the transcript.
*/
transcript(): Transcript;
/**
* Runs the notarization protocol.
*/
notarize(commit: Commit): Promise<NotarizationOutput>;
/**
* Reveals data to the verifier and finalizes the protocol.
*/
reveal(reveal: Reveal): Promise<void>;
}
export class Secrets {
private constructor();
free(): void;
/**
* Returns the transcript.
*/
transcript(): Transcript;
/**
* Serializes to a byte array.
*/
serialize(): Uint8Array;
/**
* Deserializes from a byte array.
*/
static deserialize(bytes: Uint8Array): Secrets;
}
/**
* Global spawner which spawns closures into web workers.
*/
export class Spawner {
private constructor();
free(): void;
intoRaw(): number;
/**
* Runs the spawner.
*/
run(url: string): Promise<void>;
}
export class Verifier {
free(): void;
constructor(config: VerifierConfig);
/**
* Connect to the prover.
*/
connect(prover_url: string): Promise<void>;
/**
* Verifies the connection and finalizes the protocol.
*/
verify(): Promise<VerifierOutput>;
}
export class WorkerData {
private constructor();
free(): void;
}
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
export interface InitOutput {
readonly __wbg_prover_free: (a: number, b: number) => void;
readonly prover_new: (a: any) => number;
readonly prover_setup: (a: number, b: number, c: number) => any;
readonly prover_send_request: (a: number, b: number, c: number, d: any) => any;
readonly prover_transcript: (a: number) => [number, number, number];
readonly prover_notarize: (a: number, b: any) => any;
readonly prover_reveal: (a: number, b: any) => any;
readonly __wbg_attestation_free: (a: number, b: number) => void;
readonly attestation_verifying_key: (a: number) => any;
readonly attestation_serialize: (a: number) => [number, number];
readonly attestation_deserialize: (a: number, b: number) => [number, number, number];
readonly __wbg_secrets_free: (a: number, b: number) => void;
readonly secrets_transcript: (a: number) => any;
readonly secrets_serialize: (a: number) => [number, number];
readonly secrets_deserialize: (a: number, b: number) => [number, number, number];
readonly __wbg_presentation_free: (a: number, b: number) => void;
readonly presentation_verifying_key: (a: number) => any;
readonly presentation_verify: (a: number) => [number, number, number];
readonly presentation_serialize: (a: number) => [number, number];
readonly presentation_deserialize: (a: number, b: number) => [number, number, number];
readonly __wbg_notarizationoutput_free: (a: number, b: number) => void;
readonly __wbg_get_notarizationoutput_attestation: (a: number) => number;
readonly __wbg_set_notarizationoutput_attestation: (a: number, b: number) => void;
readonly __wbg_get_notarizationoutput_secrets: (a: number) => number;
readonly __wbg_set_notarizationoutput_secrets: (a: number, b: number) => void;
readonly initialize: (a: number, b: number) => any;
readonly build_presentation: (a: number, b: number, c: any) => [number, number, number];
readonly __wbg_verifier_free: (a: number, b: number) => void;
readonly verifier_new: (a: any) => number;
readonly verifier_connect: (a: number, b: number, c: number) => any;
readonly verifier_verify: (a: number) => any;
readonly __wbg_workerdata_free: (a: number, b: number) => void;
readonly web_spawn_start_worker: (a: number) => void;
readonly __wbg_spawner_free: (a: number, b: number) => void;
readonly spawner_intoRaw: (a: number) => number;
readonly spawner_run: (a: number, b: number, c: number) => any;
readonly web_spawn_recover_spawner: (a: number) => number;
readonly startSpawner: () => any;
readonly ring_core_0_17_14__bn_mul_mont: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
readonly memory: WebAssembly.Memory;
readonly __wbindgen_malloc: (a: number, b: number) => number;
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
readonly __wbindgen_exn_store: (a: number) => void;
readonly __externref_table_alloc: () => number;
readonly __wbindgen_export_5: WebAssembly.Table;
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
readonly __wbindgen_export_7: WebAssembly.Table;
readonly __externref_table_dealloc: (a: number) => void;
readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h36d577a13c442f93: (a: number, b: number) => void;
readonly closure1094_externref_shim: (a: number, b: number, c: any) => void;
readonly closure3738_externref_shim: (a: number, b: number, c: any) => void;
readonly closure4289_externref_shim: (a: number, b: number, c: any, d: any) => void;
readonly __wbindgen_thread_destroy: (a?: number, b?: number, c?: number) => void;
readonly __wbindgen_start: (a: number) => void;
}
export type SyncInitInput = BufferSource | WebAssembly.Module;
/**
* Instantiates the given `module`, which can either be bytes or
* a precompiled `WebAssembly.Module`.
*
* @param {{ module: SyncInitInput, memory?: WebAssembly.Memory, thread_stack_size?: number }} module - Passing `SyncInitInput` directly is deprecated.
* @param {WebAssembly.Memory} memory - Deprecated.
*
* @returns {InitOutput}
*/
export function initSync(module: { module: SyncInitInput, memory?: WebAssembly.Memory, thread_stack_size?: number } | SyncInitInput, memory?: WebAssembly.Memory): InitOutput;
/**
* If `module_or_path` is {RequestInfo} or {URL}, makes a request and
* for everything else, calls `WebAssembly.instantiate` directly.
*
* @param {{ module_or_path: InitInput | Promise<InitInput>, memory?: WebAssembly.Memory, thread_stack_size?: number }} module_or_path - Passing `InitInput` directly is deprecated.
* @param {WebAssembly.Memory} memory - Deprecated.
*
* @returns {Promise<InitOutput>}
*/
export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput>, memory?: WebAssembly.Memory, thread_stack_size?: number } | InitInput | Promise<InitInput>, memory?: WebAssembly.Memory): Promise<InitOutput>;