@noble/post-quantum 0.3.1 → 0.4.0
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 +68 -28
- package/_crystals.d.ts +1 -0
- package/_crystals.d.ts.map +1 -1
- package/_crystals.js.map +1 -1
- package/esm/_crystals.d.ts +1 -0
- package/esm/_crystals.d.ts.map +1 -1
- package/esm/_crystals.js.map +1 -1
- package/esm/ml-dsa.d.ts.map +1 -1
- package/esm/ml-dsa.js +20 -14
- package/esm/ml-dsa.js.map +1 -1
- package/esm/slh-dsa.d.ts +3 -0
- package/esm/slh-dsa.d.ts.map +1 -1
- package/esm/slh-dsa.js +42 -14
- package/esm/slh-dsa.js.map +1 -1
- package/esm/utils.d.ts +3 -0
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +45 -1
- package/esm/utils.js.map +1 -1
- package/ml-dsa.d.ts.map +1 -1
- package/ml-dsa.js +23 -17
- package/ml-dsa.js.map +1 -1
- package/package.json +2 -1
- package/slh-dsa.d.ts +3 -0
- package/slh-dsa.d.ts.map +1 -1
- package/slh-dsa.js +57 -19
- package/slh-dsa.js.map +1 -1
- package/src/_crystals.ts +1 -0
- package/src/ml-dsa.ts +22 -14
- package/src/slh-dsa.ts +49 -14
- package/src/utils.ts +50 -0
- package/utils.d.ts +3 -0
- package/utils.d.ts.map +1 -1
- package/utils.js +47 -1
- package/utils.js.map +1 -1
package/utils.js
CHANGED
@@ -1,17 +1,22 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.utf8ToBytes = exports.concatBytes = exports.randomBytes = exports.ensureBytes = void 0;
|
3
|
+
exports.EMPTY = exports.utf8ToBytes = exports.concatBytes = exports.randomBytes = exports.ensureBytes = void 0;
|
4
4
|
exports.equalBytes = equalBytes;
|
5
5
|
exports.splitCoder = splitCoder;
|
6
6
|
exports.vecCoder = vecCoder;
|
7
7
|
exports.cleanBytes = cleanBytes;
|
8
8
|
exports.getMask = getMask;
|
9
|
+
exports.getMessage = getMessage;
|
10
|
+
exports.getMessagePrehash = getMessagePrehash;
|
9
11
|
/**
|
10
12
|
* Utilities for hex, bytearray and number handling.
|
11
13
|
* @module
|
12
14
|
*/
|
13
15
|
/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */
|
14
16
|
const _assert_1 = require("@noble/hashes/_assert");
|
17
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
18
|
+
const sha3_1 = require("@noble/hashes/sha3");
|
19
|
+
const sha512_1 = require("@noble/hashes/sha512");
|
15
20
|
const utils_1 = require("@noble/hashes/utils");
|
16
21
|
Object.defineProperty(exports, "concatBytes", { enumerable: true, get: function () { return utils_1.concatBytes; } });
|
17
22
|
Object.defineProperty(exports, "utf8ToBytes", { enumerable: true, get: function () { return utils_1.utf8ToBytes; } });
|
@@ -97,4 +102,45 @@ function cleanBytes(...list) {
|
|
97
102
|
function getMask(bits) {
|
98
103
|
return (1 << bits) - 1; // 4 -> 0b1111
|
99
104
|
}
|
105
|
+
exports.EMPTY = new Uint8Array(0);
|
106
|
+
function getMessage(msg, ctx = exports.EMPTY) {
|
107
|
+
(0, exports.ensureBytes)(msg);
|
108
|
+
(0, exports.ensureBytes)(ctx);
|
109
|
+
if (ctx.length > 255)
|
110
|
+
throw new Error('context should be less than 255 bytes');
|
111
|
+
return (0, utils_1.concatBytes)(new Uint8Array([0, ctx.length]), ctx, msg);
|
112
|
+
}
|
113
|
+
// OIDS from https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration
|
114
|
+
// TODO: maybe add 'OID' property to hashes themselves to improve tree-shaking?
|
115
|
+
const HASHES = {
|
116
|
+
'SHA2-256': { oid: (0, utils_1.hexToBytes)('0609608648016503040201'), hash: sha256_1.sha256 },
|
117
|
+
'SHA2-384': { oid: (0, utils_1.hexToBytes)('0609608648016503040202'), hash: sha512_1.sha384 },
|
118
|
+
'SHA2-512': { oid: (0, utils_1.hexToBytes)('0609608648016503040203'), hash: sha512_1.sha512 },
|
119
|
+
'SHA2-224': { oid: (0, utils_1.hexToBytes)('0609608648016503040204'), hash: sha256_1.sha224 },
|
120
|
+
'SHA2-512/224': { oid: (0, utils_1.hexToBytes)('0609608648016503040205'), hash: sha512_1.sha512_224 },
|
121
|
+
'SHA2-512/256': { oid: (0, utils_1.hexToBytes)('0609608648016503040206'), hash: sha512_1.sha512_256 },
|
122
|
+
'SHA3-224': { oid: (0, utils_1.hexToBytes)('0609608648016503040207'), hash: sha3_1.sha3_224 },
|
123
|
+
'SHA3-256': { oid: (0, utils_1.hexToBytes)('0609608648016503040208'), hash: sha3_1.sha3_256 },
|
124
|
+
'SHA3-384': { oid: (0, utils_1.hexToBytes)('0609608648016503040209'), hash: sha3_1.sha3_384 },
|
125
|
+
'SHA3-512': { oid: (0, utils_1.hexToBytes)('060960864801650304020A'), hash: sha3_1.sha3_512 },
|
126
|
+
'SHAKE-128': {
|
127
|
+
oid: (0, utils_1.hexToBytes)('060960864801650304020B'),
|
128
|
+
hash: (msg) => (0, sha3_1.shake128)(msg, { dkLen: 32 }),
|
129
|
+
},
|
130
|
+
'SHAKE-256': {
|
131
|
+
oid: (0, utils_1.hexToBytes)('060960864801650304020C'),
|
132
|
+
hash: (msg) => (0, sha3_1.shake256)(msg, { dkLen: 64 }),
|
133
|
+
},
|
134
|
+
};
|
135
|
+
function getMessagePrehash(hashName, msg, ctx = exports.EMPTY) {
|
136
|
+
(0, exports.ensureBytes)(msg);
|
137
|
+
(0, exports.ensureBytes)(ctx);
|
138
|
+
if (ctx.length > 255)
|
139
|
+
throw new Error('context should be less than 255 bytes');
|
140
|
+
if (!HASHES[hashName])
|
141
|
+
throw new Error('unknown hash: ' + hashName);
|
142
|
+
const { oid, hash } = HASHES[hashName];
|
143
|
+
const hashed = hash(msg);
|
144
|
+
return (0, utils_1.concatBytes)(new Uint8Array([1, ctx.length]), ctx, oid, hashed);
|
145
|
+
}
|
100
146
|
//# sourceMappingURL=utils.js.map
|
package/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"}
|