Skip to content

Commit 27bb5e5

Browse files
committed
hybrid: rename exports; e.g. MLKEM768P256 to ml_kem768_p256. Keep old ones around until next major relase.
1 parent 01e15cf commit 27bb5e5

2 files changed

Lines changed: 30 additions & 18 deletions

File tree

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ import {
6767
slh_dsa_shake_256s,
6868
} from '@noble/post-quantum/slh-dsa.js';
6969
import {
70-
MLKEM768P256, MLKEM768X25519, MLKEM1024P384,
71-
XWing, KitchenSinkMLKEM768X25519,
70+
ml_kem768_x25519, ml_kem768_p256, ml_kem1024_p384,
71+
XWing, KitchenSink_ml_kem768_x25519,
7272
QSFMLKEM768P256, QSFMLKEM1024P384,
7373
} from '@noble/post-quantum/hybrid.js';
7474
```
@@ -173,16 +173,16 @@ SLH-DSA is slow: see [benchmarks](#speed) for key size & speed.
173173

174174
```js
175175
import {
176-
MLKEM768P256, MLKEM768X25519, MLKEM1024P384,
177-
XWing, KitchenSinkMLKEM768X25519,
176+
ml_kem768_x25519, ml_kem768_p256, ml_kem1024_p384,
177+
XWing, KitchenSink_ml_kem768_x25519,
178178
QSFMLKEM768P256, QSFMLKEM1024P384,
179179
} from '@noble/post-quantum/hybrid.js';
180180
```
181181

182-
- **MLKEM768X25519** (XWing): ML-KEM-768 + X25519 (CG Framework)
183-
- **MLKEM768P256**: ML-KEM-768 + P-256 (CG Framework)
184-
- **MLKEM1024P384**: ML-KEM-1024 + P-384 (CG Framework)
185-
- **KitchenSinkMLKEM768X25519**: ML-KEM-768 + X25519 with HKDF-SHA256 combiner
182+
- **ml_kem768_x25519** (XWing): ML-KEM-768 + X25519 (CG Framework)
183+
- **ml_kem768_p256**: ML-KEM-768 + P-256 (CG Framework)
184+
- **ml_kem1024_p384**: ML-KEM-1024 + P-384 (CG Framework)
185+
- **KitchenSink_ml_kem768_x25519**: ML-KEM-768 + X25519 with HKDF-SHA256 combiner
186186
- **QSFMLKEM768P256**: ML-KEM-768 + P-256 (QSF construction)
187187
- **QSFMLKEM1024P384**: ML-KEM-1024 + P-384 (QSF construction)
188188

src/hybrid.ts

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -310,23 +310,28 @@ export function QSF(label: string, pqc: KEM, curveKEM: KEM, xof: XOF, kdf: CHash
310310
);
311311
}
312312

313-
export const QSFMLKEM768P256: KEM = QSF(
313+
export const QSF_ml_kem768_p256: KEM = QSF(
314314
'QSF-KEM(ML-KEM-768,P-256)-XOF(SHAKE256)-KDF(SHA3-256)',
315315
ml_kem768,
316316
ecdhKem(p256, true),
317317
shake256,
318318
sha3_256
319319
);
320-
321-
export const QSFMLKEM1024P384: KEM = QSF(
320+
export const QSF_ml_kem1024_p384: KEM = QSF(
322321
'QSF-KEM(ML-KEM-1024,P-384)-XOF(SHAKE256)-KDF(SHA3-256)',
323322
ml_kem1024,
324323
ecdhKem(p384, true),
325324
shake256,
326325
sha3_256
327326
);
328327

329-
export function KitchenSink(label: string, pqc: KEM, curveKEM: KEM, xof: XOF, hash: CHash): KEM {
328+
export function createKitchenSink(
329+
label: string,
330+
pqc: KEM,
331+
curveKEM: KEM,
332+
xof: XOF,
333+
hash: CHash
334+
): KEM {
330335
ahash(xof);
331336
ahash(hash);
332337
return combineKEMS(
@@ -353,7 +358,7 @@ export function KitchenSink(label: string, pqc: KEM, curveKEM: KEM, xof: XOF, ha
353358
}
354359

355360
const x25519kem = ecdhKem(x25519);
356-
export const KitchenSinkMLKEM768X25519: KEM = KitchenSink(
361+
export const KitchenSink_ml_kem768_x25519: KEM = createKitchenSink(
357362
'KitchenSink-KEM(ML-KEM-768,X25519)-XOF(SHAKE256)-KDF(HKDF-SHA-256)',
358363
ml_kem768,
359364
x25519kem,
@@ -362,7 +367,7 @@ export const KitchenSinkMLKEM768X25519: KEM = KitchenSink(
362367
);
363368

364369
// Always X25519 and ML-KEM - 768, no point to export
365-
export const XWing: KEM = /* @__PURE__ */ (() =>
370+
export const ml_kem768_x25519: KEM = /* @__PURE__ */ (() =>
366371
combineKEMS(
367372
32,
368373
32,
@@ -373,8 +378,6 @@ export const XWing: KEM = /* @__PURE__ */ (() =>
373378
x25519kem
374379
))();
375380

376-
export const MLKEM768X25519: KEM = XWing;
377-
378381
function nistCurveKem(curve: ECDSA, scalarLen: number, elemLen: number, nseed: number): KEM {
379382
const Fn = curve.Point.Fn;
380383
if (!Fn) throw new Error('no Point.Fn');
@@ -443,8 +446,17 @@ function concreteHybridKem(label: string, mlkem: KEM, curve: ECDSA, nseed: numbe
443446
);
444447
}
445448

446-
export const MLKEM768P256: KEM = /* @__PURE__ */ (() =>
449+
export const ml_kem768_p256: KEM = /* @__PURE__ */ (() =>
447450
concreteHybridKem('MLKEM768-P256', ml_kem768, p256, 128))();
448451

449-
export const MLKEM1024P384: KEM = /* @__PURE__ */ (() =>
452+
export const ml_kem1024_p384: KEM = /* @__PURE__ */ (() =>
450453
concreteHybridKem('MLKEM1024-P384', ml_kem1024, p384, 48))();
454+
455+
// Legacy aliases
456+
export const XWing: KEM = ml_kem768_x25519;
457+
export const MLKEM768X25519: KEM = ml_kem768_x25519;
458+
export const MLKEM768P256: KEM = ml_kem768_p256;
459+
export const MLKEM1024P384: KEM = ml_kem1024_p384;
460+
export const QSFMLKEM768P256: KEM = QSF_ml_kem768_p256;
461+
export const QSFMLKEM1024P384: KEM = QSF_ml_kem1024_p384;
462+
export const KitchenSinkMLKEM768X25519: KEM = KitchenSink_ml_kem768_x25519;

0 commit comments

Comments
 (0)