@noble/curves 1.9.5 → 2.0.0-beta.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 +267 -421
- package/abstract/bls.d.ts +49 -111
- 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 +7 -48
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +22 -47
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +17 -68
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +98 -175
- 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 +11 -24
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +30 -35
- 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 +166 -167
- package/abstract/modular.js.map +1 -1
- package/abstract/montgomery.d.ts +4 -9
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +17 -20
- 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.js +20 -24
- package/abstract/poseidon.js.map +1 -1
- package/abstract/tower.d.ts +9 -7
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js +600 -364
- package/abstract/tower.js.map +1 -1
- package/abstract/weierstrass.d.ts +12 -145
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +153 -377
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts +2 -2
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +174 -216
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts +58 -10
- package/bn254.d.ts.map +1 -1
- package/bn254.js +70 -130
- package/bn254.js.map +1 -1
- package/ed25519.d.ts +12 -31
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +104 -146
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +14 -33
- package/ed448.d.ts.map +1 -1
- package/ed448.js +105 -132
- package/ed448.js.map +1 -1
- package/index.js +1 -1
- package/misc.d.ts +10 -14
- package/misc.d.ts.map +1 -1
- package/misc.js +51 -60
- package/misc.js.map +1 -1
- package/nist.d.ts +11 -14
- package/nist.d.ts.map +1 -1
- package/nist.js +46 -55
- package/nist.js.map +1 -1
- package/package.json +9 -224
- package/secp256k1.d.ts +7 -23
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +72 -83
- package/secp256k1.js.map +1 -1
- package/src/abstract/bls.ts +197 -344
- package/src/abstract/curve.ts +10 -83
- package/src/abstract/edwards.ts +96 -223
- package/src/abstract/hash-to-curve.ts +32 -45
- package/src/abstract/modular.ts +144 -130
- package/src/abstract/montgomery.ts +21 -22
- package/src/abstract/oprf.ts +600 -0
- package/src/abstract/tower.ts +627 -382
- package/src/abstract/weierstrass.ts +101 -482
- package/src/bls12-381.ts +148 -176
- package/src/bn254.ts +67 -122
- package/src/ed25519.ts +65 -118
- package/src/ed448.ts +63 -113
- package/src/index.ts +1 -1
- package/src/misc.ts +66 -49
- package/src/nist.ts +48 -57
- package/src/secp256k1.ts +56 -88
- package/src/utils.ts +41 -61
- package/src/webcrypto.ts +362 -0
- package/utils.d.ts +28 -19
- package/utils.d.ts.map +1 -1
- package/utils.js +45 -121
- package/utils.js.map +1 -1
- package/webcrypto.d.ts +47 -0
- package/webcrypto.d.ts.map +1 -0
- package/webcrypto.js +231 -0
- package/webcrypto.js.map +1 -0
- 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 -237
- package/esm/abstract/edwards.d.ts.map +0 -1
- package/esm/abstract/edwards.js +0 -632
- 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 -93
- package/esm/abstract/tower.d.ts.map +0 -1
- package/esm/abstract/tower.js +0 -502
- package/esm/abstract/tower.js.map +0 -1
- package/esm/abstract/utils.d.ts +0 -5
- package/esm/abstract/utils.d.ts.map +0 -1
- package/esm/abstract/utils.js +0 -7
- package/esm/abstract/utils.js.map +0 -1
- package/esm/abstract/weierstrass.d.ts +0 -412
- package/esm/abstract/weierstrass.d.ts.map +0 -1
- package/esm/abstract/weierstrass.js +0 -1428
- 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 -738
- 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 -246
- 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 -101
- package/esm/ed448.d.ts.map +0 -1
- package/esm/ed448.js +0 -448
- 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 -292
- 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/src/_shortw_utils.ts +0 -21
- package/src/abstract/utils.ts +0 -7
- 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,62 @@
|
|
|
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_, isBytes as isBytes_, } from '@noble/hashes/utils.js';
|
|
7
|
+
export { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes } 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
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
|
-
const needsLen = length !== undefined;
|
|
64
|
-
if (!bytes || (needsLen && len !== length)) {
|
|
65
|
-
const prefix = title && `"${title}"`;
|
|
66
|
-
const ofLen = needsLen ? ` of length ${length}` : '';
|
|
67
|
-
const got = bytes ? `length=${len}` : `type=${typeof value}`;
|
|
68
|
-
throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);
|
|
17
|
+
// Used in weierstrass, der
|
|
18
|
+
function abignumer(n) {
|
|
19
|
+
if (typeof n === 'bigint') {
|
|
20
|
+
if (!isPosBig(n))
|
|
21
|
+
throw new Error('positive bigint expected, got ' + n);
|
|
69
22
|
}
|
|
70
|
-
|
|
23
|
+
else
|
|
24
|
+
anumber(n);
|
|
25
|
+
return n;
|
|
71
26
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const hex = num.toString(16);
|
|
27
|
+
export function numberToHexUnpadded(num) {
|
|
28
|
+
const hex = abignumer(num).toString(16);
|
|
75
29
|
return hex.length & 1 ? '0' + hex : hex;
|
|
76
30
|
}
|
|
77
|
-
function hexToNumber(hex) {
|
|
31
|
+
export function hexToNumber(hex) {
|
|
78
32
|
if (typeof hex !== 'string')
|
|
79
33
|
throw new Error('hex string expected, got ' + typeof hex);
|
|
80
34
|
return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian
|
|
81
35
|
}
|
|
82
36
|
// BE: Big Endian, LE: Little Endian
|
|
83
|
-
function bytesToNumberBE(bytes) {
|
|
84
|
-
return hexToNumber((
|
|
37
|
+
export function bytesToNumberBE(bytes) {
|
|
38
|
+
return hexToNumber(bytesToHex_(bytes));
|
|
85
39
|
}
|
|
86
|
-
function bytesToNumberLE(bytes) {
|
|
87
|
-
|
|
88
|
-
return hexToNumber((0, utils_js_1.bytesToHex)(Uint8Array.from(bytes).reverse()));
|
|
40
|
+
export function bytesToNumberLE(bytes) {
|
|
41
|
+
return hexToNumber(bytesToHex_(copyBytes(abytes_(bytes)).reverse()));
|
|
89
42
|
}
|
|
90
|
-
function numberToBytesBE(n, len) {
|
|
91
|
-
|
|
43
|
+
export function numberToBytesBE(n, len) {
|
|
44
|
+
anumber(len);
|
|
45
|
+
n = abignumer(n);
|
|
46
|
+
const res = hexToBytes_(n.toString(16).padStart(len * 2, '0'));
|
|
47
|
+
if (res.length !== len)
|
|
48
|
+
throw new Error('number too large');
|
|
49
|
+
return res;
|
|
92
50
|
}
|
|
93
|
-
function numberToBytesLE(n, len) {
|
|
51
|
+
export function numberToBytesLE(n, len) {
|
|
94
52
|
return numberToBytesBE(n, len).reverse();
|
|
95
53
|
}
|
|
96
54
|
// 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;
|
|
55
|
+
export function numberToVarBytesBE(n) {
|
|
56
|
+
return hexToBytes_(numberToHexUnpadded(abignumer(n)));
|
|
131
57
|
}
|
|
132
58
|
// Compares 2 u8a-s in kinda constant time
|
|
133
|
-
function equalBytes(a, b) {
|
|
59
|
+
export function equalBytes(a, b) {
|
|
134
60
|
if (a.length !== b.length)
|
|
135
61
|
return false;
|
|
136
62
|
let diff = 0;
|
|
@@ -142,7 +68,7 @@ function equalBytes(a, b) {
|
|
|
142
68
|
* Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,
|
|
143
69
|
* and Buffer#slice creates mutable copy. Never use Buffers!
|
|
144
70
|
*/
|
|
145
|
-
function copyBytes(bytes) {
|
|
71
|
+
export function copyBytes(bytes) {
|
|
146
72
|
return Uint8Array.from(bytes);
|
|
147
73
|
}
|
|
148
74
|
/**
|
|
@@ -150,7 +76,7 @@ function copyBytes(bytes) {
|
|
|
150
76
|
* Should be safe to use for things expected to be ASCII.
|
|
151
77
|
* Returns exact same result as utf8ToBytes for ASCII or throws.
|
|
152
78
|
*/
|
|
153
|
-
function asciiToBytes(ascii) {
|
|
79
|
+
export function asciiToBytes(ascii) {
|
|
154
80
|
return Uint8Array.from(ascii, (c, i) => {
|
|
155
81
|
const charCode = c.charCodeAt(0);
|
|
156
82
|
if (c.length !== 1 || charCode > 127) {
|
|
@@ -170,7 +96,7 @@ function asciiToBytes(ascii) {
|
|
|
170
96
|
// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;
|
|
171
97
|
// Is positive bigint
|
|
172
98
|
const isPosBig = (n) => typeof n === 'bigint' && _0n <= n;
|
|
173
|
-
function inRange(n, min, max) {
|
|
99
|
+
export function inRange(n, min, max) {
|
|
174
100
|
return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;
|
|
175
101
|
}
|
|
176
102
|
/**
|
|
@@ -178,7 +104,7 @@ function inRange(n, min, max) {
|
|
|
178
104
|
* @example
|
|
179
105
|
* aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)
|
|
180
106
|
*/
|
|
181
|
-
function aInRange(title, n, min, max) {
|
|
107
|
+
export function aInRange(title, n, min, max) {
|
|
182
108
|
// Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?
|
|
183
109
|
// consider P=256n, min=0n, max=P
|
|
184
110
|
// - a for min=0 would require -1: `inRange('x', x, -1n, P)`
|
|
@@ -193,7 +119,7 @@ function aInRange(title, n, min, max) {
|
|
|
193
119
|
* Same as `n.toString(2).length`
|
|
194
120
|
* TODO: merge with nLength in modular
|
|
195
121
|
*/
|
|
196
|
-
function bitLen(n) {
|
|
122
|
+
export function bitLen(n) {
|
|
197
123
|
let len;
|
|
198
124
|
for (len = 0; n > _0n; n >>= _1n, len += 1)
|
|
199
125
|
;
|
|
@@ -204,21 +130,20 @@ function bitLen(n) {
|
|
|
204
130
|
* NOTE: first bit position is 0 (same as arrays)
|
|
205
131
|
* Same as `!!+Array.from(n.toString(2)).reverse()[pos]`
|
|
206
132
|
*/
|
|
207
|
-
function bitGet(n, pos) {
|
|
133
|
+
export function bitGet(n, pos) {
|
|
208
134
|
return (n >> BigInt(pos)) & _1n;
|
|
209
135
|
}
|
|
210
136
|
/**
|
|
211
137
|
* Sets single bit at position.
|
|
212
138
|
*/
|
|
213
|
-
function bitSet(n, pos, value) {
|
|
139
|
+
export function bitSet(n, pos, value) {
|
|
214
140
|
return n | ((value ? _1n : _0n) << BigInt(pos));
|
|
215
141
|
}
|
|
216
142
|
/**
|
|
217
143
|
* Calculate mask for N bits. Not using ** operator with bigints because of old engines.
|
|
218
144
|
* Same as BigInt(`0b${Array(i).fill('1').join('')}`)
|
|
219
145
|
*/
|
|
220
|
-
const bitMask = (n) => (_1n << BigInt(n)) - _1n;
|
|
221
|
-
exports.bitMask = bitMask;
|
|
146
|
+
export const bitMask = (n) => (_1n << BigInt(n)) - _1n;
|
|
222
147
|
/**
|
|
223
148
|
* Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.
|
|
224
149
|
* @returns function that will call DRBG until 2nd arg returns something meaningful
|
|
@@ -226,7 +151,7 @@ exports.bitMask = bitMask;
|
|
|
226
151
|
* const drbg = createHmacDRBG<Key>(32, 32, hmac);
|
|
227
152
|
* drbg(seed, bytesToKey); // bytesToKey must return Key or undefined
|
|
228
153
|
*/
|
|
229
|
-
function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
154
|
+
export function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
230
155
|
if (typeof hashLen !== 'number' || hashLen < 2)
|
|
231
156
|
throw new Error('hashLen must be a number');
|
|
232
157
|
if (typeof qByteLen !== 'number' || qByteLen < 2)
|
|
@@ -266,7 +191,7 @@ function createHmacDrbg(hashLen, qByteLen, hmacFn) {
|
|
|
266
191
|
out.push(sl);
|
|
267
192
|
len += v.length;
|
|
268
193
|
}
|
|
269
|
-
return (
|
|
194
|
+
return concatBytes_(...out);
|
|
270
195
|
};
|
|
271
196
|
const genUntil = (seed, pred) => {
|
|
272
197
|
reset();
|
|
@@ -285,14 +210,14 @@ const validatorFns = {
|
|
|
285
210
|
function: (val) => typeof val === 'function',
|
|
286
211
|
boolean: (val) => typeof val === 'boolean',
|
|
287
212
|
string: (val) => typeof val === 'string',
|
|
288
|
-
stringOrUint8Array: (val) => typeof val === 'string' || (
|
|
213
|
+
stringOrUint8Array: (val) => typeof val === 'string' || isBytes_(val),
|
|
289
214
|
isSafeInteger: (val) => Number.isSafeInteger(val),
|
|
290
215
|
array: (val) => Array.isArray(val),
|
|
291
216
|
field: (val, object) => object.Fp.isValid(val),
|
|
292
217
|
hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),
|
|
293
218
|
};
|
|
294
219
|
// type Record<K extends string | number | symbol, T> = { [P in K]: T; }
|
|
295
|
-
function validateObject(object, validators, optValidators = {}) {
|
|
220
|
+
export function validateObject(object, validators, optValidators = {}) {
|
|
296
221
|
const checkField = (fieldName, type, isOptional) => {
|
|
297
222
|
const checkVal = validatorFns[type];
|
|
298
223
|
if (typeof checkVal !== 'function')
|
|
@@ -318,10 +243,10 @@ function validateObject(object, validators, optValidators = {}) {
|
|
|
318
243
|
// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });
|
|
319
244
|
// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });
|
|
320
245
|
// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });
|
|
321
|
-
function isHash(val) {
|
|
246
|
+
export function isHash(val) {
|
|
322
247
|
return typeof val === 'function' && Number.isSafeInteger(val.outputLen);
|
|
323
248
|
}
|
|
324
|
-
function _validateObject(object, fields, optFields = {}) {
|
|
249
|
+
export function _validateObject(object, fields, optFields = {}) {
|
|
325
250
|
if (!object || typeof object !== 'object')
|
|
326
251
|
throw new Error('expected valid options object');
|
|
327
252
|
function checkField(fieldName, expectedType, isOpt) {
|
|
@@ -338,15 +263,14 @@ function _validateObject(object, fields, optFields = {}) {
|
|
|
338
263
|
/**
|
|
339
264
|
* throws not implemented error
|
|
340
265
|
*/
|
|
341
|
-
const notImplemented = () => {
|
|
266
|
+
export const notImplemented = () => {
|
|
342
267
|
throw new Error('not implemented');
|
|
343
268
|
};
|
|
344
|
-
exports.notImplemented = notImplemented;
|
|
345
269
|
/**
|
|
346
270
|
* Memoizes (caches) computation result.
|
|
347
271
|
* Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.
|
|
348
272
|
*/
|
|
349
|
-
function memoized(fn) {
|
|
273
|
+
export function memoized(fn) {
|
|
350
274
|
const map = new WeakMap();
|
|
351
275
|
return (arg, ...args) => {
|
|
352
276
|
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,47 @@
|
|
|
1
|
+
type JsonWebKey = {
|
|
2
|
+
crv?: string;
|
|
3
|
+
d?: string;
|
|
4
|
+
kty?: string;
|
|
5
|
+
x?: string;
|
|
6
|
+
y?: string;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
type Format = 'raw' | 'jwk' | 'spki' | 'pkcs8';
|
|
10
|
+
type Key = JsonWebKey | Uint8Array;
|
|
11
|
+
export type WebCryptoGetPubOpts = {
|
|
12
|
+
secFormat?: Format;
|
|
13
|
+
pubFormat?: Format;
|
|
14
|
+
};
|
|
15
|
+
type WebCryptoOpts = {
|
|
16
|
+
format?: Format;
|
|
17
|
+
};
|
|
18
|
+
type WebCryptoBaseCurve = {
|
|
19
|
+
name: string;
|
|
20
|
+
isAvailable(): Promise<boolean>;
|
|
21
|
+
getPublicKey(secretKey: Key, opts?: WebCryptoGetPubOpts): Promise<Key>;
|
|
22
|
+
utils: {
|
|
23
|
+
randomSecretKey: (format?: Format) => Promise<Key>;
|
|
24
|
+
convertSecretKey: (key: Key, inFormat?: Format, outFormat?: Format) => Promise<Key>;
|
|
25
|
+
convertPublicKey: (key: Key, inFormat?: Format, outFormat?: Format) => Promise<Key>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type WebCryptoSigner = {
|
|
29
|
+
sign(msgHash: Uint8Array, privateKey: Key, opts?: WebCryptoOpts): Promise<Uint8Array>;
|
|
30
|
+
verify(signature: Uint8Array, msgHash: Uint8Array, publicKey: Key, opts?: WebCryptoOpts): Promise<boolean>;
|
|
31
|
+
};
|
|
32
|
+
export type WebCryptoECDH = {
|
|
33
|
+
getSharedSecret(priv: Uint8Array, pub: Uint8Array, opts?: WebCryptoOpts): Promise<Uint8Array>;
|
|
34
|
+
};
|
|
35
|
+
export type WebCryptoNIST = WebCryptoBaseCurve & WebCryptoSigner & WebCryptoECDH;
|
|
36
|
+
export type WebCryptoEdDSA = WebCryptoBaseCurve & WebCryptoSigner;
|
|
37
|
+
export type WebCryptoMontgomery = WebCryptoBaseCurve & WebCryptoECDH;
|
|
38
|
+
export declare const p256: WebCryptoNIST;
|
|
39
|
+
export declare const p384: WebCryptoNIST;
|
|
40
|
+
export declare const p521: WebCryptoNIST;
|
|
41
|
+
export declare const ed25519: WebCryptoEdDSA;
|
|
42
|
+
export declare const ed448: WebCryptoEdDSA;
|
|
43
|
+
export declare const x25519: WebCryptoMontgomery;
|
|
44
|
+
export declare const x448: WebCryptoMontgomery;
|
|
45
|
+
export declare const supportsWc: (a: WebCryptoBaseCurve) => Promise<boolean>;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=webcrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webcrypto.d.ts","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"AAgDA,KAAK,UAAU,GAAG;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AACF,KAAK,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAC/C,KAAK,GAAG,GAAG,UAAU,GAAG,UAAU,CAAC;AAWnC,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA+HF,KAAK,aAAa,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA4CzC,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACvE,KAAK,EAAE;QACL,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;QACpF,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;KACrF,CAAC;CACH,CAAC;AAIF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtF,MAAM,CACJ,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,GAAG,EACd,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/F,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;AACjF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAmDrE,eAAO,MAAM,IAAI,EAAE,aAKlB,CAAC;AACF,eAAO,MAAM,IAAI,EAAE,aAKlB,CAAC;AACF,eAAO,MAAM,IAAI,EAAE,aAKlB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,cAIrB,CAAC;AACF,eAAO,MAAM,KAAK,EAAE,cAInB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,mBAIpB,CAAC;AACF,eAAO,MAAM,IAAI,EAAE,mBAIlB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,GAAG,kBAAkB,KAAG,OAAO,CAAC,OAAO,CAAoB,CAAC"}
|
package/webcrypto.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
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
|
+
- PCKS8 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
|
+
import { concatBytes, hexToBytes } from "./utils.js";
|
|
41
|
+
function getWebcryptoSubtle() {
|
|
42
|
+
const subtle = globalThis?.crypto?.subtle;
|
|
43
|
+
if (typeof subtle === 'object' && subtle != null)
|
|
44
|
+
return subtle;
|
|
45
|
+
throw new Error('crypto.subtle must be defined');
|
|
46
|
+
}
|
|
47
|
+
const _format = 'raw';
|
|
48
|
+
function assertType(type, key) {
|
|
49
|
+
if (key.type !== type)
|
|
50
|
+
throw new Error(`invalid key type, expected ${type}`);
|
|
51
|
+
}
|
|
52
|
+
function createKeyUtils(algo, derive, keyLen, pcks8header) {
|
|
53
|
+
const secUsage = derive ? ['deriveBits'] : ['sign'];
|
|
54
|
+
const pubUsage = derive ? [] : ['verify'];
|
|
55
|
+
// Return Uint8Array instead of ArrayBuffer
|
|
56
|
+
const arrBufToU8 = (res, format) => format === 'jwk' ? res : new Uint8Array(res);
|
|
57
|
+
const pub = {
|
|
58
|
+
async import(key, format = _format) {
|
|
59
|
+
const crypto = getWebcryptoSubtle();
|
|
60
|
+
const keyi = await crypto.importKey(format, key, algo, true, pubUsage);
|
|
61
|
+
assertType('public', keyi);
|
|
62
|
+
return keyi;
|
|
63
|
+
},
|
|
64
|
+
async export(key, format = _format) {
|
|
65
|
+
assertType('public', key);
|
|
66
|
+
const crypto = getWebcryptoSubtle();
|
|
67
|
+
const keyi = await crypto.exportKey(format, key);
|
|
68
|
+
return arrBufToU8(keyi, format);
|
|
69
|
+
},
|
|
70
|
+
async convert(key, inFormat = _format, outFormat = _format) {
|
|
71
|
+
return pub.export(await pub.import(key, inFormat), outFormat);
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
const priv = {
|
|
75
|
+
async import(key, format = _format) {
|
|
76
|
+
const crypto = getWebcryptoSubtle();
|
|
77
|
+
let keyi;
|
|
78
|
+
if (format === 'raw') {
|
|
79
|
+
// Chrome, node, bun, deno: works
|
|
80
|
+
// Safari, Firefox: Data provided to an operation does not meet requirements
|
|
81
|
+
// This is the best one can do. JWK can't be used: it contains public key component inside.
|
|
82
|
+
keyi = await crypto.importKey('pkcs8', concatBytes(hexToBytes(pcks8header), key), algo, true, secUsage);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Fix import of ECDSA keys into ECDH, other formats are ok
|
|
86
|
+
if (derive && format === 'jwk')
|
|
87
|
+
key = { ...key, key_ops: secUsage };
|
|
88
|
+
keyi = await crypto.importKey(format, key, algo, true, secUsage);
|
|
89
|
+
}
|
|
90
|
+
assertType('private', keyi);
|
|
91
|
+
return keyi;
|
|
92
|
+
},
|
|
93
|
+
async export(key, format = _format) {
|
|
94
|
+
const crypto = getWebcryptoSubtle();
|
|
95
|
+
assertType('private', key);
|
|
96
|
+
if (format === 'raw') {
|
|
97
|
+
// scure-base base64urlnopad could have been used, but we can't add more deps.
|
|
98
|
+
// pcks8 would be even more fragile
|
|
99
|
+
const jwk = await crypto.exportKey('jwk', key);
|
|
100
|
+
const base64 = jwk.d.replace(/-/g, '+').replace(/_/g, '/'); // base64url
|
|
101
|
+
const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; // add padding
|
|
102
|
+
const binary = atob(base64 + pad);
|
|
103
|
+
// This is not ASCII, and not text: this is only semi-safe with atob output
|
|
104
|
+
const raw = Uint8Array.from(binary, (c) => c.charCodeAt(0));
|
|
105
|
+
// Pad key to key len because Bun strips leading zero for P-521 only
|
|
106
|
+
const res = new Uint8Array(keyLen);
|
|
107
|
+
res.set(raw, keyLen - raw.length);
|
|
108
|
+
return res;
|
|
109
|
+
}
|
|
110
|
+
const keyi = await crypto.exportKey(format, key);
|
|
111
|
+
return arrBufToU8(keyi, format);
|
|
112
|
+
},
|
|
113
|
+
async convert(key, inFormat = _format, outFormat = _format) {
|
|
114
|
+
return priv.export(await priv.import(key, inFormat), outFormat);
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
// Key generation could be slow, so we cache result once.
|
|
118
|
+
let available;
|
|
119
|
+
return {
|
|
120
|
+
pub: pub,
|
|
121
|
+
priv: priv,
|
|
122
|
+
async isAvailable() {
|
|
123
|
+
if (available !== undefined)
|
|
124
|
+
return available;
|
|
125
|
+
try {
|
|
126
|
+
const crypto = getWebcryptoSubtle();
|
|
127
|
+
const key = await crypto.generateKey(algo, true, secUsage);
|
|
128
|
+
// Deno is broken and generates key for unsupported curves, but then fails on export
|
|
129
|
+
await priv.export(key.privateKey, 'jwk');
|
|
130
|
+
// Bun fails on derive for x25519, but not x448
|
|
131
|
+
if (derive) {
|
|
132
|
+
await crypto.deriveBits({ name: typeof algo === 'string' ? algo : algo.name, public: key.publicKey }, key.privateKey, 8);
|
|
133
|
+
}
|
|
134
|
+
return (available = true);
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
return (available = false);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
// We support different input / output formats since there is no 'spki' secret key
|
|
141
|
+
async getPublicKey(secretKey, opts = {}) {
|
|
142
|
+
const fpriv = opts.secFormat ?? _format;
|
|
143
|
+
const fpub = opts.pubFormat ?? fpriv;
|
|
144
|
+
// Export to jwk, remove private scalar and then convert to format
|
|
145
|
+
const jwk = (fpriv === 'jwk' ? { ...secretKey } : await priv.convert(secretKey, fpriv, 'jwk'));
|
|
146
|
+
delete jwk.d;
|
|
147
|
+
jwk.key_ops = pubUsage;
|
|
148
|
+
if (fpub === 'jwk')
|
|
149
|
+
return jwk;
|
|
150
|
+
return pub.convert(jwk, 'jwk', fpub);
|
|
151
|
+
},
|
|
152
|
+
utils: {
|
|
153
|
+
async randomSecretKey(format = _format) {
|
|
154
|
+
const crypto = getWebcryptoSubtle();
|
|
155
|
+
const keyPair = await crypto.generateKey(algo, true, secUsage);
|
|
156
|
+
return priv.export(keyPair.privateKey, format);
|
|
157
|
+
},
|
|
158
|
+
convertPublicKey: pub.convert,
|
|
159
|
+
convertSecretKey: priv.convert,
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function createSigner(keys, algo) {
|
|
164
|
+
return {
|
|
165
|
+
async sign(msgHash, secretKey, opts = {}) {
|
|
166
|
+
const crypto = getWebcryptoSubtle();
|
|
167
|
+
const key = await keys.priv.import(secretKey, opts.format || _format);
|
|
168
|
+
const sig = await crypto.sign(algo, key, msgHash);
|
|
169
|
+
return new Uint8Array(sig);
|
|
170
|
+
},
|
|
171
|
+
async verify(signature, msgHash, publicKey, opts = {}) {
|
|
172
|
+
const crypto = getWebcryptoSubtle();
|
|
173
|
+
const key = await keys.pub.import(publicKey, opts.format || _format);
|
|
174
|
+
return await crypto.verify(algo, key, signature, msgHash);
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function createECDH(keys, algo, keyLen) {
|
|
179
|
+
return {
|
|
180
|
+
async getSharedSecret(secretKeyA, publicKeyB, opts = {}) {
|
|
181
|
+
// if (_isCompressed !== true) throw new Error('WebCrypto only supports compressed keys');
|
|
182
|
+
const crypto = getWebcryptoSubtle();
|
|
183
|
+
const secKey = await keys.priv.import(secretKeyA, opts.format || _format);
|
|
184
|
+
const pubKey = await keys.pub.import(publicKeyB, opts.format || _format);
|
|
185
|
+
const shared = await crypto.deriveBits({ name: typeof algo === 'string' ? algo : algo.name, public: pubKey }, secKey, 8 * keyLen);
|
|
186
|
+
return new Uint8Array(shared);
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function wrapNIST(curve, hash, keyLen, pcks8header) {
|
|
191
|
+
const ECDH_ALGO = { name: 'ECDH', namedCurve: curve };
|
|
192
|
+
const keys = createKeyUtils({ name: 'ECDSA', namedCurve: curve }, false, keyLen, pcks8header);
|
|
193
|
+
const keysEcdh = createKeyUtils(ECDH_ALGO, true, keyLen, pcks8header);
|
|
194
|
+
return Object.freeze({
|
|
195
|
+
name: curve,
|
|
196
|
+
isAvailable: keys.isAvailable,
|
|
197
|
+
getPublicKey: keys.getPublicKey,
|
|
198
|
+
...createSigner(keys, { name: 'ECDSA', hash: { name: hash } }),
|
|
199
|
+
...createECDH(keysEcdh, ECDH_ALGO, keyLen),
|
|
200
|
+
utils: keys.utils,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
function wrapEdDSA(curve, keyLen, pcks8header) {
|
|
204
|
+
const keys = createKeyUtils(curve, false, keyLen, pcks8header);
|
|
205
|
+
return Object.freeze({
|
|
206
|
+
name: curve,
|
|
207
|
+
isAvailable: keys.isAvailable,
|
|
208
|
+
getPublicKey: keys.getPublicKey,
|
|
209
|
+
...createSigner(keys, { name: curve }),
|
|
210
|
+
utils: keys.utils,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
function wrapMontgomery(curve, keyLen, pcks8header) {
|
|
214
|
+
const keys = createKeyUtils(curve, true, keyLen, pcks8header);
|
|
215
|
+
return Object.freeze({
|
|
216
|
+
name: curve,
|
|
217
|
+
isAvailable: keys.isAvailable,
|
|
218
|
+
getPublicKey: keys.getPublicKey,
|
|
219
|
+
...createECDH(keys, curve, keyLen),
|
|
220
|
+
utils: keys.utils,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
export const p256 = /* @__PURE__ */ wrapNIST('P-256', 'SHA-256', 32, '3041020100301306072a8648ce3d020106082a8648ce3d030107042730250201010420');
|
|
224
|
+
export const p384 = /* @__PURE__ */ wrapNIST('P-384', 'SHA-384', 48, '304e020100301006072a8648ce3d020106052b81040022043730350201010430');
|
|
225
|
+
export const p521 = /* @__PURE__ */ wrapNIST('P-521', 'SHA-512', 66, '3060020100301006072a8648ce3d020106052b81040023044930470201010442');
|
|
226
|
+
export const ed25519 = /* @__PURE__ */ wrapEdDSA('Ed25519', 32, '302e020100300506032b657004220420');
|
|
227
|
+
export const ed448 = /* @__PURE__ */ wrapEdDSA('Ed448', 57, '3047020100300506032b6571043b0439');
|
|
228
|
+
export const x25519 = /* @__PURE__ */ wrapMontgomery('X25519', 32, '302e020100300506032b656e04220420');
|
|
229
|
+
export const x448 = /* @__PURE__ */ wrapMontgomery('X448', 56, '3046020100300506032b656f043a0438');
|
|
230
|
+
export const supportsWc = (a) => a.isAvailable();
|
|
231
|
+
//# sourceMappingURL=webcrypto.js.map
|
package/webcrypto.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webcrypto.js","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"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"}
|