epir
Version:
EllipticPIR client library (Node.js / TypeScript bindings).
52 lines (51 loc) • 2.98 kB
TypeScript
import Dexie from 'dexie';
import { EpirBase, EpirCreateFunction, DecryptionContextBase, DecryptionContextCreateFunction } from './types';
import EPIRWorker from './wasm.worker.ts';
import { LibEpirHelper } from './wasm.libepir';
import { SelectorFactory } from './wasm.SelectorFactory';
export declare class DecryptionContext implements DecryptionContextBase {
helper: LibEpirHelper;
mG_: number;
mmax: number;
workers: EPIRWorker[];
constructor(helper: LibEpirHelper, mG: ArrayBuffer, nThreads?: number);
getMG(): ArrayBuffer;
decryptCipher(privkey: ArrayBuffer, cipher: ArrayBuffer): number;
decryptReply(privkey: ArrayBuffer, dimension: number, packing: number, reply: ArrayBuffer): Promise<ArrayBuffer>;
interpolationSearch(find: ArrayBuffer): number;
decryptMany(ciphers: ArrayBuffer, privkey: ArrayBuffer, packing: number): Promise<ArrayBuffer>;
}
export declare const createDecryptionContext: DecryptionContextCreateFunction;
export interface MGDatabaseElement {
key: number;
value: ArrayBuffer;
}
export declare class MGDatabase extends Dexie {
static VERSION: number;
mG: Dexie.Table<MGDatabaseElement, number>;
constructor(dbName: string);
}
export declare const loadDecryptionContextFromIndexedDB: (dbName?: string) => Promise<DecryptionContextBase | null>;
export declare const saveDecryptionContextToIndexedDB: (decCtx: DecryptionContextBase, dbName?: string) => Promise<void>;
export { SelectorFactory };
export declare class Epir implements EpirBase {
helper: LibEpirHelper;
workers: EPIRWorker[];
constructor(helper: LibEpirHelper, nThreads?: number);
createPrivkey(): ArrayBuffer;
createPubkey(privkey: ArrayBuffer): ArrayBuffer;
encrypt_(key: ArrayBuffer, msg: number, r: ArrayBuffer | undefined, encrypt: string): ArrayBuffer;
encrypt(pubkey: ArrayBuffer, msg: number, r?: ArrayBuffer): ArrayBuffer;
encryptFast(privkey: ArrayBuffer, msg: number, r?: ArrayBuffer): ArrayBuffer;
ciphers_or_elements_count(index_counts: number[], count: string): number;
ciphersCount(index_counts: number[]): number;
elementsCount(index_counts: number[]): number;
create_choice(index_counts: number[], idx: number): ArrayBuffer;
selector_create_(key: ArrayBuffer, index_counts: number[], idx: number, r: ArrayBuffer | undefined, isFast: boolean): Promise<ArrayBuffer>;
createSelector(pubkey: ArrayBuffer, index_counts: number[], idx: number, r?: ArrayBuffer): Promise<ArrayBuffer>;
createSelectorFast(privkey: ArrayBuffer, index_counts: number[], idx: number, r?: ArrayBuffer): Promise<ArrayBuffer>;
computeReplySize(dimension: number, packing: number, elem_size: number): number;
computeReplyRCount(dimension: number, packing: number, elem_size: number): number;
computeReplyMock(pubkey: ArrayBuffer, dimension: number, packing: number, elem: ArrayBuffer, r?: ArrayBuffer): ArrayBuffer;
}
export declare const createEpir: EpirCreateFunction;