UNPKG

node-seal

Version:

Homomorphic Encryption for TypeScript or JavaScript using Microsoft SEAL

58 lines (57 loc) 5.23 kB
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;