ox 0.8.0 → 0.8.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/CHANGELOG.md +6 -0
- package/_cjs/core/Keystore.js +65 -5
- package/_cjs/core/Keystore.js.map +1 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/Keystore.js +107 -9
- package/_esm/core/Keystore.js.map +1 -1
- package/_esm/index.js +20 -4
- package/_esm/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/core/Keystore.d.ts +66 -8
- package/_types/core/Keystore.d.ts.map +1 -1
- package/_types/index.d.ts +20 -4
- package/_types/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/Keystore.ts +141 -12
- package/index.ts +20 -4
- package/package.json +1 -1
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.8.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`74e47c5`](https://github.com/wevm/ox/commit/74e47c5df471a48f4fb389f0684ca52f841fbc11) Thanks [@jxom](https://github.com/jxom)! - Added `Keystore.toKey` and `Keystore.toKeyAsync` to derive a key from a JSON Keystore using a password.
|
|
8
|
+
|
|
3
9
|
## 0.8.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/_cjs/core/Keystore.js
CHANGED
|
@@ -6,13 +6,15 @@ exports.pbkdf2 = pbkdf2;
|
|
|
6
6
|
exports.pbkdf2Async = pbkdf2Async;
|
|
7
7
|
exports.scrypt = scrypt;
|
|
8
8
|
exports.scryptAsync = scryptAsync;
|
|
9
|
+
exports.toKey = toKey;
|
|
10
|
+
exports.toKeyAsync = toKeyAsync;
|
|
9
11
|
const aes_1 = require("@noble/ciphers/aes");
|
|
10
12
|
const pbkdf2_1 = require("@noble/hashes/pbkdf2");
|
|
11
13
|
const scrypt_1 = require("@noble/hashes/scrypt");
|
|
12
14
|
const sha2_1 = require("@noble/hashes/sha2");
|
|
13
15
|
const Bytes = require("./Bytes.js");
|
|
14
16
|
const Hash = require("./Hash.js");
|
|
15
|
-
|
|
17
|
+
function decrypt(keystore, key, options = {}) {
|
|
16
18
|
const { as = 'Hex' } = options;
|
|
17
19
|
const key_ = Bytes.from(typeof key === 'function' ? key() : key);
|
|
18
20
|
const encKey = Bytes.slice(key_, 0, 16);
|
|
@@ -26,7 +28,7 @@ async function decrypt(keystore, key, options = {}) {
|
|
|
26
28
|
return Bytes.toHex(data);
|
|
27
29
|
return data;
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
function encrypt(privateKey, key, options) {
|
|
30
32
|
const { id = crypto.randomUUID(), kdf, kdfparams, iv } = options;
|
|
31
33
|
const key_ = Bytes.from(typeof key === 'function' ? key() : key);
|
|
32
34
|
const value_ = Bytes.from(privateKey);
|
|
@@ -81,9 +83,7 @@ async function pbkdf2Async(options) {
|
|
|
81
83
|
});
|
|
82
84
|
}
|
|
83
85
|
function scrypt(options) {
|
|
84
|
-
const { iv, n = 262_144, password } = options;
|
|
85
|
-
const p = 8;
|
|
86
|
-
const r = 1;
|
|
86
|
+
const { iv, n = 262_144, password, p = 8, r = 1 } = options;
|
|
87
87
|
const salt = options.salt ? Bytes.from(options.salt) : Bytes.random(32);
|
|
88
88
|
const key = Bytes.toHex((0, scrypt_1.scrypt)(password, salt, { N: n, dkLen: 32, r, p }));
|
|
89
89
|
return defineKey(() => key, {
|
|
@@ -116,6 +116,66 @@ async function scryptAsync(options) {
|
|
|
116
116
|
kdf: 'scrypt',
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
|
+
function toKey(keystore, options) {
|
|
120
|
+
const { crypto } = keystore;
|
|
121
|
+
const { password } = options;
|
|
122
|
+
const { cipherparams, kdf, kdfparams } = crypto;
|
|
123
|
+
const { iv } = cipherparams;
|
|
124
|
+
const { c, n, p, r, salt } = kdfparams;
|
|
125
|
+
const [key] = (() => {
|
|
126
|
+
switch (kdf) {
|
|
127
|
+
case 'scrypt':
|
|
128
|
+
return scrypt({
|
|
129
|
+
iv: Bytes.from(`0x${iv}`),
|
|
130
|
+
n,
|
|
131
|
+
p,
|
|
132
|
+
r,
|
|
133
|
+
salt: Bytes.from(`0x${salt}`),
|
|
134
|
+
password,
|
|
135
|
+
});
|
|
136
|
+
case 'pbkdf2':
|
|
137
|
+
return pbkdf2({
|
|
138
|
+
iv: Bytes.from(`0x${iv}`),
|
|
139
|
+
iterations: c,
|
|
140
|
+
password,
|
|
141
|
+
salt: Bytes.from(`0x${salt}`),
|
|
142
|
+
});
|
|
143
|
+
default:
|
|
144
|
+
throw new Error('unsupported kdf');
|
|
145
|
+
}
|
|
146
|
+
})();
|
|
147
|
+
return key;
|
|
148
|
+
}
|
|
149
|
+
async function toKeyAsync(keystore, options) {
|
|
150
|
+
const { crypto } = keystore;
|
|
151
|
+
const { password } = options;
|
|
152
|
+
const { cipherparams, kdf, kdfparams } = crypto;
|
|
153
|
+
const { iv } = cipherparams;
|
|
154
|
+
const { c, n, p, r, salt } = kdfparams;
|
|
155
|
+
const [key] = await (async () => {
|
|
156
|
+
switch (kdf) {
|
|
157
|
+
case 'scrypt':
|
|
158
|
+
return await scryptAsync({
|
|
159
|
+
iv: Bytes.from(`0x${iv}`),
|
|
160
|
+
n,
|
|
161
|
+
p,
|
|
162
|
+
r,
|
|
163
|
+
salt: Bytes.from(`0x${salt}`),
|
|
164
|
+
password,
|
|
165
|
+
});
|
|
166
|
+
case 'pbkdf2':
|
|
167
|
+
return await pbkdf2({
|
|
168
|
+
iv: Bytes.from(`0x${iv}`),
|
|
169
|
+
iterations: c,
|
|
170
|
+
password,
|
|
171
|
+
salt: Bytes.from(`0x${salt}`),
|
|
172
|
+
});
|
|
173
|
+
default:
|
|
174
|
+
throw new Error('unsupported kdf');
|
|
175
|
+
}
|
|
176
|
+
})();
|
|
177
|
+
return key;
|
|
178
|
+
}
|
|
119
179
|
function defineKey(key, options) {
|
|
120
180
|
const iv = options.iv ? Bytes.from(options.iv) : Bytes.random(16);
|
|
121
181
|
return [key, { ...options, iv }];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keystore.js","sourceRoot":"","sources":["../../core/Keystore.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"Keystore.js","sourceRoot":"","sources":["../../core/Keystore.ts"],"names":[],"mappings":";;AAkGA,0BAwBC;AA2DD,0BA4BC;AAsBD,wBAkBC;AA4BD,kCAqBC;AAmBD,wBAmBC;AAgCD,kCAsBC;AA0BD,sBAiCC;AA6BD,gCAoCC;AAlgBD,4CAAwC;AACxC,iDAG6B;AAC7B,iDAG6B;AAC7B,6CAA2C;AAC3C,oCAAmC;AAEnC,kCAAiC;AAsFjC,SAAgB,OAAO,CACrB,QAAkB,EAClB,GAAQ,EACR,UAA+B,EAAE;IAEjC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAExC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAE5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAErC,MAAM,IAAI,GAAG,IAAA,SAAG,EACd,MAAM,EACN,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CACnD,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAErB,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAU,CAAA;IACnD,OAAO,IAAa,CAAA;AACtB,CAAC;AA2DD,SAAgB,OAAO,CACrB,UAAiC,EACjC,GAAQ,EACR,OAAwB;IAExB,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,OAAO,CAAA;IAEhE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAErC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAExC,MAAM,UAAU,GAAG,IAAA,SAAG,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAE5D,OAAO;QACL,MAAM,EAAE;YACN,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC9C,GAAG;YACH,SAAS;YACT,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACT;QACvB,EAAE;QACF,OAAO,EAAE,CAAC;KACX,CAAA;AACH,CAAC;AAsBD,SAAgB,MAAM,CAAC,OAAuB;IAC5C,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAEtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CACrB,IAAA,eAAY,EAAC,aAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACnE,CAAA;IAED,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QAC1B,EAAE;QACF,SAAS,EAAE;YACT,CAAC,EAAE,UAAU;YACb,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACjC;QACD,GAAG,EAAE,QAAQ;KACd,CAAmC,CAAA;AACtC,CAAC;AA4BM,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAEtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CACrB,MAAM,IAAA,oBAAiB,EAAC,aAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9C,CAAC,EAAE,UAAU;QACb,KAAK,EAAE,EAAE;KACV,CAAC,CACH,CAAA;IAED,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QAC1B,EAAE;QACF,SAAS,EAAE;YACT,CAAC,EAAE,UAAU;YACb,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACjC;QACD,GAAG,EAAE,QAAQ;KACd,CAAmC,CAAA;AACtC,CAAC;AAmBD,SAAgB,MAAM,CAAC,OAAuB;IAC5C,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAA;IAE3D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CACrB,IAAA,eAAY,EAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACxD,CAAA;IAED,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QAC1B,EAAE;QACF,SAAS,EAAE;YACT,KAAK,EAAE,EAAE;YACT,CAAC;YACD,CAAC;YACD,CAAC;YACD,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACjC;QACD,GAAG,EAAE,QAAQ;KACd,CAAmC,CAAA;AACtC,CAAC;AAgCM,KAAK,UAAU,WAAW,CAAC,OAAuB;IACvD,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAE7C,MAAM,CAAC,GAAG,CAAC,CAAA;IACX,MAAM,CAAC,GAAG,CAAC,CAAA;IAEX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CACrB,MAAM,IAAA,oBAAiB,EAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACnE,CAAA;IAED,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QAC1B,EAAE;QACF,SAAS,EAAE;YACT,KAAK,EAAE,EAAE;YACT,CAAC;YACD,CAAC;YACD,CAAC;YACD,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACjC;QACD,GAAG,EAAE,QAAQ;KACd,CAAmC,CAAA;AACtC,CAAC;AA0BD,SAAgB,KAAK,CAAC,QAAkB,EAAE,OAAsB;IAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;IAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,CAAA;IAC3B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,SAE5B,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;QAClB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;oBACZ,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBACzB,CAAC;oBACD,CAAC;oBACD,CAAC;oBACD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC7B,QAAQ;iBACT,CAAC,CAAA;YACJ,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;oBACZ,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBACzB,UAAU,EAAE,CAAC;oBACb,QAAQ;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;iBAC9B,CAAC,CAAA;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AA6BM,KAAK,UAAU,UAAU,CAC9B,QAAkB,EAClB,OAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;IAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,CAAA;IAC3B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,SAE5B,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC9B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBACX,OAAO,MAAM,WAAW,CAAC;oBACvB,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBACzB,CAAC;oBACD,CAAC;oBACD,CAAC;oBACD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC7B,QAAQ;iBACT,CAAC,CAAA;YACJ,KAAK,QAAQ;gBACX,OAAO,MAAM,MAAM,CAAC;oBAClB,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBACzB,UAAU,EAAE,CAAC;oBACb,QAAQ;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;iBAC9B,CAAC,CAAA;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAYD,SAAS,SAAS,CAGhB,GAAQ,EAAE,OAAgB;IAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACjE,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,CAAU,CAAA;AAC3C,CAAC"}
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAuHA,uCAAoC;AA4EpC,6DAA0D;AAwE1D,iDAA8C;AAmH9C,iDAA8C;AA8F9C,uDAAoD;AA8EpD,+CAA4C;AAwG5C,2DAAwD;AAOxD,qDAAkD;AAOlD,yDAAsD;AAuDtD,+CAA4C;AAqC5C,6CAA0C;AA0E1C,2DAAwD;AAuDxD,6CAA0C;AAsD1C,6CAA0C;AAO1C,+DAA4D;AAO5D,2CAAwC;AAgCxC,2CAAwC;AAOxC,6DAA0D;AAO1D,2CAAwC;AAoHxC,uCAAoC;AA6CpC,iDAA8C;AAgI9C,2CAAwC;AAExC,6CAA0C;AAsC1C,+DAA4D;AA+B5D,uCAAoC;AAEpC,6CAA0C;AAO1C,6CAA0C;AAe1C,yCAAsC;AActC,2CAAwC;AAmHxC,uCAAoC;AAKpC,uCAAoC;AAkCpC,yCAAsC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAuHA,uCAAoC;AA4EpC,6DAA0D;AAwE1D,iDAA8C;AAmH9C,iDAA8C;AA8F9C,uDAAoD;AA8EpD,+CAA4C;AAwG5C,2DAAwD;AAOxD,qDAAkD;AAOlD,yDAAsD;AAuDtD,+CAA4C;AAqC5C,6CAA0C;AA0E1C,2DAAwD;AAuDxD,6CAA0C;AAsD1C,6CAA0C;AAO1C,+DAA4D;AAO5D,2CAAwC;AAgCxC,2CAAwC;AAOxC,6DAA0D;AAO1D,2CAAwC;AAoHxC,uCAAoC;AA6CpC,iDAA8C;AAgI9C,2CAAwC;AAExC,6CAA0C;AAsC1C,+DAA4D;AA+B5D,uCAAoC;AAEpC,6CAA0C;AAO1C,6CAA0C;AAe1C,yCAAsC;AActC,2CAAwC;AAmHxC,uCAAoC;AAKpC,uCAAoC;AAkCpC,yCAAsC;AAgEtC,iDAA8C;AAS9C,uCAAoC;AA2DpC,uCAAoC;AA6DpC,iDAA8C;AAoB9C,+DAA4D;AAqF5D,iDAA8C;AAyC9C,mDAAgD;AAoBhD,uCAAoC;AAOpC,mDAAgD;AAmChD,qDAAkD;AAmFlD,uDAAoD;AA0BpD,yDAAsD;AAyEtD,mDAAgD;AAyEhD,yCAAsC;AAmCtC,mDAAgD;AAqGhD,yCAAsC;AAEtC,iDAA8C;AAO9C,6DAA0D;AAuC1D,uDAAoD;AAgBpD,uEAAoE;AA2JpE,mFAAgF;AAuKhF,qFAAkF;AA+JlF,qFAAkF;AAwLlF,qFAAkF;AAqIlF,qFAAkF;AA6ClF,qEAAkE;AAyBlE,qEAAkE;AAkDlE,mDAAgD;AAOhD,2DAAwD;AAsBxD,2CAAwC;AAkFxC,yDAAsD;AAiEtD,2DAAwD;AAOxD,qDAAkD"}
|
package/_cjs/version.js
CHANGED
package/_esm/core/Keystore.js
CHANGED
|
@@ -20,11 +20,11 @@ import * as Hash from './Hash.js';
|
|
|
20
20
|
* // JSON keystore.
|
|
21
21
|
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
22
22
|
*
|
|
23
|
-
* //
|
|
24
|
-
* const key =
|
|
23
|
+
* // Derive the key using your password.
|
|
24
|
+
* const key = Keystore.toKey(keystore, { password: 'hunter2' })
|
|
25
25
|
*
|
|
26
26
|
* // Decrypt the private key.
|
|
27
|
-
* const privateKey =
|
|
27
|
+
* const privateKey = Keystore.decrypt(keystore, key)
|
|
28
28
|
* // @log: "0x..."
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
@@ -33,7 +33,7 @@ import * as Hash from './Hash.js';
|
|
|
33
33
|
* @param options - Decryption options.
|
|
34
34
|
* @returns Decrypted private key.
|
|
35
35
|
*/
|
|
36
|
-
export
|
|
36
|
+
export function decrypt(keystore, key, options = {}) {
|
|
37
37
|
const { as = 'Hex' } = options;
|
|
38
38
|
const key_ = Bytes.from(typeof key === 'function' ? key() : key);
|
|
39
39
|
const encKey = Bytes.slice(key_, 0, 16);
|
|
@@ -66,7 +66,7 @@ export async function decrypt(keystore, key, options = {}) {
|
|
|
66
66
|
* const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
|
|
67
67
|
*
|
|
68
68
|
* // Encrypt the private key.
|
|
69
|
-
* const encrypted =
|
|
69
|
+
* const encrypted = Keystore.encrypt(privateKey, key, opts)
|
|
70
70
|
* // @log: {
|
|
71
71
|
* // @log: "crypto": {
|
|
72
72
|
* // @log: "cipher": "aes-128-ctr",
|
|
@@ -93,7 +93,7 @@ export async function decrypt(keystore, key, options = {}) {
|
|
|
93
93
|
* @param options - Encryption options.
|
|
94
94
|
* @returns Encrypted keystore.
|
|
95
95
|
*/
|
|
96
|
-
export
|
|
96
|
+
export function encrypt(privateKey, key, options) {
|
|
97
97
|
const { id = crypto.randomUUID(), kdf, kdfparams, iv } = options;
|
|
98
98
|
const key_ = Bytes.from(typeof key === 'function' ? key() : key);
|
|
99
99
|
const value_ = Bytes.from(privateKey);
|
|
@@ -187,9 +187,7 @@ export async function pbkdf2Async(options) {
|
|
|
187
187
|
* @returns Scrypt key.
|
|
188
188
|
*/
|
|
189
189
|
export function scrypt(options) {
|
|
190
|
-
const { iv, n = 262_144, password } = options;
|
|
191
|
-
const p = 8;
|
|
192
|
-
const r = 1;
|
|
190
|
+
const { iv, n = 262_144, password, p = 8, r = 1 } = options;
|
|
193
191
|
const salt = options.salt ? Bytes.from(options.salt) : Bytes.random(32);
|
|
194
192
|
const key = Bytes.toHex(scrypt_noble(password, salt, { N: n, dkLen: 32, r, p }));
|
|
195
193
|
return defineKey(() => key, {
|
|
@@ -235,6 +233,106 @@ export async function scryptAsync(options) {
|
|
|
235
233
|
kdf: 'scrypt',
|
|
236
234
|
});
|
|
237
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Extracts a Key from a JSON Keystore to use for decryption.
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```ts twoslash
|
|
241
|
+
* // @noErrors
|
|
242
|
+
* import { Keystore } from 'ox'
|
|
243
|
+
*
|
|
244
|
+
* // JSON keystore.
|
|
245
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
246
|
+
*
|
|
247
|
+
* const key = Keystore.toKey(keystore, { password: 'hunter2' }) // [!code focus]
|
|
248
|
+
*
|
|
249
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @param keystore - JSON Keystore
|
|
253
|
+
* @param options - Options
|
|
254
|
+
* @returns Key
|
|
255
|
+
*/
|
|
256
|
+
export function toKey(keystore, options) {
|
|
257
|
+
const { crypto } = keystore;
|
|
258
|
+
const { password } = options;
|
|
259
|
+
const { cipherparams, kdf, kdfparams } = crypto;
|
|
260
|
+
const { iv } = cipherparams;
|
|
261
|
+
const { c, n, p, r, salt } = kdfparams;
|
|
262
|
+
const [key] = (() => {
|
|
263
|
+
switch (kdf) {
|
|
264
|
+
case 'scrypt':
|
|
265
|
+
return scrypt({
|
|
266
|
+
iv: Bytes.from(`0x${iv}`),
|
|
267
|
+
n,
|
|
268
|
+
p,
|
|
269
|
+
r,
|
|
270
|
+
salt: Bytes.from(`0x${salt}`),
|
|
271
|
+
password,
|
|
272
|
+
});
|
|
273
|
+
case 'pbkdf2':
|
|
274
|
+
return pbkdf2({
|
|
275
|
+
iv: Bytes.from(`0x${iv}`),
|
|
276
|
+
iterations: c,
|
|
277
|
+
password,
|
|
278
|
+
salt: Bytes.from(`0x${salt}`),
|
|
279
|
+
});
|
|
280
|
+
default:
|
|
281
|
+
throw new Error('unsupported kdf');
|
|
282
|
+
}
|
|
283
|
+
})();
|
|
284
|
+
return key;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Extracts a Key asynchronously from a JSON Keystore to use for decryption.
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```ts twoslash
|
|
291
|
+
* // @noErrors
|
|
292
|
+
* import { Keystore } from 'ox'
|
|
293
|
+
*
|
|
294
|
+
* // JSON keystore.
|
|
295
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
296
|
+
*
|
|
297
|
+
* const key = await Keystore.toKeyAsync(keystore, { password: 'hunter2' }) // [!code focus]
|
|
298
|
+
*
|
|
299
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
300
|
+
* ```
|
|
301
|
+
*
|
|
302
|
+
* @param keystore - JSON Keystore
|
|
303
|
+
* @param options - Options
|
|
304
|
+
* @returns Key
|
|
305
|
+
*/
|
|
306
|
+
export async function toKeyAsync(keystore, options) {
|
|
307
|
+
const { crypto } = keystore;
|
|
308
|
+
const { password } = options;
|
|
309
|
+
const { cipherparams, kdf, kdfparams } = crypto;
|
|
310
|
+
const { iv } = cipherparams;
|
|
311
|
+
const { c, n, p, r, salt } = kdfparams;
|
|
312
|
+
const [key] = await (async () => {
|
|
313
|
+
switch (kdf) {
|
|
314
|
+
case 'scrypt':
|
|
315
|
+
return await scryptAsync({
|
|
316
|
+
iv: Bytes.from(`0x${iv}`),
|
|
317
|
+
n,
|
|
318
|
+
p,
|
|
319
|
+
r,
|
|
320
|
+
salt: Bytes.from(`0x${salt}`),
|
|
321
|
+
password,
|
|
322
|
+
});
|
|
323
|
+
case 'pbkdf2':
|
|
324
|
+
return await pbkdf2({
|
|
325
|
+
iv: Bytes.from(`0x${iv}`),
|
|
326
|
+
iterations: c,
|
|
327
|
+
password,
|
|
328
|
+
salt: Bytes.from(`0x${salt}`),
|
|
329
|
+
});
|
|
330
|
+
default:
|
|
331
|
+
throw new Error('unsupported kdf');
|
|
332
|
+
}
|
|
333
|
+
})();
|
|
334
|
+
return key;
|
|
335
|
+
}
|
|
238
336
|
///////////////////////////////////////////////////////////////////////////
|
|
239
337
|
/** @internal */
|
|
240
338
|
function defineKey(key, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keystore.js","sourceRoot":"","sources":["../../core/Keystore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EACL,WAAW,IAAI,iBAAiB,EAChC,MAAM,IAAI,YAAY,GACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,WAAW,IAAI,iBAAiB,EAChC,MAAM,IAAI,YAAY,GACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"Keystore.js","sourceRoot":"","sources":["../../core/Keystore.ts"],"names":[],"mappings":"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"}
|
package/_esm/index.js
CHANGED
|
@@ -1527,9 +1527,9 @@ export * as Json from './core/Json.js';
|
|
|
1527
1527
|
* Utilities & types for working with [Keystores](https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage).
|
|
1528
1528
|
*
|
|
1529
1529
|
* @example
|
|
1530
|
-
* ### Encrypting
|
|
1530
|
+
* ### Encrypting Private Keys
|
|
1531
1531
|
*
|
|
1532
|
-
* Private keys can be encrypted into a JSON keystore using {@link ox#Keystore.(encrypt:function)}
|
|
1532
|
+
* Private keys can be encrypted into a JSON keystore using {@link ox#Keystore.(encrypt:function)}:
|
|
1533
1533
|
*
|
|
1534
1534
|
* ```ts twoslash
|
|
1535
1535
|
* import { Keystore, Secp256k1 } from 'ox'
|
|
@@ -1541,7 +1541,7 @@ export * as Json from './core/Json.js';
|
|
|
1541
1541
|
* const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
|
|
1542
1542
|
*
|
|
1543
1543
|
* // Encrypt the private key.
|
|
1544
|
-
* const
|
|
1544
|
+
* const keystore = Keystore.encrypt(privateKey, key, opts)
|
|
1545
1545
|
* // @log: {
|
|
1546
1546
|
* // @log: "crypto": {
|
|
1547
1547
|
* // @log: "cipher": "aes-128-ctr",
|
|
@@ -1561,10 +1561,26 @@ export * as Json from './core/Json.js';
|
|
|
1561
1561
|
* // @log: "id": "...",
|
|
1562
1562
|
* // @log: "version": 3,
|
|
1563
1563
|
* // @log: }
|
|
1564
|
+
* ```
|
|
1565
|
+
*
|
|
1566
|
+
* @example
|
|
1567
|
+
* ### Decrypting Private Keys
|
|
1568
|
+
*
|
|
1569
|
+
* Private keys can be decrypted from a JSON keystore using {@link ox#Keystore.(decrypt:function)}:
|
|
1570
|
+
*
|
|
1571
|
+
* ```ts twoslash
|
|
1572
|
+
* // @noErrors
|
|
1573
|
+
* import { Keystore, Secp256k1 } from 'ox'
|
|
1574
|
+
*
|
|
1575
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
1576
|
+
*
|
|
1577
|
+
* // Derive the key.
|
|
1578
|
+
* const key = Keystore.toKey(keystore, { password: 'testpassword' })
|
|
1564
1579
|
*
|
|
1565
1580
|
* // Decrypt the private key.
|
|
1566
|
-
* const decrypted =
|
|
1581
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
1567
1582
|
* // @log: "0x..."
|
|
1583
|
+
*
|
|
1568
1584
|
* ```
|
|
1569
1585
|
*
|
|
1570
1586
|
* @category Crypto
|
package/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/_esm/version.js
CHANGED
|
@@ -54,11 +54,11 @@ export type ScryptDeriveOpts = BaseDeriveOpts<'scrypt', {
|
|
|
54
54
|
* // JSON keystore.
|
|
55
55
|
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
56
56
|
*
|
|
57
|
-
* //
|
|
58
|
-
* const key =
|
|
57
|
+
* // Derive the key using your password.
|
|
58
|
+
* const key = Keystore.toKey(keystore, { password: 'hunter2' })
|
|
59
59
|
*
|
|
60
60
|
* // Decrypt the private key.
|
|
61
|
-
* const privateKey =
|
|
61
|
+
* const privateKey = Keystore.decrypt(keystore, key)
|
|
62
62
|
* // @log: "0x..."
|
|
63
63
|
* ```
|
|
64
64
|
*
|
|
@@ -67,7 +67,7 @@ export type ScryptDeriveOpts = BaseDeriveOpts<'scrypt', {
|
|
|
67
67
|
* @param options - Decryption options.
|
|
68
68
|
* @returns Decrypted private key.
|
|
69
69
|
*/
|
|
70
|
-
export declare function decrypt<as extends 'Hex' | 'Bytes' = 'Hex'>(keystore: Keystore, key: Key, options?: decrypt.Options<as>):
|
|
70
|
+
export declare function decrypt<as extends 'Hex' | 'Bytes' = 'Hex'>(keystore: Keystore, key: Key, options?: decrypt.Options<as>): decrypt.ReturnType<as>;
|
|
71
71
|
export declare namespace decrypt {
|
|
72
72
|
type Options<as extends 'Hex' | 'Bytes' = 'Hex' | 'Bytes'> = {
|
|
73
73
|
/** Output format. @default 'Hex' */
|
|
@@ -94,7 +94,7 @@ export declare namespace decrypt {
|
|
|
94
94
|
* const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
|
|
95
95
|
*
|
|
96
96
|
* // Encrypt the private key.
|
|
97
|
-
* const encrypted =
|
|
97
|
+
* const encrypted = Keystore.encrypt(privateKey, key, opts)
|
|
98
98
|
* // @log: {
|
|
99
99
|
* // @log: "crypto": {
|
|
100
100
|
* // @log: "cipher": "aes-128-ctr",
|
|
@@ -121,7 +121,7 @@ export declare namespace decrypt {
|
|
|
121
121
|
* @param options - Encryption options.
|
|
122
122
|
* @returns Encrypted keystore.
|
|
123
123
|
*/
|
|
124
|
-
export declare function encrypt(privateKey: Bytes.Bytes | Hex.Hex, key: Key, options: encrypt.Options):
|
|
124
|
+
export declare function encrypt(privateKey: Bytes.Bytes | Hex.Hex, key: Key, options: encrypt.Options): Keystore;
|
|
125
125
|
export declare namespace encrypt {
|
|
126
126
|
type Options = DeriveOpts & {
|
|
127
127
|
/** UUID. */
|
|
@@ -211,8 +211,8 @@ export declare function scrypt(options: scrypt.Options): [() => `0x${string}`, {
|
|
|
211
211
|
readonly kdfparams: {
|
|
212
212
|
readonly dklen: 32;
|
|
213
213
|
readonly n: number;
|
|
214
|
-
readonly p:
|
|
215
|
-
readonly r:
|
|
214
|
+
readonly p: number;
|
|
215
|
+
readonly r: number;
|
|
216
216
|
readonly salt: string;
|
|
217
217
|
};
|
|
218
218
|
readonly kdf: "scrypt";
|
|
@@ -225,6 +225,10 @@ export declare namespace scrypt {
|
|
|
225
225
|
iv?: Bytes.Bytes | Hex.Hex | undefined;
|
|
226
226
|
/** Cost factor. @default 262_144 */
|
|
227
227
|
n?: number | undefined;
|
|
228
|
+
/** Parallelization factor. @default 8 */
|
|
229
|
+
p?: number | undefined;
|
|
230
|
+
/** Block size. @default 1 */
|
|
231
|
+
r?: number | undefined;
|
|
228
232
|
/** Password to derive key from. */
|
|
229
233
|
password: string;
|
|
230
234
|
/** Salt to use for key derivation. @default `Bytes.random(32)` */
|
|
@@ -260,5 +264,59 @@ export declare function scryptAsync(options: scrypt.Options): Promise<[() => `0x
|
|
|
260
264
|
export declare namespace scryptAsync {
|
|
261
265
|
type Options = scrypt.Options;
|
|
262
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Extracts a Key from a JSON Keystore to use for decryption.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```ts twoslash
|
|
272
|
+
* // @noErrors
|
|
273
|
+
* import { Keystore } from 'ox'
|
|
274
|
+
*
|
|
275
|
+
* // JSON keystore.
|
|
276
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
277
|
+
*
|
|
278
|
+
* const key = Keystore.toKey(keystore, { password: 'hunter2' }) // [!code focus]
|
|
279
|
+
*
|
|
280
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
281
|
+
* ```
|
|
282
|
+
*
|
|
283
|
+
* @param keystore - JSON Keystore
|
|
284
|
+
* @param options - Options
|
|
285
|
+
* @returns Key
|
|
286
|
+
*/
|
|
287
|
+
export declare function toKey(keystore: Keystore, options: toKey.Options): Key;
|
|
288
|
+
export declare namespace toKey {
|
|
289
|
+
type Options = {
|
|
290
|
+
/** Password to derive key from. */
|
|
291
|
+
password: string;
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Extracts a Key asynchronously from a JSON Keystore to use for decryption.
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```ts twoslash
|
|
299
|
+
* // @noErrors
|
|
300
|
+
* import { Keystore } from 'ox'
|
|
301
|
+
*
|
|
302
|
+
* // JSON keystore.
|
|
303
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
304
|
+
*
|
|
305
|
+
* const key = await Keystore.toKeyAsync(keystore, { password: 'hunter2' }) // [!code focus]
|
|
306
|
+
*
|
|
307
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
308
|
+
* ```
|
|
309
|
+
*
|
|
310
|
+
* @param keystore - JSON Keystore
|
|
311
|
+
* @param options - Options
|
|
312
|
+
* @returns Key
|
|
313
|
+
*/
|
|
314
|
+
export declare function toKeyAsync(keystore: Keystore, options: toKeyAsync.Options): Promise<Key>;
|
|
315
|
+
export declare namespace toKeyAsync {
|
|
316
|
+
type Options = {
|
|
317
|
+
/** Password to derive key from. */
|
|
318
|
+
password: string;
|
|
319
|
+
};
|
|
320
|
+
}
|
|
263
321
|
export {};
|
|
264
322
|
//# sourceMappingURL=Keystore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Keystore.d.ts","sourceRoot":"","sources":["../../core/Keystore.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAGnC,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"Keystore.d.ts","sourceRoot":"","sources":["../../core/Keystore.ts"],"names":[],"mappings":"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"}
|
package/_types/index.d.ts
CHANGED
|
@@ -1529,9 +1529,9 @@ export * as Json from './core/Json.js';
|
|
|
1529
1529
|
* Utilities & types for working with [Keystores](https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage).
|
|
1530
1530
|
*
|
|
1531
1531
|
* @example
|
|
1532
|
-
* ### Encrypting
|
|
1532
|
+
* ### Encrypting Private Keys
|
|
1533
1533
|
*
|
|
1534
|
-
* Private keys can be encrypted into a JSON keystore using {@link ox#Keystore.(encrypt:function)}
|
|
1534
|
+
* Private keys can be encrypted into a JSON keystore using {@link ox#Keystore.(encrypt:function)}:
|
|
1535
1535
|
*
|
|
1536
1536
|
* ```ts twoslash
|
|
1537
1537
|
* import { Keystore, Secp256k1 } from 'ox'
|
|
@@ -1543,7 +1543,7 @@ export * as Json from './core/Json.js';
|
|
|
1543
1543
|
* const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
|
|
1544
1544
|
*
|
|
1545
1545
|
* // Encrypt the private key.
|
|
1546
|
-
* const
|
|
1546
|
+
* const keystore = Keystore.encrypt(privateKey, key, opts)
|
|
1547
1547
|
* // @log: {
|
|
1548
1548
|
* // @log: "crypto": {
|
|
1549
1549
|
* // @log: "cipher": "aes-128-ctr",
|
|
@@ -1563,10 +1563,26 @@ export * as Json from './core/Json.js';
|
|
|
1563
1563
|
* // @log: "id": "...",
|
|
1564
1564
|
* // @log: "version": 3,
|
|
1565
1565
|
* // @log: }
|
|
1566
|
+
* ```
|
|
1567
|
+
*
|
|
1568
|
+
* @example
|
|
1569
|
+
* ### Decrypting Private Keys
|
|
1570
|
+
*
|
|
1571
|
+
* Private keys can be decrypted from a JSON keystore using {@link ox#Keystore.(decrypt:function)}:
|
|
1572
|
+
*
|
|
1573
|
+
* ```ts twoslash
|
|
1574
|
+
* // @noErrors
|
|
1575
|
+
* import { Keystore, Secp256k1 } from 'ox'
|
|
1576
|
+
*
|
|
1577
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
1578
|
+
*
|
|
1579
|
+
* // Derive the key.
|
|
1580
|
+
* const key = Keystore.toKey(keystore, { password: 'testpassword' })
|
|
1566
1581
|
*
|
|
1567
1582
|
* // Decrypt the private key.
|
|
1568
|
-
* const decrypted =
|
|
1583
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
1569
1584
|
* // @log: "0x..."
|
|
1585
|
+
*
|
|
1570
1586
|
* ```
|
|
1571
1587
|
*
|
|
1572
1588
|
* @category Crypto
|
package/_types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/_types/version.d.ts
CHANGED
package/core/Keystore.ts
CHANGED
|
@@ -12,6 +12,7 @@ import * as Bytes from './Bytes.js'
|
|
|
12
12
|
import type * as Errors from './Errors.js'
|
|
13
13
|
import * as Hash from './Hash.js'
|
|
14
14
|
import type * as Hex from './Hex.js'
|
|
15
|
+
import type { OneOf } from './internal/types.js'
|
|
15
16
|
|
|
16
17
|
/** Base Derivation Options. */
|
|
17
18
|
type BaseDeriveOpts<
|
|
@@ -82,11 +83,11 @@ export type ScryptDeriveOpts = BaseDeriveOpts<
|
|
|
82
83
|
* // JSON keystore.
|
|
83
84
|
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
84
85
|
*
|
|
85
|
-
* //
|
|
86
|
-
* const key =
|
|
86
|
+
* // Derive the key using your password.
|
|
87
|
+
* const key = Keystore.toKey(keystore, { password: 'hunter2' })
|
|
87
88
|
*
|
|
88
89
|
* // Decrypt the private key.
|
|
89
|
-
* const privateKey =
|
|
90
|
+
* const privateKey = Keystore.decrypt(keystore, key)
|
|
90
91
|
* // @log: "0x..."
|
|
91
92
|
* ```
|
|
92
93
|
*
|
|
@@ -95,11 +96,11 @@ export type ScryptDeriveOpts = BaseDeriveOpts<
|
|
|
95
96
|
* @param options - Decryption options.
|
|
96
97
|
* @returns Decrypted private key.
|
|
97
98
|
*/
|
|
98
|
-
export
|
|
99
|
+
export function decrypt<as extends 'Hex' | 'Bytes' = 'Hex'>(
|
|
99
100
|
keystore: Keystore,
|
|
100
101
|
key: Key,
|
|
101
102
|
options: decrypt.Options<as> = {},
|
|
102
|
-
):
|
|
103
|
+
): decrypt.ReturnType<as> {
|
|
103
104
|
const { as = 'Hex' } = options
|
|
104
105
|
const key_ = Bytes.from(typeof key === 'function' ? key() : key)
|
|
105
106
|
|
|
@@ -151,7 +152,7 @@ export declare namespace decrypt {
|
|
|
151
152
|
* const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
|
|
152
153
|
*
|
|
153
154
|
* // Encrypt the private key.
|
|
154
|
-
* const encrypted =
|
|
155
|
+
* const encrypted = Keystore.encrypt(privateKey, key, opts)
|
|
155
156
|
* // @log: {
|
|
156
157
|
* // @log: "crypto": {
|
|
157
158
|
* // @log: "cipher": "aes-128-ctr",
|
|
@@ -178,11 +179,11 @@ export declare namespace decrypt {
|
|
|
178
179
|
* @param options - Encryption options.
|
|
179
180
|
* @returns Encrypted keystore.
|
|
180
181
|
*/
|
|
181
|
-
export
|
|
182
|
+
export function encrypt(
|
|
182
183
|
privateKey: Bytes.Bytes | Hex.Hex,
|
|
183
184
|
key: Key,
|
|
184
185
|
options: encrypt.Options,
|
|
185
|
-
):
|
|
186
|
+
): Keystore {
|
|
186
187
|
const { id = crypto.randomUUID(), kdf, kdfparams, iv } = options
|
|
187
188
|
|
|
188
189
|
const key_ = Bytes.from(typeof key === 'function' ? key() : key)
|
|
@@ -315,10 +316,7 @@ export declare namespace pbkdf2Async {
|
|
|
315
316
|
* @returns Scrypt key.
|
|
316
317
|
*/
|
|
317
318
|
export function scrypt(options: scrypt.Options) {
|
|
318
|
-
const { iv, n = 262_144, password } = options
|
|
319
|
-
|
|
320
|
-
const p = 8
|
|
321
|
-
const r = 1
|
|
319
|
+
const { iv, n = 262_144, password, p = 8, r = 1 } = options
|
|
322
320
|
|
|
323
321
|
const salt = options.salt ? Bytes.from(options.salt) : Bytes.random(32)
|
|
324
322
|
const key = Bytes.toHex(
|
|
@@ -344,6 +342,10 @@ export declare namespace scrypt {
|
|
|
344
342
|
iv?: Bytes.Bytes | Hex.Hex | undefined
|
|
345
343
|
/** Cost factor. @default 262_144 */
|
|
346
344
|
n?: number | undefined
|
|
345
|
+
/** Parallelization factor. @default 8 */
|
|
346
|
+
p?: number | undefined
|
|
347
|
+
/** Block size. @default 1 */
|
|
348
|
+
r?: number | undefined
|
|
347
349
|
/** Password to derive key from. */
|
|
348
350
|
password: string
|
|
349
351
|
/** Salt to use for key derivation. @default `Bytes.random(32)` */
|
|
@@ -392,6 +394,133 @@ export declare namespace scryptAsync {
|
|
|
392
394
|
type Options = scrypt.Options
|
|
393
395
|
}
|
|
394
396
|
|
|
397
|
+
/**
|
|
398
|
+
* Extracts a Key from a JSON Keystore to use for decryption.
|
|
399
|
+
*
|
|
400
|
+
* @example
|
|
401
|
+
* ```ts twoslash
|
|
402
|
+
* // @noErrors
|
|
403
|
+
* import { Keystore } from 'ox'
|
|
404
|
+
*
|
|
405
|
+
* // JSON keystore.
|
|
406
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
407
|
+
*
|
|
408
|
+
* const key = Keystore.toKey(keystore, { password: 'hunter2' }) // [!code focus]
|
|
409
|
+
*
|
|
410
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
411
|
+
* ```
|
|
412
|
+
*
|
|
413
|
+
* @param keystore - JSON Keystore
|
|
414
|
+
* @param options - Options
|
|
415
|
+
* @returns Key
|
|
416
|
+
*/
|
|
417
|
+
export function toKey(keystore: Keystore, options: toKey.Options): Key {
|
|
418
|
+
const { crypto } = keystore
|
|
419
|
+
const { password } = options
|
|
420
|
+
const { cipherparams, kdf, kdfparams } = crypto
|
|
421
|
+
const { iv } = cipherparams
|
|
422
|
+
const { c, n, p, r, salt } = kdfparams as OneOf<
|
|
423
|
+
Pbkdf2DeriveOpts['kdfparams'] | ScryptDeriveOpts['kdfparams']
|
|
424
|
+
>
|
|
425
|
+
|
|
426
|
+
const [key] = (() => {
|
|
427
|
+
switch (kdf) {
|
|
428
|
+
case 'scrypt':
|
|
429
|
+
return scrypt({
|
|
430
|
+
iv: Bytes.from(`0x${iv}`),
|
|
431
|
+
n,
|
|
432
|
+
p,
|
|
433
|
+
r,
|
|
434
|
+
salt: Bytes.from(`0x${salt}`),
|
|
435
|
+
password,
|
|
436
|
+
})
|
|
437
|
+
case 'pbkdf2':
|
|
438
|
+
return pbkdf2({
|
|
439
|
+
iv: Bytes.from(`0x${iv}`),
|
|
440
|
+
iterations: c,
|
|
441
|
+
password,
|
|
442
|
+
salt: Bytes.from(`0x${salt}`),
|
|
443
|
+
})
|
|
444
|
+
default:
|
|
445
|
+
throw new Error('unsupported kdf')
|
|
446
|
+
}
|
|
447
|
+
})()
|
|
448
|
+
|
|
449
|
+
return key
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
export declare namespace toKey {
|
|
453
|
+
type Options = {
|
|
454
|
+
/** Password to derive key from. */
|
|
455
|
+
password: string
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Extracts a Key asynchronously from a JSON Keystore to use for decryption.
|
|
461
|
+
*
|
|
462
|
+
* @example
|
|
463
|
+
* ```ts twoslash
|
|
464
|
+
* // @noErrors
|
|
465
|
+
* import { Keystore } from 'ox'
|
|
466
|
+
*
|
|
467
|
+
* // JSON keystore.
|
|
468
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
469
|
+
*
|
|
470
|
+
* const key = await Keystore.toKeyAsync(keystore, { password: 'hunter2' }) // [!code focus]
|
|
471
|
+
*
|
|
472
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
473
|
+
* ```
|
|
474
|
+
*
|
|
475
|
+
* @param keystore - JSON Keystore
|
|
476
|
+
* @param options - Options
|
|
477
|
+
* @returns Key
|
|
478
|
+
*/
|
|
479
|
+
export async function toKeyAsync(
|
|
480
|
+
keystore: Keystore,
|
|
481
|
+
options: toKeyAsync.Options,
|
|
482
|
+
): Promise<Key> {
|
|
483
|
+
const { crypto } = keystore
|
|
484
|
+
const { password } = options
|
|
485
|
+
const { cipherparams, kdf, kdfparams } = crypto
|
|
486
|
+
const { iv } = cipherparams
|
|
487
|
+
const { c, n, p, r, salt } = kdfparams as OneOf<
|
|
488
|
+
Pbkdf2DeriveOpts['kdfparams'] | ScryptDeriveOpts['kdfparams']
|
|
489
|
+
>
|
|
490
|
+
|
|
491
|
+
const [key] = await (async () => {
|
|
492
|
+
switch (kdf) {
|
|
493
|
+
case 'scrypt':
|
|
494
|
+
return await scryptAsync({
|
|
495
|
+
iv: Bytes.from(`0x${iv}`),
|
|
496
|
+
n,
|
|
497
|
+
p,
|
|
498
|
+
r,
|
|
499
|
+
salt: Bytes.from(`0x${salt}`),
|
|
500
|
+
password,
|
|
501
|
+
})
|
|
502
|
+
case 'pbkdf2':
|
|
503
|
+
return await pbkdf2({
|
|
504
|
+
iv: Bytes.from(`0x${iv}`),
|
|
505
|
+
iterations: c,
|
|
506
|
+
password,
|
|
507
|
+
salt: Bytes.from(`0x${salt}`),
|
|
508
|
+
})
|
|
509
|
+
default:
|
|
510
|
+
throw new Error('unsupported kdf')
|
|
511
|
+
}
|
|
512
|
+
})()
|
|
513
|
+
|
|
514
|
+
return key
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
export declare namespace toKeyAsync {
|
|
518
|
+
type Options = {
|
|
519
|
+
/** Password to derive key from. */
|
|
520
|
+
password: string
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
395
524
|
///////////////////////////////////////////////////////////////////////////
|
|
396
525
|
|
|
397
526
|
/** @internal */
|
package/index.ts
CHANGED
|
@@ -1563,9 +1563,9 @@ export * as Json from './core/Json.js'
|
|
|
1563
1563
|
* Utilities & types for working with [Keystores](https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage).
|
|
1564
1564
|
*
|
|
1565
1565
|
* @example
|
|
1566
|
-
* ### Encrypting
|
|
1566
|
+
* ### Encrypting Private Keys
|
|
1567
1567
|
*
|
|
1568
|
-
* Private keys can be encrypted into a JSON keystore using {@link ox#Keystore.(encrypt:function)}
|
|
1568
|
+
* Private keys can be encrypted into a JSON keystore using {@link ox#Keystore.(encrypt:function)}:
|
|
1569
1569
|
*
|
|
1570
1570
|
* ```ts twoslash
|
|
1571
1571
|
* import { Keystore, Secp256k1 } from 'ox'
|
|
@@ -1577,7 +1577,7 @@ export * as Json from './core/Json.js'
|
|
|
1577
1577
|
* const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
|
|
1578
1578
|
*
|
|
1579
1579
|
* // Encrypt the private key.
|
|
1580
|
-
* const
|
|
1580
|
+
* const keystore = Keystore.encrypt(privateKey, key, opts)
|
|
1581
1581
|
* // @log: {
|
|
1582
1582
|
* // @log: "crypto": {
|
|
1583
1583
|
* // @log: "cipher": "aes-128-ctr",
|
|
@@ -1597,10 +1597,26 @@ export * as Json from './core/Json.js'
|
|
|
1597
1597
|
* // @log: "id": "...",
|
|
1598
1598
|
* // @log: "version": 3,
|
|
1599
1599
|
* // @log: }
|
|
1600
|
+
* ```
|
|
1601
|
+
*
|
|
1602
|
+
* @example
|
|
1603
|
+
* ### Decrypting Private Keys
|
|
1604
|
+
*
|
|
1605
|
+
* Private keys can be decrypted from a JSON keystore using {@link ox#Keystore.(decrypt:function)}:
|
|
1606
|
+
*
|
|
1607
|
+
* ```ts twoslash
|
|
1608
|
+
* // @noErrors
|
|
1609
|
+
* import { Keystore, Secp256k1 } from 'ox'
|
|
1610
|
+
*
|
|
1611
|
+
* const keystore = { crypto: { ... }, id: '...', version: 3 }
|
|
1612
|
+
*
|
|
1613
|
+
* // Derive the key.
|
|
1614
|
+
* const key = Keystore.toKey(keystore, { password: 'testpassword' })
|
|
1600
1615
|
*
|
|
1601
1616
|
* // Decrypt the private key.
|
|
1602
|
-
* const decrypted =
|
|
1617
|
+
* const decrypted = Keystore.decrypt(keystore, key)
|
|
1603
1618
|
* // @log: "0x..."
|
|
1619
|
+
*
|
|
1604
1620
|
* ```
|
|
1605
1621
|
*
|
|
1606
1622
|
* @category Crypto
|
package/package.json
CHANGED
package/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
export const version = '0.8.
|
|
2
|
+
export const version = '0.8.1'
|