Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for ML-KEM. #34

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions bench/kyber1024.bench.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import * as kyber from "npm:crystals-kyber";
import { Kyber1024 } from "../mod.ts";
import { MlKem1024 } from "../mod.ts";

Deno.bench("deriveKeyPair", async (b) => {
const ctx = new Kyber1024();
const ctx = new MlKem1024();
const seed = new Uint8Array(64);
globalThis.crypto.getRandomValues(seed);
b.start();
Expand All @@ -11,7 +11,7 @@ Deno.bench("deriveKeyPair", async (b) => {
});

Deno.bench("generateKeyPair", async (b) => {
const ctx = new Kyber1024();
const ctx = new MlKem1024();
b.start();
const [_pk, _sk] = await ctx.generateKeyPair();
b.end();
Expand All @@ -22,7 +22,7 @@ Deno.bench("crystals-kyber:KeyGen1024", () => {
});

Deno.bench("encap", async (b) => {
const ctx = new Kyber1024();
const ctx = new MlKem1024();
const [pk, _sk] = await ctx.generateKeyPair();
b.start();
const [_ct, _ss] = await ctx.encap(pk);
Expand All @@ -37,7 +37,7 @@ Deno.bench("crystals-kyber:Encrypt1024", (b) => {
});

Deno.bench("decap", async (b) => {
const ctx = new Kyber1024();
const ctx = new MlKem1024();
const [pk, sk] = await ctx.generateKeyPair();
const [ct, _ss1] = await ctx.encap(pk);
b.start();
Expand All @@ -54,7 +54,7 @@ Deno.bench("crystals-kyber:Decrypt1024", (b) => {
});

Deno.bench("all - generateKeyPair/encap/decap", async (b) => {
const ctx = new Kyber1024();
const ctx = new MlKem1024();
b.start();
const [pk, sk] = await ctx.generateKeyPair();
const [ct, _ss1] = await ctx.encap(pk);
Expand Down
12 changes: 6 additions & 6 deletions bench/kyber512.bench.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import * as kyber from "npm:crystals-kyber";
import { Kyber512 } from "../mod.ts";
import { MlKem512 } from "../mod.ts";

Deno.bench("deriveKeyPair", async (b) => {
const ctx = new Kyber512();
const ctx = new MlKem512();
const seed = new Uint8Array(64);
globalThis.crypto.getRandomValues(seed);
b.start();
Expand All @@ -11,7 +11,7 @@ Deno.bench("deriveKeyPair", async (b) => {
});

Deno.bench("generateKeyPair", async (b) => {
const ctx = new Kyber512();
const ctx = new MlKem512();
b.start();
const [_pk, _sk] = await ctx.generateKeyPair();
b.end();
Expand All @@ -22,7 +22,7 @@ Deno.bench("crystals-kyber:KeyGen512", () => {
});

Deno.bench("encap", async (b) => {
const ctx = new Kyber512();
const ctx = new MlKem512();
const [pk, _sk] = await ctx.generateKeyPair();
b.start();
const [_ct, _ss] = await ctx.encap(pk);
Expand All @@ -37,7 +37,7 @@ Deno.bench("crystals-kyber:Encrypt512", (b) => {
});

Deno.bench("decap", async (b) => {
const ctx = new Kyber512();
const ctx = new MlKem512();
const [pk, sk] = await ctx.generateKeyPair();
const [ct, _ss1] = await ctx.encap(pk);
b.start();
Expand All @@ -54,7 +54,7 @@ Deno.bench("crystals-kyber:Decrypt512", (b) => {
});

Deno.bench("all - generateKeyPair/encap/decap", async (b) => {
const ctx = new Kyber512();
const ctx = new MlKem512();
b.start();
const [pk, sk] = await ctx.generateKeyPair();
const [ct, _ss1] = await ctx.encap(pk);
Expand Down
12 changes: 6 additions & 6 deletions bench/kyber768.bench.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import * as kyber from "npm:crystals-kyber";
import { Kyber768 } from "../mod.ts";
import { MlKem768 } from "../mod.ts";

Deno.bench("deriveKeyPair", async (b) => {
const ctx = new Kyber768();
const ctx = new MlKem768();
const seed = new Uint8Array(64);
globalThis.crypto.getRandomValues(seed);
b.start();
Expand All @@ -11,7 +11,7 @@ Deno.bench("deriveKeyPair", async (b) => {
});

Deno.bench("generateKeyPair", async (b) => {
const ctx = new Kyber768();
const ctx = new MlKem768();
b.start();
const [_pk, _sk] = await ctx.generateKeyPair();
b.end();
Expand All @@ -22,7 +22,7 @@ Deno.bench("crystals-kyber:KeyGen768", () => {
});

Deno.bench("encap", async (b) => {
const ctx = new Kyber768();
const ctx = new MlKem768();
const [pk, _sk] = await ctx.generateKeyPair();
b.start();
const [_ct, _ss] = await ctx.encap(pk);
Expand All @@ -37,7 +37,7 @@ Deno.bench("crystals-kyber:Encrypt768", (b) => {
});

Deno.bench("decap", async (b) => {
const ctx = new Kyber768();
const ctx = new MlKem768();
const [pk, sk] = await ctx.generateKeyPair();
const [ct, _ss1] = await ctx.encap(pk);
b.start();
Expand All @@ -54,7 +54,7 @@ Deno.bench("crystals-kyber:Decrypt768", (b) => {
});

Deno.bench("all - generateKeyPair/encap/decap", async (b) => {
const ctx = new Kyber768();
const ctx = new MlKem768();
b.start();
const [pk, sk] = await ctx.generateKeyPair();
const [ct, _ss1] = await ctx.encap(pk);
Expand Down
3 changes: 2 additions & 1 deletion deno.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@
},
"tasks": {
"test": "deno fmt && deno lint && deno test test -A --fail-fast --doc --coverage=coverage --parallel --allow-read",
"test-browser": "cd test/runtimes/browsers && deno task dnt && npm i && npm run test",
"cov": "deno coverage ./coverage --lcov --exclude='test'",
"dnt": "deno run -A dnt.ts $(git describe --tags $(git rev-list --tags --max-count=1))",
"dnt": "rm -rf test/runtimes/browsers/node_modules && deno run -A dnt.ts $(git describe --tags $(git rev-list --tags --max-count=1))",
"minify": "esbuild npm/esm/mod.js --bundle --format=esm --minify"
}
}
65 changes: 32 additions & 33 deletions deno.lock
Original file line number Diff line number Diff line change
Expand Up @@ -48,41 +48,40 @@
"https://deno.land/std@0.181.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d",
"https://deno.land/std@0.181.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1",
"https://deno.land/std@0.181.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba",
"https://deno.land/std@0.213.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975",
"https://deno.land/std@0.213.0/assert/_diff.ts": "dcc63d94ca289aec80644030cf88ccbf7acaa6fbd7b0f22add93616b36593840",
"https://deno.land/std@0.213.0/assert/_format.ts": "0ba808961bf678437fb486b56405b6fefad2cf87b5809667c781ddee8c32aff4",
"https://deno.land/std@0.213.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5",
"https://deno.land/std@0.213.0/assert/assert_almost_equals.ts": "8b96b7385cc117668b0720115eb6ee73d04c9bcb2f5d2344d674918c9113688f",
"https://deno.land/std@0.213.0/assert/assert_array_includes.ts": "1688d76317fd45b7e93ef9e2765f112fdf2b7c9821016cdfb380b9445374aed1",
"https://deno.land/std@0.213.0/assert/assert_equals.ts": "4497c56fe7d2993b0d447926702802fc0becb44e319079e8eca39b482ee01b4e",
"https://deno.land/std@0.213.0/assert/assert_exists.ts": "24a7bf965e634f909242cd09fbaf38bde6b791128ece08e33ab08586a7cc55c9",
"https://deno.land/std@0.213.0/assert/assert_false.ts": "6f382568e5128c0f855e5f7dbda8624c1ed9af4fcc33ef4a9afeeedcdce99769",
"https://deno.land/std@0.213.0/assert/assert_greater.ts": "4945cf5729f1a38874d7e589e0fe5cc5cd5abe5573ca2ddca9d3791aa891856c",
"https://deno.land/std@0.213.0/assert/assert_greater_or_equal.ts": "573ed8823283b8d94b7443eb69a849a3c369a8eb9666b2d1db50c33763a5d219",
"https://deno.land/std@0.213.0/assert/assert_instance_of.ts": "72dc1faff1e248692d873c89382fa1579dd7b53b56d52f37f9874a75b11ba444",
"https://deno.land/std@0.213.0/assert/assert_is_error.ts": "6596f2b5ba89ba2fe9b074f75e9318cda97a2381e59d476812e30077fbdb6ed2",
"https://deno.land/std@0.213.0/assert/assert_less.ts": "2b4b3fe7910f65f7be52212f19c3977ecb8ba5b2d6d0a296c83cde42920bb005",
"https://deno.land/std@0.213.0/assert/assert_less_or_equal.ts": "b93d212fe669fbde959e35b3437ac9a4468f2e6b77377e7b6ea2cfdd825d38a0",
"https://deno.land/std@0.213.0/assert/assert_match.ts": "ec2d9680ed3e7b9746ec57ec923a17eef6d476202f339ad91d22277d7f1d16e1",
"https://deno.land/std@0.213.0/assert/assert_not_equals.ts": "f3edda73043bc2c9fae6cbfaa957d5c69bbe76f5291a5b0466ed132c8789df4c",
"https://deno.land/std@0.213.0/assert/assert_not_instance_of.ts": "8f720d92d83775c40b2542a8d76c60c2d4aeddaf8713c8d11df8984af2604931",
"https://deno.land/std@0.213.0/assert/assert_not_match.ts": "b4b7c77f146963e2b673c1ce4846473703409eb93f5ab0eb60f6e6f8aeffe39f",
"https://deno.land/std@0.213.0/assert/assert_not_strict_equals.ts": "da0b8ab60a45d5a9371088378e5313f624799470c3b54c76e8b8abeec40a77be",
"https://deno.land/std@0.213.0/assert/assert_object_match.ts": "e85e5eef62a56ce364c3afdd27978ccab979288a3e772e6855c270a7b118fa49",
"https://deno.land/std@0.213.0/assert/assert_rejects.ts": "e9e0c8d9c3e164c7ac962c37b3be50577c5a2010db107ed272c4c1afb1269f54",
"https://deno.land/std@0.213.0/assert/assert_strict_equals.ts": "0425a98f70badccb151644c902384c12771a93e65f8ff610244b8147b03a2366",
"https://deno.land/std@0.213.0/assert/assert_string_includes.ts": "dfb072a890167146f8e5bdd6fde887ce4657098e9f71f12716ef37f35fb6f4a7",
"https://deno.land/std@0.213.0/assert/assert_throws.ts": "edddd86b39606c342164b49ad88dd39a26e72a26655e07545d172f164b617fa7",
"https://deno.land/std@0.213.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8",
"https://deno.land/std@0.213.0/assert/equal.ts": "fae5e8a52a11d3ac694bbe1a53e13a7969e3f60791262312e91a3e741ae519e2",
"https://deno.land/std@0.213.0/assert/fail.ts": "f310e51992bac8e54f5fd8e44d098638434b2edb802383690e0d7a9be1979f1c",
"https://deno.land/std@0.213.0/assert/mod.ts": "325df8c0683ad83a873b9691aa66b812d6275fc9fec0b2d180ac68a2c5efed3b",
"https://deno.land/std@0.213.0/assert/unimplemented.ts": "47ca67d1c6dc53abd0bd729b71a31e0825fc452dbcd4fde4ca06789d5644e7fd",
"https://deno.land/std@0.213.0/assert/unreachable.ts": "38cfecb95d8b06906022d2f9474794fca4161a994f83354fd079cac9032b5145",
"https://deno.land/std@0.213.0/fmt/colors.ts": "aeaee795471b56fc62a3cb2e174ed33e91551b535f44677f6320336aabb54fbb",
"https://deno.land/std@0.213.0/testing/_test_suite.ts": "f10a8a6338b60c403f07a76f3f46bdc9f1e1a820c0a1decddeb2949f7a8a0546",
"https://deno.land/std@0.213.0/testing/asserts.ts": "0cb9c745d9b157bed062a4aa8647168d2221f6456c385a548b0ca24de9e0f3ca",
"https://deno.land/std@0.213.0/testing/bdd.ts": "3cbd17bd35f629a76ce63446238dfb4632240dd46b3b205027c45fa3dd67e554",
"https://deno.land/std@0.216.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975",
"https://deno.land/std@0.216.0/assert/_diff.ts": "dcc63d94ca289aec80644030cf88ccbf7acaa6fbd7b0f22add93616b36593840",
"https://deno.land/std@0.216.0/assert/_format.ts": "0ba808961bf678437fb486b56405b6fefad2cf87b5809667c781ddee8c32aff4",
"https://deno.land/std@0.216.0/assert/assert.ts": "bec068b2fccdd434c138a555b19a2c2393b71dfaada02b7d568a01541e67cdc5",
"https://deno.land/std@0.216.0/assert/assert_almost_equals.ts": "8b96b7385cc117668b0720115eb6ee73d04c9bcb2f5d2344d674918c9113688f",
"https://deno.land/std@0.216.0/assert/assert_array_includes.ts": "1688d76317fd45b7e93ef9e2765f112fdf2b7c9821016cdfb380b9445374aed1",
"https://deno.land/std@0.216.0/assert/assert_equals.ts": "4497c56fe7d2993b0d447926702802fc0becb44e319079e8eca39b482ee01b4e",
"https://deno.land/std@0.216.0/assert/assert_exists.ts": "24a7bf965e634f909242cd09fbaf38bde6b791128ece08e33ab08586a7cc55c9",
"https://deno.land/std@0.216.0/assert/assert_false.ts": "6f382568e5128c0f855e5f7dbda8624c1ed9af4fcc33ef4a9afeeedcdce99769",
"https://deno.land/std@0.216.0/assert/assert_greater.ts": "4945cf5729f1a38874d7e589e0fe5cc5cd5abe5573ca2ddca9d3791aa891856c",
"https://deno.land/std@0.216.0/assert/assert_greater_or_equal.ts": "573ed8823283b8d94b7443eb69a849a3c369a8eb9666b2d1db50c33763a5d219",
"https://deno.land/std@0.216.0/assert/assert_instance_of.ts": "72dc1faff1e248692d873c89382fa1579dd7b53b56d52f37f9874a75b11ba444",
"https://deno.land/std@0.216.0/assert/assert_is_error.ts": "6596f2b5ba89ba2fe9b074f75e9318cda97a2381e59d476812e30077fbdb6ed2",
"https://deno.land/std@0.216.0/assert/assert_less.ts": "2b4b3fe7910f65f7be52212f19c3977ecb8ba5b2d6d0a296c83cde42920bb005",
"https://deno.land/std@0.216.0/assert/assert_less_or_equal.ts": "b93d212fe669fbde959e35b3437ac9a4468f2e6b77377e7b6ea2cfdd825d38a0",
"https://deno.land/std@0.216.0/assert/assert_match.ts": "ec2d9680ed3e7b9746ec57ec923a17eef6d476202f339ad91d22277d7f1d16e1",
"https://deno.land/std@0.216.0/assert/assert_not_equals.ts": "ac86413ab70ffb14fdfc41740ba579a983fe355ba0ce4a9ab685e6b8e7f6a250",
"https://deno.land/std@0.216.0/assert/assert_not_instance_of.ts": "8f720d92d83775c40b2542a8d76c60c2d4aeddaf8713c8d11df8984af2604931",
"https://deno.land/std@0.216.0/assert/assert_not_match.ts": "b4b7c77f146963e2b673c1ce4846473703409eb93f5ab0eb60f6e6f8aeffe39f",
"https://deno.land/std@0.216.0/assert/assert_not_strict_equals.ts": "da0b8ab60a45d5a9371088378e5313f624799470c3b54c76e8b8abeec40a77be",
"https://deno.land/std@0.216.0/assert/assert_object_match.ts": "e85e5eef62a56ce364c3afdd27978ccab979288a3e772e6855c270a7b118fa49",
"https://deno.land/std@0.216.0/assert/assert_rejects.ts": "e9e0c8d9c3e164c7ac962c37b3be50577c5a2010db107ed272c4c1afb1269f54",
"https://deno.land/std@0.216.0/assert/assert_strict_equals.ts": "0425a98f70badccb151644c902384c12771a93e65f8ff610244b8147b03a2366",
"https://deno.land/std@0.216.0/assert/assert_string_includes.ts": "dfb072a890167146f8e5bdd6fde887ce4657098e9f71f12716ef37f35fb6f4a7",
"https://deno.land/std@0.216.0/assert/assert_throws.ts": "edddd86b39606c342164b49ad88dd39a26e72a26655e07545d172f164b617fa7",
"https://deno.land/std@0.216.0/assert/assertion_error.ts": "9f689a101ee586c4ce92f52fa7ddd362e86434ffdf1f848e45987dc7689976b8",
"https://deno.land/std@0.216.0/assert/equal.ts": "fae5e8a52a11d3ac694bbe1a53e13a7969e3f60791262312e91a3e741ae519e2",
"https://deno.land/std@0.216.0/assert/fail.ts": "f310e51992bac8e54f5fd8e44d098638434b2edb802383690e0d7a9be1979f1c",
"https://deno.land/std@0.216.0/assert/mod.ts": "325df8c0683ad83a873b9691aa66b812d6275fc9fec0b2d180ac68a2c5efed3b",
"https://deno.land/std@0.216.0/assert/unimplemented.ts": "47ca67d1c6dc53abd0bd729b71a31e0825fc452dbcd4fde4ca06789d5644e7fd",
"https://deno.land/std@0.216.0/assert/unreachable.ts": "38cfecb95d8b06906022d2f9474794fca4161a994f83354fd079cac9032b5145",
"https://deno.land/std@0.216.0/fmt/colors.ts": "d239d84620b921ea520125d778947881f62c50e78deef2657073840b8af9559a",
"https://deno.land/x/code_block_writer@12.0.0/mod.ts": "2c3448060e47c9d08604c8f40dee34343f553f33edcdfebbf648442be33205e5",
"https://deno.land/x/code_block_writer@12.0.0/utils/string_utils.ts": "60cb4ec8bd335bf241ef785ccec51e809d576ff8e8d29da43d2273b69ce2a6ff",
"https://deno.land/x/deno_cache@0.6.2/auth_tokens.ts": "5d1d56474c54a9d152e44d43ea17c2e6a398dd1e9682c69811a313567c01ee1e",
Expand Down
8 changes: 4 additions & 4 deletions mod.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export { KyberError } from "./src/errors.ts";
export { Kyber512 } from "./src/kyber512.ts";
export { Kyber768 } from "./src/kyber768.ts";
export { Kyber1024 } from "./src/kyber1024.ts";
export { MlKemError } from "./src/errors.ts";
export { MlKem512 } from "./src/kyber512.ts";
export { MlKem768 } from "./src/kyber768.ts";
export { MlKem1024 } from "./src/kyber1024.ts";
7 changes: 7 additions & 0 deletions src/deps.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export {
sha3_256,
sha3_512,
shake128,
shake256,
// @ts-ignore: for "npm:"
} from "npm:@noble/hashes@1.3.3/sha3";
2 changes: 1 addition & 1 deletion src/errors.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* The base error class of kyber-ts.
*/
export class KyberError extends Error {
export class MlKemError extends Error {
public constructor(e: unknown) {
let message: string;

Expand Down
16 changes: 8 additions & 8 deletions src/kyber1024.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,35 @@ import { KyberBase } from "./kyberBase.ts";
import { byte, int16, uint16, uint32 } from "./utils.ts";

/**
* Represents the Kyber1024 class.
* Represents the MlKem1024 class.
*
* Kyber1024 is a subclass of KyberBase and implements specific methods for the Kyber-1024 parameter set.
* MlKem1024 is a subclass of KyberBase and implements specific methods for the Kyber-1024 parameter set.
*
* @example
*
* ```ts
* // import { Kyber1024 } from "crystals-kyber-js"; // Node.js
* import { Kyber1024 } from "http://deno.land/x/crystals_kyber/mod.ts"; // Deno
* // import { MlKem1024 } from "crystals-kyber-js"; // Node.js
* import { MlKem1024 } from "http://deno.land/x/crystals_kyber/mod.ts"; // Deno
*
* const recipient = new Kyber1024();
* const recipient = new MlKem1024();
* const [pkR, skR] = await recipient.generateKeyPair();

* const sender = new Kyber1024();
* const sender = new MlKem1024();
* const [ct, ssS] = await sender.encap(pkR);

* const ssR = await recipient.decap(ct, skR);
* // ssS === ssR
* ```
*/
export class Kyber1024 extends KyberBase {
export class MlKem1024 extends KyberBase {
protected _k = 4;
protected _du = 11;
protected _dv = 5;
protected _eta1 = 2;
protected _eta2 = 2;

/**
* Constructs a new instance of the Kyber1024 class.
* Constructs a new instance of the MlKem1024 class.
*/
constructor() {
super();
Expand Down
18 changes: 9 additions & 9 deletions src/kyber512.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,39 +8,39 @@ import { KyberBase } from "./kyberBase.ts";
import { byteopsLoad24, int16, prf } from "./utils.ts";

/**
* Represents the Kyber512 class.
* Represents the MlKem512 class.
*
* This class extends the KyberBase class and provides specific implementation for Kyber512.
* This class extends the KyberBase class and provides specific implementation for MlKem512.
*
* @remarks
*
* Kyber512 is a specific implementation of the Kyber key encapsulation mechanism.
* MlKem512 is a specific implementation of the Kyber key encapsulation mechanism.
*
* @example
*
* ```ts
* // import { Kyber512 } from "crystals-kyber-js"; // Node.js
* import { Kyber512 } from "http://deno.land/x/crystals_kyber/mod.ts"; // Deno
* // import { MlKem512 } from "crystals-kyber-js"; // Node.js
* import { MlKem512 } from "http://deno.land/x/crystals_kyber/mod.ts"; // Deno
*
* const recipient = new Kyber512();
* const recipient = new MlKem512();
* const [pkR, skR] = await recipient.generateKeyPair();
*
* const sender = new Kyber512();
* const sender = new MlKem512();
* const [ct, ssS] = await sender.encap(pkR);
*
* const ssR = await recipient.decap(ct, skR);
* // ssS === ssR
* ```
*/
export class Kyber512 extends KyberBase {
export class MlKem512 extends KyberBase {
protected _k = 2;
protected _du = 10;
protected _dv = 4;
protected _eta1 = 3;
protected _eta2 = 2;

/**
* Constructs a new instance of the Kyber512 class.
* Constructs a new instance of the MlKem512 class.
*/
constructor() {
super();
Expand Down
16 changes: 8 additions & 8 deletions src/kyber768.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,31 @@ import { N } from "./consts.ts";
import { KyberBase } from "./kyberBase.ts";

/**
* Represents the Kyber768 class, which extends the KyberBase class.
* Represents the MlKem768 class, which extends the KyberBase class.
*
* Kyber768 is a specific implementation of the Kyber key encapsulation mechanism.
* MlKem768 is a specific implementation of the Kyber key encapsulation mechanism.
*
* @remarks
*
* This class extends the KyberBase class and provides specific implementation for Kyber768.
* This class extends the KyberBase class and provides specific implementation for MlKem768.
*
* @example
*
* ```ts
* // import { Kyber768 } from "crystals-kyber-js"; // Node.js
* import { Kyber768 } from "http://deno.land/x/crystals_kyber/mod.ts"; // Deno
* // import { MlKem768 } from "crystals-kyber-js"; // Node.js
* import { MlKem768 } from "http://deno.land/x/crystals_kyber/mod.ts"; // Deno
*
* const recipient = new Kyber768();
* const recipient = new MlKem768();
* const [pkR, skR] = await recipient.generateKeyPair();
*
* const sender = new Kyber768();
* const sender = new MlKem768();
* const [ct, ssS] = await sender.encap(pkR);
*
* const ssR = await recipient.decap(ct, skR);
* // ssS === ssR
* ```
*/
export class Kyber768 extends KyberBase {
export class MlKem768 extends KyberBase {
protected _k = 3;
protected _du = 10;
protected _dv = 4;
Expand Down
Loading
Loading