@noble/post-quantum 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -32
- package/_crystals.d.ts +17 -15
- package/_crystals.d.ts.map +1 -1
- package/_crystals.js +13 -3
- package/_crystals.js.map +1 -1
- package/falcon.d.ts +7 -7
- package/falcon.d.ts.map +1 -1
- package/falcon.js +27 -20
- package/falcon.js.map +1 -1
- package/hybrid.d.ts +23 -23
- package/hybrid.d.ts.map +1 -1
- package/hybrid.js +37 -28
- package/hybrid.js.map +1 -1
- package/index.js +8 -0
- package/index.js.map +1 -1
- package/ml-dsa.d.ts +7 -7
- package/ml-dsa.d.ts.map +1 -1
- package/ml-dsa.js +54 -28
- package/ml-dsa.js.map +1 -1
- package/ml-kem.d.ts +4 -4
- package/ml-kem.d.ts.map +1 -1
- package/ml-kem.js +43 -26
- package/ml-kem.js.map +1 -1
- package/package.json +5 -5
- package/slh-dsa.d.ts +21 -21
- package/slh-dsa.d.ts.map +1 -1
- package/slh-dsa.js +57 -35
- package/slh-dsa.js.map +1 -1
- package/src/_crystals.ts +44 -27
- package/src/falcon.ts +150 -117
- package/src/hybrid.ts +145 -96
- package/src/index.ts +8 -0
- package/src/ml-dsa.ts +124 -69
- package/src/ml-kem.ts +114 -85
- package/src/slh-dsa.ts +211 -132
- package/src/utils.ts +174 -34
- package/utils.d.ts +81 -22
- package/utils.d.ts.map +1 -1
- package/utils.js +30 -8
- package/utils.js.map +1 -1
package/utils.js
CHANGED
|
@@ -35,6 +35,8 @@ export { concatBytesDoc as concatBytes };
|
|
|
35
35
|
* Requires `globalThis.crypto.getRandomValues` and throws if that API is unavailable.
|
|
36
36
|
* `bytesLength` is validated by the upstream helper as a non-negative integer before allocation,
|
|
37
37
|
* so negative and fractional values both throw instead of truncating through JS `ToIndex`.
|
|
38
|
+
* @param bytesLength - Number of random bytes to generate.
|
|
39
|
+
* @returns Fresh random bytes.
|
|
38
40
|
* @example
|
|
39
41
|
* Generate a fresh random seed.
|
|
40
42
|
* ```ts
|
|
@@ -64,8 +66,7 @@ export function equalBytes(a, b) {
|
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
68
|
* Copies bytes into a fresh `Uint8Array`.
|
|
67
|
-
* Returns a detached plain `Uint8Array
|
|
68
|
-
* inputs because it delegates directly to `Uint8Array.from(...)`.
|
|
69
|
+
* Returns a detached plain `Uint8Array` after validating that the input is real bytes.
|
|
69
70
|
* @param bytes - Source bytes.
|
|
70
71
|
* @returns Copy of the input bytes.
|
|
71
72
|
* @example
|
|
@@ -75,7 +76,9 @@ export function equalBytes(a, b) {
|
|
|
75
76
|
* ```
|
|
76
77
|
*/
|
|
77
78
|
export function copyBytes(bytes) {
|
|
78
|
-
|
|
79
|
+
// `Uint8Array.from(...)` would also accept arrays / other typed arrays. Keep this helper strict
|
|
80
|
+
// because callers use it at byte-validation boundaries before mutating the detached copy.
|
|
81
|
+
return Uint8Array.from(abytes(bytes));
|
|
79
82
|
}
|
|
80
83
|
/**
|
|
81
84
|
* Byte-swaps each 64-bit lane in place.
|
|
@@ -83,6 +86,11 @@ export function copyBytes(bytes) {
|
|
|
83
86
|
* this boundary helper before aliasing them as host `Float64Array` lanes.
|
|
84
87
|
* @param arr - Byte buffer whose length is a multiple of 8.
|
|
85
88
|
* @returns The same buffer after in-place 64-bit lane byte swaps.
|
|
89
|
+
* @example
|
|
90
|
+
* Byte-swap one 64-bit lane in place.
|
|
91
|
+
* ```ts
|
|
92
|
+
* byteSwap64(new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]));
|
|
93
|
+
* ```
|
|
86
94
|
*/
|
|
87
95
|
export function byteSwap64(arr) {
|
|
88
96
|
const bytes = new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);
|
|
@@ -102,6 +110,18 @@ export function byteSwap64(arr) {
|
|
|
102
110
|
}
|
|
103
111
|
return arr;
|
|
104
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Byte-swaps 64-bit lanes on big-endian runtimes and returns the input unchanged on little-endian.
|
|
115
|
+
* This keeps Falcon's binary64 tables in canonical little-endian order before aliasing them as
|
|
116
|
+
* `Float64Array` lanes on the current host.
|
|
117
|
+
* @param arr - Buffer to pass through or swap in place.
|
|
118
|
+
* @returns The same buffer, normalized for Falcon's little-endian table layout.
|
|
119
|
+
* @example
|
|
120
|
+
* Normalize one host-endian buffer for Falcon's float tables.
|
|
121
|
+
* ```ts
|
|
122
|
+
* baswap64If(new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]));
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
105
125
|
export const baswap64If = isLE
|
|
106
126
|
? (arr) => arr
|
|
107
127
|
: byteSwap64;
|
|
@@ -170,7 +190,7 @@ export function validateSigOpts(opts) {
|
|
|
170
190
|
* ```
|
|
171
191
|
*/
|
|
172
192
|
export function splitCoder(label, ...lengths) {
|
|
173
|
-
const getLength = (c) =>
|
|
193
|
+
const getLength = (c) => typeof c === 'number' ? c : c.bytesLen;
|
|
174
194
|
const bytesLen = lengths.reduce((sum, a) => sum + getLength(a), 0);
|
|
175
195
|
return {
|
|
176
196
|
bytesLen,
|
|
@@ -222,7 +242,8 @@ export function splitCoder(label, ...lengths) {
|
|
|
222
242
|
* ```
|
|
223
243
|
*/
|
|
224
244
|
export function vecCoder(c, vecLen) {
|
|
225
|
-
const
|
|
245
|
+
const coder = c;
|
|
246
|
+
const bytesLen = vecLen * coder.bytesLen;
|
|
226
247
|
return {
|
|
227
248
|
bytesLen,
|
|
228
249
|
encode: (u) => {
|
|
@@ -230,7 +251,7 @@ export function vecCoder(c, vecLen) {
|
|
|
230
251
|
throw new RangeError(`vecCoder.encode: wrong length=${u.length}. Expected: ${vecLen}`);
|
|
231
252
|
const res = new Uint8Array(bytesLen);
|
|
232
253
|
for (let i = 0, pos = 0; i < u.length; i++) {
|
|
233
|
-
const b =
|
|
254
|
+
const b = coder.encode(u[i]);
|
|
234
255
|
res.set(b, pos);
|
|
235
256
|
b.fill(0); // clean
|
|
236
257
|
pos += b.length;
|
|
@@ -240,8 +261,8 @@ export function vecCoder(c, vecLen) {
|
|
|
240
261
|
decode: (a) => {
|
|
241
262
|
abytes_(a, bytesLen);
|
|
242
263
|
const r = [];
|
|
243
|
-
for (let i = 0; i < a.length; i +=
|
|
244
|
-
r.push(
|
|
264
|
+
for (let i = 0; i < a.length; i += coder.bytesLen)
|
|
265
|
+
r.push(coder.decode(a.subarray(i, i + coder.bytesLen)));
|
|
245
266
|
return r;
|
|
246
267
|
},
|
|
247
268
|
};
|
|
@@ -270,6 +291,7 @@ export function cleanBytes(...list) {
|
|
|
270
291
|
* Creates a 32-bit mask with the lowest `bits` bits set.
|
|
271
292
|
* @param bits - Number of low bits to keep.
|
|
272
293
|
* @returns Bit mask with `bits` ones.
|
|
294
|
+
* @throws On wrong argument ranges or values. {@link RangeError}
|
|
273
295
|
* @example
|
|
274
296
|
* Create a low-bit mask for packed-field operations.
|
|
275
297
|
* ```ts
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,4EAA4E;AAC5E,OAAO,EAGL,MAAM,EACN,MAAM,IAAI,OAAO,EACjB,WAAW,EACX,IAAI,EACJ,WAAW,IAAI,KAAK,GACrB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"}
|