crystals-kyber-ts
Version:
KYBER is an IND-CCA2-secure key encapsulation mechanism (KEM).
49 lines (48 loc) • 1.36 kB
TypeScript
/// <reference types="node" />
import { Buffer } from "buffer";
import { Poly } from "./poly";
export declare class Indcpa {
paramsK: number;
poly: Poly;
constructor(paramsK: number);
/**
* Generates public and private keys for the CPA-secure public-key
* encryption scheme underlying Kyber.
*/
indcpaKeyGen(): number[][];
/**
* Encrypt the given message using the Kyber public-key encryption scheme
*
* @param publicKey
* @param msg
* @param coins
* @return
*/
indcpaEncrypt(publicKey: number[], msg: number[], coins: number[]): number[];
/**
* Decrypt the given byte array using the Kyber public-key encryption scheme
*
* @param packedCipherText
* @param privateKey
* @return
*/
indcpaDecrypt(packedCipherText: number[], privateKey: number[]): number[];
/**
* Generate a polynomial vector matrix from the given seed
*
* @param seed
* @param transposed
* @return
*/
generateMatrix(seed: number[], transposed: boolean): number[][][];
/**
* Runs rejection sampling on uniform random bytes to generate uniform
* random integers modulo `Q`
*
* @param buf
* @param bufl
* @param len
* @return
*/
generateUniform(buf: Buffer, bufl: number, len: number): number[][];
}