UNPKG

crystals-kyber-js

Version:

An ML-KEM/CRYSTALS-KYBER implementation written in TypeScript for various JavaScript runtimes

132 lines (131 loc) 4.44 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "./errors.js", "./mlKem512Base.js"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MlKem512 = void 0; /** * This implementation is based on https://github.com/antontutoveanu/crystals-kyber-javascript, * which was deveploped under the MIT licence below: * https://github.com/antontutoveanu/crystals-kyber-javascript/blob/main/LICENSE */ const errors_js_1 = require("./errors.js"); const mlKem512Base_js_1 = require("./mlKem512Base.js"); /** * Represents the MlKem512 class. * * This class extends the MlKem512Base class and provides specific implementation for MlKem512. * * @deprecated Use {@link createMlKem512} instead. This async class-based API will be removed in a future release. * * @remarks * * MlKem512 is a specific implementation of the ML-KEM key encapsulation mechanism. * * @example * * ```ts * // Using jsr: * import { createMlKem512 } from "@dajiaji/mlkem"; * // Using npm: * // import { createMlKem512 } from "mlkem"; // or "crystals-kyber-js" * * const recipient = await createMlKem512(); * const [pkR, skR] = recipient.generateKeyPair(); * * const sender = await createMlKem512(); * const [ct, ssS] = sender.encap(pkR); * * const ssR = recipient.decap(ct, skR); * // ssS === ssR * ``` */ class MlKem512 extends mlKem512Base_js_1.MlKem512Base { /** * Constructs a new instance of the MlKem512 class. */ constructor() { super(); } /** * Generates a keypair [publicKey, privateKey]. * * If an error occurred, throws {@link MlKemError}. * * @returns A kaypair [publicKey, privateKey]. * @throws {@link MlKemError} */ async generateKeyPair() { await this._setup(); try { return this._generateKeyPairCore(); } catch (e) { throw new errors_js_1.MlKemError(e); } } /** * Derives a keypair [publicKey, privateKey] deterministically from a 64-octet seed. * * If an error occurred, throws {@link MlKemError}. * * @param seed A 64-octet seed for the deterministic key generation. * @returns A kaypair [publicKey, privateKey]. * @throws {@link MlKemError} */ async deriveKeyPair(seed) { await this._setup(); try { return this._deriveKeyPairCore(seed); } catch (e) { throw new errors_js_1.MlKemError(e); } } /** * Generates a shared secret from the encapsulated ciphertext and the private key. * * If an error occurred, throws {@link MlKemError}. * * @param pk A public key. * @param seed An optional 32-octet seed for the deterministic shared secret generation. * @returns A ciphertext (encapsulated public key) and a shared secret. * @throws {@link MlKemError} */ async encap(pk, seed) { await this._setup(); try { return this._encapCore(pk, seed); } catch (e) { throw new errors_js_1.MlKemError(e); } } /** * Generates a ciphertext for the public key and a shared secret. * * If an error occurred, throws {@link MlKemError}. * * @param ct A ciphertext generated by {@link encap}. * @param sk A private key. * @returns A shared secret. * @throws {@link MlKemError} */ async decap(ct, sk) { await this._setup(); try { return this._decapCore(ct, sk); } catch (e) { throw new errors_js_1.MlKemError(e); } } } exports.MlKem512 = MlKem512; });