@noble/curves 1.9.7 → 2.0.0-beta.2
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 +520 -505
- package/abstract/bls.d.ts +58 -120
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +108 -152
- package/abstract/bls.js.map +1 -1
- package/abstract/curve.d.ts +18 -54
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +30 -49
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +18 -77
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +68 -144
- package/abstract/edwards.js.map +1 -1
- package/abstract/fft.js +14 -27
- package/abstract/fft.js.map +1 -1
- package/abstract/hash-to-curve.d.ts +35 -47
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +42 -46
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/modular.d.ts +5 -17
- package/abstract/modular.d.ts.map +1 -1
- package/abstract/modular.js +170 -169
- package/abstract/modular.js.map +1 -1
- package/abstract/montgomery.d.ts +7 -12
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +22 -29
- package/abstract/montgomery.js.map +1 -1
- package/abstract/oprf.d.ts +282 -0
- package/abstract/oprf.d.ts.map +1 -0
- package/abstract/oprf.js +297 -0
- package/abstract/oprf.js.map +1 -0
- package/abstract/poseidon.d.ts.map +1 -1
- package/abstract/poseidon.js +26 -31
- package/abstract/poseidon.js.map +1 -1
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js +43 -19
- package/abstract/tower.js.map +1 -1
- package/abstract/weierstrass.d.ts +77 -168
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +184 -389
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts +5 -11
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +161 -181
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts +59 -11
- package/bn254.d.ts.map +1 -1
- package/bn254.js +69 -97
- package/bn254.js.map +1 -1
- package/ed25519.d.ts +33 -48
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +147 -161
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +27 -36
- package/ed448.d.ts.map +1 -1
- package/ed448.js +143 -164
- package/ed448.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +20 -4
- package/index.js.map +1 -1
- package/misc.d.ts +10 -14
- package/misc.d.ts.map +1 -1
- package/misc.js +53 -62
- package/misc.js.map +1 -1
- package/nist.d.ts +31 -16
- package/nist.d.ts.map +1 -1
- package/nist.js +75 -64
- package/nist.js.map +1 -1
- package/package.json +20 -234
- package/secp256k1.d.ts +17 -30
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +59 -73
- package/secp256k1.js.map +1 -1
- package/src/abstract/bls.ts +207 -354
- package/src/abstract/curve.ts +25 -84
- package/src/abstract/edwards.ts +68 -193
- package/src/abstract/hash-to-curve.ts +71 -85
- package/src/abstract/modular.ts +150 -134
- package/src/abstract/montgomery.ts +28 -35
- package/src/abstract/oprf.ts +600 -0
- package/src/abstract/poseidon.ts +6 -8
- package/src/abstract/tower.ts +0 -3
- package/src/abstract/weierstrass.ts +203 -525
- package/src/bls12-381.ts +133 -139
- package/src/bn254.ts +69 -93
- package/src/ed25519.ts +106 -133
- package/src/ed448.ts +111 -138
- package/src/index.ts +19 -3
- package/src/misc.ts +68 -51
- package/src/nist.ts +77 -70
- package/src/secp256k1.ts +46 -81
- package/src/utils.ts +67 -137
- package/src/webcrypto.ts +403 -0
- package/utils.d.ts +31 -38
- package/utils.d.ts.map +1 -1
- package/utils.js +66 -185
- package/utils.js.map +1 -1
- package/webcrypto.d.ts +99 -0
- package/webcrypto.d.ts.map +1 -0
- package/webcrypto.js +256 -0
- package/webcrypto.js.map +1 -0
- package/_shortw_utils.d.ts +0 -19
- package/_shortw_utils.d.ts.map +0 -1
- package/_shortw_utils.js +0 -20
- package/_shortw_utils.js.map +0 -1
- package/abstract/utils.d.ts +0 -78
- package/abstract/utils.d.ts.map +0 -1
- package/abstract/utils.js +0 -73
- package/abstract/utils.js.map +0 -1
- package/esm/_shortw_utils.d.ts +0 -19
- package/esm/_shortw_utils.d.ts.map +0 -1
- package/esm/_shortw_utils.js +0 -16
- package/esm/_shortw_utils.js.map +0 -1
- package/esm/abstract/bls.d.ts +0 -190
- package/esm/abstract/bls.d.ts.map +0 -1
- package/esm/abstract/bls.js +0 -408
- package/esm/abstract/bls.js.map +0 -1
- package/esm/abstract/curve.d.ts +0 -231
- package/esm/abstract/curve.d.ts.map +0 -1
- package/esm/abstract/curve.js +0 -465
- package/esm/abstract/curve.js.map +0 -1
- package/esm/abstract/edwards.d.ts +0 -243
- package/esm/abstract/edwards.d.ts.map +0 -1
- package/esm/abstract/edwards.js +0 -627
- package/esm/abstract/edwards.js.map +0 -1
- package/esm/abstract/fft.d.ts +0 -122
- package/esm/abstract/fft.d.ts.map +0 -1
- package/esm/abstract/fft.js +0 -425
- package/esm/abstract/fft.js.map +0 -1
- package/esm/abstract/hash-to-curve.d.ts +0 -102
- package/esm/abstract/hash-to-curve.d.ts.map +0 -1
- package/esm/abstract/hash-to-curve.js +0 -203
- package/esm/abstract/hash-to-curve.js.map +0 -1
- package/esm/abstract/modular.d.ts +0 -171
- package/esm/abstract/modular.d.ts.map +0 -1
- package/esm/abstract/modular.js +0 -530
- package/esm/abstract/modular.js.map +0 -1
- package/esm/abstract/montgomery.d.ts +0 -30
- package/esm/abstract/montgomery.d.ts.map +0 -1
- package/esm/abstract/montgomery.js +0 -157
- package/esm/abstract/montgomery.js.map +0 -1
- package/esm/abstract/poseidon.d.ts +0 -68
- package/esm/abstract/poseidon.d.ts.map +0 -1
- package/esm/abstract/poseidon.js +0 -296
- package/esm/abstract/poseidon.js.map +0 -1
- package/esm/abstract/tower.d.ts +0 -95
- package/esm/abstract/tower.d.ts.map +0 -1
- package/esm/abstract/tower.js +0 -714
- package/esm/abstract/tower.js.map +0 -1
- package/esm/abstract/utils.d.ts +0 -78
- package/esm/abstract/utils.d.ts.map +0 -1
- package/esm/abstract/utils.js +0 -70
- package/esm/abstract/utils.js.map +0 -1
- package/esm/abstract/weierstrass.d.ts +0 -416
- package/esm/abstract/weierstrass.d.ts.map +0 -1
- package/esm/abstract/weierstrass.js +0 -1413
- package/esm/abstract/weierstrass.js.map +0 -1
- package/esm/bls12-381.d.ts +0 -16
- package/esm/bls12-381.d.ts.map +0 -1
- package/esm/bls12-381.js +0 -705
- package/esm/bls12-381.js.map +0 -1
- package/esm/bn254.d.ts +0 -18
- package/esm/bn254.d.ts.map +0 -1
- package/esm/bn254.js +0 -214
- package/esm/bn254.js.map +0 -1
- package/esm/ed25519.d.ts +0 -106
- package/esm/ed25519.d.ts.map +0 -1
- package/esm/ed25519.js +0 -467
- package/esm/ed25519.js.map +0 -1
- package/esm/ed448.d.ts +0 -100
- package/esm/ed448.d.ts.map +0 -1
- package/esm/ed448.js +0 -459
- package/esm/ed448.js.map +0 -1
- package/esm/index.d.ts +0 -2
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -17
- package/esm/index.js.map +0 -1
- package/esm/jubjub.d.ts +0 -12
- package/esm/jubjub.d.ts.map +0 -1
- package/esm/jubjub.js +0 -12
- package/esm/jubjub.js.map +0 -1
- package/esm/misc.d.ts +0 -19
- package/esm/misc.d.ts.map +0 -1
- package/esm/misc.js +0 -109
- package/esm/misc.js.map +0 -1
- package/esm/nist.d.ts +0 -21
- package/esm/nist.d.ts.map +0 -1
- package/esm/nist.js +0 -132
- package/esm/nist.js.map +0 -1
- package/esm/p256.d.ts +0 -16
- package/esm/p256.d.ts.map +0 -1
- package/esm/p256.js +0 -16
- package/esm/p256.js.map +0 -1
- package/esm/p384.d.ts +0 -16
- package/esm/p384.d.ts.map +0 -1
- package/esm/p384.js +0 -16
- package/esm/p384.js.map +0 -1
- package/esm/p521.d.ts +0 -16
- package/esm/p521.d.ts.map +0 -1
- package/esm/p521.js +0 -16
- package/esm/p521.js.map +0 -1
- package/esm/package.json +0 -4
- package/esm/pasta.d.ts +0 -10
- package/esm/pasta.d.ts.map +0 -1
- package/esm/pasta.js +0 -10
- package/esm/pasta.js.map +0 -1
- package/esm/secp256k1.d.ts +0 -89
- package/esm/secp256k1.d.ts.map +0 -1
- package/esm/secp256k1.js +0 -294
- package/esm/secp256k1.js.map +0 -1
- package/esm/utils.d.ts +0 -110
- package/esm/utils.d.ts.map +0 -1
- package/esm/utils.js +0 -322
- package/esm/utils.js.map +0 -1
- package/jubjub.d.ts +0 -12
- package/jubjub.d.ts.map +0 -1
- package/jubjub.js +0 -15
- package/jubjub.js.map +0 -1
- package/p256.d.ts +0 -16
- package/p256.d.ts.map +0 -1
- package/p256.js +0 -13
- package/p256.js.map +0 -1
- package/p384.d.ts +0 -16
- package/p384.d.ts.map +0 -1
- package/p384.js +0 -13
- package/p384.js.map +0 -1
- package/p521.d.ts +0 -16
- package/p521.d.ts.map +0 -1
- package/p521.js +0 -13
- package/p521.js.map +0 -1
- package/pasta.d.ts +0 -10
- package/pasta.d.ts.map +0 -1
- package/pasta.js +0 -13
- package/pasta.js.map +0 -1
- package/src/_shortw_utils.ts +0 -21
- package/src/abstract/utils.ts +0 -80
- package/src/jubjub.ts +0 -12
- package/src/p256.ts +0 -15
- package/src/p384.ts +0 -15
- package/src/p521.ts +0 -15
- package/src/package.json +0 -3
- package/src/pasta.ts +0 -9
package/utils.js
CHANGED
|
@@ -1,136 +1,68 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.notImplemented = exports.bitMask = exports.utf8ToBytes = exports.randomBytes = exports.isBytes = exports.hexToBytes = exports.concatBytes = exports.bytesToUtf8 = exports.bytesToHex = exports.anumber = exports.abytes = void 0;
|
|
4
|
-
exports.abool = abool;
|
|
5
|
-
exports._abool2 = _abool2;
|
|
6
|
-
exports._abytes2 = _abytes2;
|
|
7
|
-
exports.numberToHexUnpadded = numberToHexUnpadded;
|
|
8
|
-
exports.hexToNumber = hexToNumber;
|
|
9
|
-
exports.bytesToNumberBE = bytesToNumberBE;
|
|
10
|
-
exports.bytesToNumberLE = bytesToNumberLE;
|
|
11
|
-
exports.numberToBytesBE = numberToBytesBE;
|
|
12
|
-
exports.numberToBytesLE = numberToBytesLE;
|
|
13
|
-
exports.numberToVarBytesBE = numberToVarBytesBE;
|
|
14
|
-
exports.ensureBytes = ensureBytes;
|
|
15
|
-
exports.equalBytes = equalBytes;
|
|
16
|
-
exports.copyBytes = copyBytes;
|
|
17
|
-
exports.asciiToBytes = asciiToBytes;
|
|
18
|
-
exports.inRange = inRange;
|
|
19
|
-
exports.aInRange = aInRange;
|
|
20
|
-
exports.bitLen = bitLen;
|
|
21
|
-
exports.bitGet = bitGet;
|
|
22
|
-
exports.bitSet = bitSet;
|
|
23
|
-
exports.createHmacDrbg = createHmacDrbg;
|
|
24
|
-
exports.validateObject = validateObject;
|
|
25
|
-
exports.isHash = isHash;
|
|
26
|
-
exports._validateObject = _validateObject;
|
|
27
|
-
exports.memoized = memoized;
|
|
28
1
|
/**
|
|
29
2
|
* Hex, bytes and number utilities.
|
|
30
3
|
* @module
|
|
31
4
|
*/
|
|
32
5
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
Object.defineProperty(exports, "abytes", { enumerable: true, get: function () { return utils_js_2.abytes; } });
|
|
36
|
-
Object.defineProperty(exports, "anumber", { enumerable: true, get: function () { return utils_js_2.anumber; } });
|
|
37
|
-
Object.defineProperty(exports, "bytesToHex", { enumerable: true, get: function () { return utils_js_2.bytesToHex; } });
|
|
38
|
-
Object.defineProperty(exports, "bytesToUtf8", { enumerable: true, get: function () { return utils_js_2.bytesToUtf8; } });
|
|
39
|
-
Object.defineProperty(exports, "concatBytes", { enumerable: true, get: function () { return utils_js_2.concatBytes; } });
|
|
40
|
-
Object.defineProperty(exports, "hexToBytes", { enumerable: true, get: function () { return utils_js_2.hexToBytes; } });
|
|
41
|
-
Object.defineProperty(exports, "isBytes", { enumerable: true, get: function () { return utils_js_2.isBytes; } });
|
|
42
|
-
Object.defineProperty(exports, "randomBytes", { enumerable: true, get: function () { return utils_js_2.randomBytes; } });
|
|
43
|
-
Object.defineProperty(exports, "utf8ToBytes", { enumerable: true, get: function () { return utils_js_2.utf8ToBytes; } });
|
|
6
|
+
import { abytes as abytes_, anumber, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, } from '@noble/hashes/utils.js';
|
|
7
|
+
export { abytes, anumber, bytesToHex, concatBytes, hexToBytes, isBytes, randomBytes, } from '@noble/hashes/utils.js';
|
|
44
8
|
const _0n = /* @__PURE__ */ BigInt(0);
|
|
45
9
|
const _1n = /* @__PURE__ */ BigInt(1);
|
|
46
|
-
function abool(
|
|
47
|
-
if (typeof value !== 'boolean')
|
|
48
|
-
throw new Error(title + ' boolean expected, got ' + value);
|
|
49
|
-
}
|
|
50
|
-
// tmp name until v2
|
|
51
|
-
function _abool2(value, title = '') {
|
|
10
|
+
export function abool(value, title = '') {
|
|
52
11
|
if (typeof value !== 'boolean') {
|
|
53
|
-
const prefix = title && `"${title}"`;
|
|
12
|
+
const prefix = title && `"${title}" `;
|
|
54
13
|
throw new Error(prefix + 'expected boolean, got type=' + typeof value);
|
|
55
14
|
}
|
|
56
15
|
return value;
|
|
57
16
|
}
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
17
|
+
// Used in weierstrass, der
|
|
18
|
+
function abignumber(n) {
|
|
19
|
+
if (typeof n === 'bigint') {
|
|
20
|
+
if (!isPosBig(n))
|
|
21
|
+
throw new Error('positive bigint expected, got ' + n);
|
|
22
|
+
}
|
|
23
|
+
else
|
|
24
|
+
anumber(n);
|
|
25
|
+
return n;
|
|
26
|
+
}
|
|
27
|
+
export function asafenumber(value, title = '') {
|
|
28
|
+
if (!Number.isSafeInteger(value)) {
|
|
65
29
|
const prefix = title && `"${title}" `;
|
|
66
|
-
|
|
67
|
-
const got = bytes ? `length=${len}` : `type=${typeof value}`;
|
|
68
|
-
throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);
|
|
30
|
+
throw new Error(prefix + 'expected safe integer, got type=' + typeof value);
|
|
69
31
|
}
|
|
70
|
-
return value;
|
|
71
32
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const hex = num.toString(16);
|
|
33
|
+
export function numberToHexUnpadded(num) {
|
|
34
|
+
const hex = abignumber(num).toString(16);
|
|
75
35
|
return hex.length & 1 ? '0' + hex : hex;
|
|
76
36
|
}
|
|
77
|
-
function hexToNumber(hex) {
|
|
37
|
+
export function hexToNumber(hex) {
|
|
78
38
|
if (typeof hex !== 'string')
|
|
79
39
|
throw new Error('hex string expected, got ' + typeof hex);
|
|
80
40
|
return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian
|
|
81
41
|
}
|
|
82
42
|
// BE: Big Endian, LE: Little Endian
|
|
83
|
-
function bytesToNumberBE(bytes) {
|
|
84
|
-
return hexToNumber((
|
|
85
|
-
}
|
|
86
|
-
function bytesToNumberLE(bytes) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
43
|
+
export function bytesToNumberBE(bytes) {
|
|
44
|
+
return hexToNumber(bytesToHex_(bytes));
|
|
45
|
+
}
|
|
46
|
+
export function bytesToNumberLE(bytes) {
|
|
47
|
+
return hexToNumber(bytesToHex_(copyBytes(abytes_(bytes)).reverse()));
|
|
48
|
+
}
|
|
49
|
+
export function numberToBytesBE(n, len) {
|
|
50
|
+
anumber(len);
|
|
51
|
+
n = abignumber(n);
|
|
52
|
+
const res = hexToBytes_(n.toString(16).padStart(len * 2, '0'));
|
|
53
|
+
if (res.length !== len)
|
|
54
|
+
throw new Error('number too large');
|
|
55
|
+
return res;
|
|
92
56
|
}
|
|
93
|
-
function numberToBytesLE(n, len) {
|
|
57
|
+
export function numberToBytesLE(n, len) {
|
|
94
58
|
return numberToBytesBE(n, len).reverse();
|
|
95
59
|
}
|
|
96
60
|
// Unpadded, rarely used
|
|
97
|
-
function numberToVarBytesBE(n) {
|
|
98
|
-
return (
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Takes hex string or Uint8Array, converts to Uint8Array.
|
|
102
|
-
* Validates output length.
|
|
103
|
-
* Will throw error for other types.
|
|
104
|
-
* @param title descriptive title for an error e.g. 'secret key'
|
|
105
|
-
* @param hex hex string or Uint8Array
|
|
106
|
-
* @param expectedLength optional, will compare to result array's length
|
|
107
|
-
* @returns
|
|
108
|
-
*/
|
|
109
|
-
function ensureBytes(title, hex, expectedLength) {
|
|
110
|
-
let res;
|
|
111
|
-
if (typeof hex === 'string') {
|
|
112
|
-
try {
|
|
113
|
-
res = (0, utils_js_1.hexToBytes)(hex);
|
|
114
|
-
}
|
|
115
|
-
catch (e) {
|
|
116
|
-
throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else if ((0, utils_js_1.isBytes)(hex)) {
|
|
120
|
-
// Uint8Array.from() instead of hash.slice() because node.js Buffer
|
|
121
|
-
// is instance of Uint8Array, and its slice() creates **mutable** copy
|
|
122
|
-
res = Uint8Array.from(hex);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
throw new Error(title + ' must be hex string or Uint8Array');
|
|
126
|
-
}
|
|
127
|
-
const len = res.length;
|
|
128
|
-
if (typeof expectedLength === 'number' && len !== expectedLength)
|
|
129
|
-
throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);
|
|
130
|
-
return res;
|
|
61
|
+
export function numberToVarBytesBE(n) {
|
|
62
|
+
return hexToBytes_(numberToHexUnpadded(abignumber(n)));
|
|
131
63
|
}
|
|
132
64
|
// Compares 2 u8a-s in kinda constant time
|
|
133
|
-
function equalBytes(a, b) {
|
|
65
|
+
export function equalBytes(a, b) {
|
|
134
66
|
if (a.length !== b.length)
|
|
135
67
|
return false;
|
|
136
68
|
let diff = 0;
|
|
@@ -142,7 +74,7 @@ function equalBytes(a, b) {
|
|
|
142
74
|
* Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,
|
|
143
75
|
* and Buffer#slice creates mutable copy. Never use Buffers!
|
|
144
76
|
*/
|
|
145
|
-
function copyBytes(bytes) {
|
|
77
|
+
export function copyBytes(bytes) {
|
|
146
78
|
return Uint8Array.from(bytes);
|
|
147
79
|
}
|
|
148
80
|
/**
|
|
@@ -150,7 +82,7 @@ function copyBytes(bytes) {
|
|
|
150
82
|
* Should be safe to use for things expected to be ASCII.
|
|
151
83
|
* Returns exact same result as utf8ToBytes for ASCII or throws.
|
|
152
84
|
*/
|
|
153
|
-
function asciiToBytes(ascii) {
|
|
85
|
+
export function asciiToBytes(ascii) {
|
|
154
86
|
return Uint8Array.from(ascii, (c, i) => {
|
|
155
87
|
const charCode = c.charCodeAt(0);
|
|
156
88
|
if (c.length !== 1 || charCode > 127) {
|
|
@@ -159,18 +91,9 @@ function asciiToBytes(ascii) {
|
|
|
159
91
|
return charCode;
|
|
160
92
|
});
|
|
161
93
|
}
|
|
162
|
-
/**
|
|
163
|
-
* @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
|
|
164
|
-
*/
|
|
165
|
-
// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;
|
|
166
|
-
/**
|
|
167
|
-
* Converts bytes to string using UTF8 encoding.
|
|
168
|
-
* @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'
|
|
169
|
-
*/
|
|
170
|
-
// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;
|
|
171
94
|
// Is positive bigint
|
|
172
95
|
const isPosBig = (n) => typeof n === 'bigint' && _0n <= n;
|
|
173
|
-
function inRange(n, min, max) {
|
|
96
|
+
export function inRange(n, min, max) {
|
|
174
97
|
return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;
|
|
175
98
|
}
|
|
176
99
|
/**
|
|
@@ -178,7 +101,7 @@ function inRange(n, min, max) {
|
|
|
178
101
|
* @example
|
|
179
102
|
* aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)
|
|
180
103
|
*/
|
|
181
|
-
function aInRange(title, n, min, max) {
|
|
104
|
+
export function aInRange(title, n, min, max) {
|
|
182
105
|
// Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?
|
|
183
106
|
// consider P=256n, min=0n, max=P
|
|
184
107
|
// - a for min=0 would require -1: `inRange('x', x, -1n, P)`
|
|
@@ -193,7 +116,7 @@ function aInRange(title, n, min, max) {
|
|
|
193
116
|
* Same as `n.toString(2).length`
|
|
194
117
|
* TODO: merge with nLength in modular
|
|
195
118
|
*/
|
|
196
|
-
function bitLen(n) {
|
|
119
|
+
export function bitLen(n) {
|
|
197
120
|
let len;
|
|
198
121
|
for (len = 0; n > _0n; n >>= _1n, len += 1)
|
|
199
122
|
;
|
|
@@ -204,21 +127,20 @@ function bitLen(n) {
|
|
|
204
127
|
* NOTE: first bit position is 0 (same as arrays)
|
|
205
128
|
* Same as `!!+Array.from(n.toString(2)).reverse()[pos]`
|
|
206
129
|
*/
|
|
207
|
-
function bitGet(n, pos) {
|
|
130
|
+
export function bitGet(n, pos) {
|
|
208
131
|
return (n >> BigInt(pos)) & _1n;
|
|
209
132
|
}
|
|
210
133
|
/**
|
|
211
134
|
* Sets single bit at position.
|
|
212
135
|
*/
|
|
213
|
-
function bitSet(n, pos, value) {
|
|
136
|
+
export function bitSet(n, pos, value) {
|
|
214
137
|
return n | ((value ? _1n : _0n) << BigInt(pos));
|
|
215
138
|
}
|
|
216
139
|
/**
|
|
217
140
|
* Calculate mask for N bits. Not using ** operator with bigints because of old engines.
|
|
218
141
|
* Same as BigInt(`0b${Array(i).fill('1').join('')}`)
|
|
219
142
|
*/
|
|
220
|
-
const bitMask = (n) => (_1n << BigInt(n)) - _1n;
|
|
221
|
-
exports.bitMask = bitMask;
|
|
143
|
+
export const bitMask = (n) => (_1n << BigInt(n)) - _1n;
|
|
222
144
|
/**
|
|
223
145
|
* Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.
|
|
224
146
|
* @returns function that will call DRBG until 2nd arg returns something meaningful
|
|
@@ -226,16 +148,17 @@ exports.bitMask = bitMask;
|
|
|
226
148
|
* const drbg = createHmacDRBG<Key>(32, 32, hmac);
|
|
227
149
|
* drbg(seed, bytesToKey); // bytesToKey must return Key or undefined
|
|
228
150
|
*/
|
|
229
|
-
function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (typeof qByteLen !== 'number' || qByteLen < 2)
|
|
233
|
-
throw new Error('qByteLen must be a number');
|
|
151
|
+
export function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
152
|
+
anumber(hashLen, 'hashLen');
|
|
153
|
+
anumber(qByteLen, 'qByteLen');
|
|
234
154
|
if (typeof hmacFn !== 'function')
|
|
235
155
|
throw new Error('hmacFn must be a function');
|
|
236
|
-
// Step B, Step C: set hashLen to 8*ceil(hlen/8)
|
|
237
156
|
const u8n = (len) => new Uint8Array(len); // creates Uint8Array
|
|
238
|
-
const
|
|
157
|
+
const NULL = u8n(0);
|
|
158
|
+
const byte0 = Uint8Array.of(0x00);
|
|
159
|
+
const byte1 = Uint8Array.of(0x01);
|
|
160
|
+
const _maxDrbgIters = 1000;
|
|
161
|
+
// Step B, Step C: set hashLen to 8*ceil(hlen/8)
|
|
239
162
|
let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.
|
|
240
163
|
let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same
|
|
241
164
|
let i = 0; // Iterations counter, will throw when over 1000
|
|
@@ -244,20 +167,20 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
|
244
167
|
k.fill(0);
|
|
245
168
|
i = 0;
|
|
246
169
|
};
|
|
247
|
-
const h = (...
|
|
248
|
-
const reseed = (seed =
|
|
170
|
+
const h = (...msgs) => hmacFn(k, concatBytes_(v, ...msgs)); // hmac(k)(v, ...values)
|
|
171
|
+
const reseed = (seed = NULL) => {
|
|
249
172
|
// HMAC-DRBG reseed() function. Steps D-G
|
|
250
|
-
k = h(
|
|
173
|
+
k = h(byte0, seed); // k = hmac(k || v || 0x00 || seed)
|
|
251
174
|
v = h(); // v = hmac(k || v)
|
|
252
175
|
if (seed.length === 0)
|
|
253
176
|
return;
|
|
254
|
-
k = h(
|
|
177
|
+
k = h(byte1, seed); // k = hmac(k || v || 0x01 || seed)
|
|
255
178
|
v = h(); // v = hmac(k || v)
|
|
256
179
|
};
|
|
257
180
|
const gen = () => {
|
|
258
181
|
// HMAC-DRBG generate() function
|
|
259
|
-
if (i++ >=
|
|
260
|
-
throw new Error('drbg: tried
|
|
182
|
+
if (i++ >= _maxDrbgIters)
|
|
183
|
+
throw new Error('drbg: tried max amount of iterations');
|
|
261
184
|
let len = 0;
|
|
262
185
|
const out = [];
|
|
263
186
|
while (len < qByteLen) {
|
|
@@ -266,7 +189,7 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
|
266
189
|
out.push(sl);
|
|
267
190
|
len += v.length;
|
|
268
191
|
}
|
|
269
|
-
return (
|
|
192
|
+
return concatBytes_(...out);
|
|
270
193
|
};
|
|
271
194
|
const genUntil = (seed, pred) => {
|
|
272
195
|
reset();
|
|
@@ -279,49 +202,7 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
|
279
202
|
};
|
|
280
203
|
return genUntil;
|
|
281
204
|
}
|
|
282
|
-
|
|
283
|
-
const validatorFns = {
|
|
284
|
-
bigint: (val) => typeof val === 'bigint',
|
|
285
|
-
function: (val) => typeof val === 'function',
|
|
286
|
-
boolean: (val) => typeof val === 'boolean',
|
|
287
|
-
string: (val) => typeof val === 'string',
|
|
288
|
-
stringOrUint8Array: (val) => typeof val === 'string' || (0, utils_js_1.isBytes)(val),
|
|
289
|
-
isSafeInteger: (val) => Number.isSafeInteger(val),
|
|
290
|
-
array: (val) => Array.isArray(val),
|
|
291
|
-
field: (val, object) => object.Fp.isValid(val),
|
|
292
|
-
hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),
|
|
293
|
-
};
|
|
294
|
-
// type Record<K extends string | number | symbol, T> = { [P in K]: T; }
|
|
295
|
-
function validateObject(object, validators, optValidators = {}) {
|
|
296
|
-
const checkField = (fieldName, type, isOptional) => {
|
|
297
|
-
const checkVal = validatorFns[type];
|
|
298
|
-
if (typeof checkVal !== 'function')
|
|
299
|
-
throw new Error('invalid validator function');
|
|
300
|
-
const val = object[fieldName];
|
|
301
|
-
if (isOptional && val === undefined)
|
|
302
|
-
return;
|
|
303
|
-
if (!checkVal(val, object)) {
|
|
304
|
-
throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);
|
|
305
|
-
}
|
|
306
|
-
};
|
|
307
|
-
for (const [fieldName, type] of Object.entries(validators))
|
|
308
|
-
checkField(fieldName, type, false);
|
|
309
|
-
for (const [fieldName, type] of Object.entries(optValidators))
|
|
310
|
-
checkField(fieldName, type, true);
|
|
311
|
-
return object;
|
|
312
|
-
}
|
|
313
|
-
// validate type tests
|
|
314
|
-
// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };
|
|
315
|
-
// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!
|
|
316
|
-
// // Should fail type-check
|
|
317
|
-
// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });
|
|
318
|
-
// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });
|
|
319
|
-
// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });
|
|
320
|
-
// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });
|
|
321
|
-
function isHash(val) {
|
|
322
|
-
return typeof val === 'function' && Number.isSafeInteger(val.outputLen);
|
|
323
|
-
}
|
|
324
|
-
function _validateObject(object, fields, optFields = {}) {
|
|
205
|
+
export function validateObject(object, fields = {}, optFields = {}) {
|
|
325
206
|
if (!object || typeof object !== 'object')
|
|
326
207
|
throw new Error('expected valid options object');
|
|
327
208
|
function checkField(fieldName, expectedType, isOpt) {
|
|
@@ -332,21 +213,21 @@ function _validateObject(object, fields, optFields = {}) {
|
|
|
332
213
|
if (current !== expectedType || val === null)
|
|
333
214
|
throw new Error(`param "${fieldName}" is invalid: expected ${expectedType}, got ${current}`);
|
|
334
215
|
}
|
|
335
|
-
Object.entries(
|
|
336
|
-
|
|
216
|
+
const iter = (f, isOpt) => Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt));
|
|
217
|
+
iter(fields, false);
|
|
218
|
+
iter(optFields, true);
|
|
337
219
|
}
|
|
338
220
|
/**
|
|
339
221
|
* throws not implemented error
|
|
340
222
|
*/
|
|
341
|
-
const notImplemented = () => {
|
|
223
|
+
export const notImplemented = () => {
|
|
342
224
|
throw new Error('not implemented');
|
|
343
225
|
};
|
|
344
|
-
exports.notImplemented = notImplemented;
|
|
345
226
|
/**
|
|
346
227
|
* Memoizes (caches) computation result.
|
|
347
228
|
* Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.
|
|
348
229
|
*/
|
|
349
|
-
function memoized(fn) {
|
|
230
|
+
export function memoized(fn) {
|
|
350
231
|
const map = new WeakMap();
|
|
351
232
|
return (arg, ...args) => {
|
|
352
233
|
const val = map.get(arg);
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"}
|
package/webcrypto.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Friendly wrapper over elliptic curves from built-in WebCrypto. Experimental: API may change.
|
|
3
|
+
|
|
4
|
+
# WebCrypto issues
|
|
5
|
+
|
|
6
|
+
## No way to get public keys
|
|
7
|
+
|
|
8
|
+
- Export of raw secret key is prohibited by spec:
|
|
9
|
+
- https://w3c.github.io/webcrypto/#ecdsa-operations-export-key
|
|
10
|
+
-> "If format is "raw":" -> "If the [[type]] internal slot of key is not "public",
|
|
11
|
+
then throw an InvalidAccessError."
|
|
12
|
+
- Import of raw secret keys is prohibited by spec:
|
|
13
|
+
- https://w3c.github.io/webcrypto/#ecdsa-operations-import-key
|
|
14
|
+
-> "If format is "raw":" -> "If usages contains a value which is not "verify"
|
|
15
|
+
then throw a SyntaxError."
|
|
16
|
+
- SPKI (Simple public-key infrastructure) is public-key-only
|
|
17
|
+
- PKCS8 is secret-key-only
|
|
18
|
+
- No way to get public key from secret key, but we convert to jwk and then create it manually, since jwk secret key is priv+pub.
|
|
19
|
+
- Noble supports generating keys for both sign, verify & getSharedSecret,
|
|
20
|
+
but JWK key includes usage, which forces us to patch it (non-JWK is ok)
|
|
21
|
+
- We have import/export for 'raw', but it doesn't work in Firefox / Safari
|
|
22
|
+
|
|
23
|
+
## Point encoding
|
|
24
|
+
|
|
25
|
+
- Raw export of public points returns uncompressed points,
|
|
26
|
+
but this is implementation specific and not much we can do there.
|
|
27
|
+
- `getSharedSecret` differs for p256, p384, p521:
|
|
28
|
+
Noble returns 33-byte output (y-parity + x coordinate),
|
|
29
|
+
while in WebCrypto returns 32-byte output (x coordinate)
|
|
30
|
+
- `getSharedSecret` identical for X25519, X448
|
|
31
|
+
|
|
32
|
+
## Availability
|
|
33
|
+
|
|
34
|
+
Node.js additionally supports ed448.
|
|
35
|
+
There seems no reasonable way to check for availability, other than actually calling methods.
|
|
36
|
+
|
|
37
|
+
* @module
|
|
38
|
+
*/
|
|
39
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
40
|
+
/** Raw type */
|
|
41
|
+
declare const TYPE_RAW = "raw";
|
|
42
|
+
declare const TYPE_JWK = "jwk";
|
|
43
|
+
declare const TYPE_SPKI = "spki";
|
|
44
|
+
declare const TYPE_PKCS = "pkcs8";
|
|
45
|
+
export type WebCryptoFormat = typeof TYPE_RAW | typeof TYPE_JWK | typeof TYPE_SPKI | typeof TYPE_PKCS;
|
|
46
|
+
/** WebCrypto keys can be in raw, jwk, pkcs8/spki formats. Raw is internal and fragile. */
|
|
47
|
+
export type WebCryptoOpts = {
|
|
48
|
+
formatSec?: WebCryptoFormat;
|
|
49
|
+
formatPub?: WebCryptoFormat;
|
|
50
|
+
};
|
|
51
|
+
type JsonWebKey = {
|
|
52
|
+
crv?: string;
|
|
53
|
+
d?: string;
|
|
54
|
+
kty?: string;
|
|
55
|
+
x?: string;
|
|
56
|
+
y?: string;
|
|
57
|
+
[key: string]: unknown;
|
|
58
|
+
};
|
|
59
|
+
type Key = JsonWebKey | Uint8Array;
|
|
60
|
+
type WebCryptoBaseCurve = {
|
|
61
|
+
name: string;
|
|
62
|
+
isSupported(): Promise<boolean>;
|
|
63
|
+
keygen(): Promise<{
|
|
64
|
+
secretKey: Uint8Array;
|
|
65
|
+
publicKey: Uint8Array;
|
|
66
|
+
}>;
|
|
67
|
+
getPublicKey(secretKey: Key, opts?: WebCryptoOpts): Promise<Key>;
|
|
68
|
+
utils: {
|
|
69
|
+
randomSecretKey: (format?: WebCryptoFormat) => Promise<Key>;
|
|
70
|
+
convertSecretKey: (key: Key, inFormat?: WebCryptoFormat, outFormat?: WebCryptoFormat) => Promise<Key>;
|
|
71
|
+
convertPublicKey: (key: Key, inFormat?: WebCryptoFormat, outFormat?: WebCryptoFormat) => Promise<Key>;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
export type WebCryptoSigner = {
|
|
75
|
+
sign(message: Uint8Array, secretKey: Key, opts?: WebCryptoOpts): Promise<Uint8Array>;
|
|
76
|
+
verify(signature: Uint8Array, message: Uint8Array, publicKey: Key, opts?: WebCryptoOpts): Promise<boolean>;
|
|
77
|
+
};
|
|
78
|
+
export type WebCryptoECDH = {
|
|
79
|
+
getSharedSecret(secA: Uint8Array, pubB: Uint8Array, opts?: WebCryptoOpts): Promise<Uint8Array>;
|
|
80
|
+
};
|
|
81
|
+
export type WebCryptoECDSA = WebCryptoBaseCurve & WebCryptoSigner & WebCryptoECDH;
|
|
82
|
+
export type WebCryptoEdDSA = WebCryptoBaseCurve & WebCryptoSigner;
|
|
83
|
+
export type WebCryptoMontgomery = WebCryptoBaseCurve & WebCryptoECDH;
|
|
84
|
+
/** Friendly wrapper over built-in WebCrypto NIST P-256 (secp256r1). */
|
|
85
|
+
export declare const p256: WebCryptoECDSA;
|
|
86
|
+
/** Friendly wrapper over built-in WebCrypto NIST P-384 (secp384r1). */
|
|
87
|
+
export declare const p384: WebCryptoECDSA;
|
|
88
|
+
/** Friendly wrapper over built-in WebCrypto NIST P-521 (secp521r1). */
|
|
89
|
+
export declare const p521: WebCryptoECDSA;
|
|
90
|
+
/** Friendly wrapper over built-in WebCrypto ed25519. */
|
|
91
|
+
export declare const ed25519: WebCryptoEdDSA;
|
|
92
|
+
/** Friendly wrapper over built-in WebCrypto ed448. */
|
|
93
|
+
export declare const ed448: WebCryptoEdDSA;
|
|
94
|
+
/** Friendly wrapper over built-in WebCrypto x25519 (ECDH over Curve25519). */
|
|
95
|
+
export declare const x25519: WebCryptoMontgomery;
|
|
96
|
+
/** Friendly wrapper over built-in WebCrypto x448 (ECDH over Curve448). */
|
|
97
|
+
export declare const x448: WebCryptoMontgomery;
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=webcrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webcrypto.d.ts","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"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"}
|