node-seal
Version:
Homomorphic Encryption for TypeScript or JavaScript using Microsoft SEAL
58 lines (57 loc) • 5.23 kB
TypeScript
import { CipherText, CipherTextConstructorOptions } from './cipher-text';
import { Context } from './context';
import { Exception } from './exception';
import { GaloisKeys } from './galois-keys';
import { MemoryPoolHandle } from './memory-pool-handle';
import { ParmsIdType } from './parms-id-type';
import { PlainText, PlainTextConstructorOptions } from './plain-text';
import { RelinKeys } from './relin-keys';
import { SchemeType } from './scheme-type';
import { Instance, LoaderOptions } from './seal';
export type EvaluatorDependencyOptions = {
readonly Exception: Exception;
readonly MemoryPoolHandle: MemoryPoolHandle;
readonly CipherText: CipherTextConstructorOptions;
readonly PlainText: PlainTextConstructorOptions;
};
export type EvaluatorDependencies = {
({ Exception, MemoryPoolHandle, CipherText, PlainText }: EvaluatorDependencyOptions): EvaluatorConstructorOptions;
};
export type EvaluatorConstructorOptions = {
(context: Context): Evaluator;
};
export type Evaluator = {
readonly instance: Instance;
readonly unsafeInject: (instance: Instance) => void;
readonly delete: () => void;
readonly negate: (encrypted: CipherText, destination?: CipherText) => CipherText | void;
readonly add: (a: CipherText, b: CipherText, destination?: CipherText) => CipherText | void;
readonly sub: (a: CipherText, b: CipherText, destination?: CipherText) => CipherText | void;
readonly multiply: (a: CipherText, b: CipherText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly square: (encrypted: CipherText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly relinearize: (encrypted: CipherText, relinKeys: RelinKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly cipherModSwitchToNext: (encrypted: CipherText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly cipherModSwitchTo: (encrypted: CipherText, parmsId: ParmsIdType, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly plainModSwitchToNext: (plain: PlainText, destination?: PlainText) => PlainText | void;
readonly plainModSwitchTo: (plain: PlainText, parmsId: ParmsIdType, destination?: PlainText) => PlainText | void;
readonly rescaleToNext: (encrypted: CipherText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly rescaleTo: (encrypted: CipherText, parmsId: ParmsIdType, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly modReduceToNext: (encrypted: CipherText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly modReduceTo: (encrypted: CipherText, parmsId: ParmsIdType, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly exponentiate: (encrypted: CipherText, exponent: number, relinKeys: RelinKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly addPlain: (encrypted: CipherText, plain: PlainText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly subPlain: (encrypted: CipherText, plain: PlainText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly multiplyPlain: (encrypted: CipherText, plain: PlainText, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly plainTransformToNtt: (plain: PlainText, parmsId: ParmsIdType, destinationNtt?: PlainText, pool?: MemoryPoolHandle) => PlainText | void;
readonly cipherTransformToNtt: (encrypted: CipherText, destinationNtt?: CipherText) => CipherText | void;
readonly cipherTransformFromNtt: (encryptedNtt: CipherText, destination?: CipherText) => CipherText | void;
readonly applyGalois: (encrypted: CipherText, galoisElt: number, galoisKeys: GaloisKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly rotateRows: (encrypted: CipherText, steps: number, galoisKeys: GaloisKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly rotateColumns: (encrypted: CipherText, galoisKeys: GaloisKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly rotateVector: (encrypted: CipherText, steps: number, galoisKeys: GaloisKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly complexConjugate: (encrypted: CipherText, galoisKeys: GaloisKeys, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly sumElements: (encrypted: CipherText, galoisKeys: GaloisKeys, scheme: SchemeType, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly dotProduct: (a: CipherText, b: CipherText, relinKeys: RelinKeys, galoisKeys: GaloisKeys, scheme: SchemeType, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
readonly dotProductPlain: (a: CipherText, b: PlainText, galoisKeys: GaloisKeys, scheme: SchemeType, destination?: CipherText, pool?: MemoryPoolHandle) => CipherText | void;
};
export declare const EvaluatorInit: ({ loader }: LoaderOptions) => EvaluatorDependencies;