@libp2p/keychain 5.1.4-d53ef170c → 5.1.4-da7353a0b
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/dist/index.min.js +3 -3
- package/dist/src/index.d.ts +0 -28
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/keychain.d.ts +1 -8
- package/dist/src/keychain.d.ts.map +1 -1
- package/dist/src/keychain.js +21 -103
- package/dist/src/keychain.js.map +1 -1
- package/package.json +4 -5
- package/src/index.ts +0 -33
- package/src/keychain.ts +22 -125
package/dist/src/index.d.ts
CHANGED
|
@@ -95,12 +95,6 @@ export interface KeyInfo {
|
|
|
95
95
|
*/
|
|
96
96
|
name: string;
|
|
97
97
|
}
|
|
98
|
-
export interface X509Info {
|
|
99
|
-
/**
|
|
100
|
-
* The local key name
|
|
101
|
-
*/
|
|
102
|
-
name: string;
|
|
103
|
-
}
|
|
104
98
|
export interface Keychain {
|
|
105
99
|
/**
|
|
106
100
|
* Find a key by name
|
|
@@ -190,28 +184,6 @@ export interface Keychain {
|
|
|
190
184
|
* ```
|
|
191
185
|
*/
|
|
192
186
|
listKeys(): Promise<KeyInfo[]>;
|
|
193
|
-
/**
|
|
194
|
-
* Import an X509 certificate in PEM format
|
|
195
|
-
*/
|
|
196
|
-
importX509(name: string, pem: string): Promise<void>;
|
|
197
|
-
/**
|
|
198
|
-
* Export an X509 certificate in PEM format
|
|
199
|
-
*/
|
|
200
|
-
exportX509(name: string): Promise<string>;
|
|
201
|
-
/**
|
|
202
|
-
* Removes an X509 certificate from the keychain
|
|
203
|
-
*/
|
|
204
|
-
removeX509(name: string): Promise<void>;
|
|
205
|
-
/**
|
|
206
|
-
* List all certificates.
|
|
207
|
-
*
|
|
208
|
-
* @example
|
|
209
|
-
*
|
|
210
|
-
* ```TypeScript
|
|
211
|
-
* const certs = await libp2p.keychain.listX509()
|
|
212
|
-
* ```
|
|
213
|
-
*/
|
|
214
|
-
listX509(): Promise<X509Info[]>;
|
|
215
187
|
/**
|
|
216
188
|
* Rotate keychain password and re-encrypt all associated keys
|
|
217
189
|
*
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IAEf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,QAAQ;IACvB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IAEf;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,QAAQ;IACvB;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7C;;;;;;;;;;;;OAYG;IACH,WAAW,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1C;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE1D;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAE5C;;;;;;;;;OASG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEzC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7D;;;;;;;;OAQG;IACH,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;IAE9B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpE;AAED,wBAAgB,QAAQ,CAAE,IAAI,GAAE,YAAiB,GAAG,CAAC,UAAU,EAAE,kBAAkB,KAAK,QAAQ,CAI/F"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,eAAe,CAAA;AAkKzD,MAAM,UAAU,QAAQ,CAAE,OAAqB,EAAE;IAC/C,OAAO,CAAC,UAA8B,EAAE,EAAE;QACxC,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC5C,CAAC,CAAA;AACH,CAAC"}
|
package/dist/src/keychain.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { serviceCapabilities } from '@libp2p/interface';
|
|
2
|
-
import type { KeychainComponents, KeychainInit, Keychain as KeychainInterface, KeyInfo
|
|
2
|
+
import type { KeychainComponents, KeychainInit, Keychain as KeychainInterface, KeyInfo } from './index.js';
|
|
3
3
|
import type { PrivateKey } from '@libp2p/interface';
|
|
4
4
|
declare const defaultOptions: {
|
|
5
5
|
dek: {
|
|
@@ -61,13 +61,6 @@ export declare class Keychain implements KeychainInterface {
|
|
|
61
61
|
* @returns {Promise<KeyInfo>}
|
|
62
62
|
*/
|
|
63
63
|
renameKey(oldName: string, newName: string): Promise<KeyInfo>;
|
|
64
|
-
/**
|
|
65
|
-
* List all the certificates
|
|
66
|
-
*/
|
|
67
|
-
listX509(): Promise<X509Info[]>;
|
|
68
|
-
importX509(name: string, pem: string): Promise<void>;
|
|
69
|
-
exportX509(name: string): Promise<string>;
|
|
70
|
-
removeX509(name: string): Promise<void>;
|
|
71
64
|
/**
|
|
72
65
|
* Rotate keychain password and re-encrypt all associated keys
|
|
73
66
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/keychain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyC,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAU9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,IAAI,iBAAiB,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/keychain.ts"],"names":[],"mappings":"AAIA,OAAO,EAAyC,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAU9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,QAAQ,IAAI,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC1G,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAa3D,QAAA,MAAM,cAAc;;;;;;;CAQnB,CAAA;AAwCD,wBAAsB,KAAK,CAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7D;AAED;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAE7B;;OAEG;gBACU,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY;IAgC/D,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,sBAAqB;IAElD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED;;;;OAIG;IACH,MAAM,CAAC,eAAe,IAAK,YAAY;IAOvC;;;;;OAKG;IACH,MAAM,KAAK,OAAO,IAAK,OAAO,cAAc,CAE3C;IAEK,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB9C,WAAW,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB1C,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA6C3D,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB7C,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhD;;;;OAIG;IACG,QAAQ,IAAK,OAAO,CAAC,OAAO,EAAE,CAAC;IAarC;;;;;;OAMG;IACG,SAAS,CAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCpE;;OAEG;IACG,kBAAkB,CAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmD3E"}
|
package/dist/src/keychain.js
CHANGED
|
@@ -9,10 +9,9 @@ import { sha256 } from 'multiformats/hashes/sha2';
|
|
|
9
9
|
import sanitize from 'sanitize-filename';
|
|
10
10
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
|
11
11
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
12
|
-
import { exportPrivateKey
|
|
13
|
-
import { importPrivateKey
|
|
12
|
+
import { exportPrivateKey } from './utils/export.js';
|
|
13
|
+
import { importPrivateKey } from './utils/import.js';
|
|
14
14
|
const keyPrefix = '/pkcs8/';
|
|
15
|
-
const certPrefix = '/x509/';
|
|
16
15
|
const infoPrefix = '/info/';
|
|
17
16
|
const privates = new WeakMap();
|
|
18
17
|
// NIST SP 800-132
|
|
@@ -54,8 +53,8 @@ async function randomDelay() {
|
|
|
54
53
|
/**
|
|
55
54
|
* Converts a key name into a datastore name
|
|
56
55
|
*/
|
|
57
|
-
function DsName(
|
|
58
|
-
return new Key(
|
|
56
|
+
function DsName(name) {
|
|
57
|
+
return new Key(keyPrefix + name);
|
|
59
58
|
}
|
|
60
59
|
/**
|
|
61
60
|
* Converts a key name into a datastore info name
|
|
@@ -174,7 +173,7 @@ export class Keychain {
|
|
|
174
173
|
await randomDelay();
|
|
175
174
|
throw new InvalidParametersError('Key is required');
|
|
176
175
|
}
|
|
177
|
-
const datastoreName = DsName(
|
|
176
|
+
const datastoreName = DsName(name);
|
|
178
177
|
const exists = await this.components.datastore.has(datastoreName);
|
|
179
178
|
if (exists) {
|
|
180
179
|
await randomDelay();
|
|
@@ -210,7 +209,7 @@ export class Keychain {
|
|
|
210
209
|
await randomDelay();
|
|
211
210
|
throw new InvalidParametersError(`Invalid key name '${name}'`);
|
|
212
211
|
}
|
|
213
|
-
const datastoreName = DsName(
|
|
212
|
+
const datastoreName = DsName(name);
|
|
214
213
|
try {
|
|
215
214
|
const res = await this.components.datastore.get(datastoreName);
|
|
216
215
|
const pem = uint8ArrayToString(res);
|
|
@@ -231,7 +230,7 @@ export class Keychain {
|
|
|
231
230
|
await randomDelay();
|
|
232
231
|
throw new InvalidParametersError(`Invalid key name '${name}'`);
|
|
233
232
|
}
|
|
234
|
-
const datastoreName = DsName(
|
|
233
|
+
const datastoreName = DsName(name);
|
|
235
234
|
const keyInfo = await this.findKeyByName(name);
|
|
236
235
|
const batch = this.components.datastore.batch();
|
|
237
236
|
batch.delete(datastoreName);
|
|
@@ -270,8 +269,8 @@ export class Keychain {
|
|
|
270
269
|
await randomDelay();
|
|
271
270
|
throw new InvalidParametersError(`Invalid new key name '${newName}'`);
|
|
272
271
|
}
|
|
273
|
-
const oldDatastoreName = DsName(
|
|
274
|
-
const newDatastoreName = DsName(
|
|
272
|
+
const oldDatastoreName = DsName(oldName);
|
|
273
|
+
const newDatastoreName = DsName(newName);
|
|
275
274
|
const oldInfoName = DsInfoName(oldName);
|
|
276
275
|
const newInfoName = DsInfoName(newName);
|
|
277
276
|
const exists = await this.components.datastore.has(newDatastoreName);
|
|
@@ -297,84 +296,6 @@ export class Keychain {
|
|
|
297
296
|
throw err;
|
|
298
297
|
}
|
|
299
298
|
}
|
|
300
|
-
/**
|
|
301
|
-
* List all the certificates
|
|
302
|
-
*/
|
|
303
|
-
async listX509() {
|
|
304
|
-
const query = {
|
|
305
|
-
prefix: certPrefix
|
|
306
|
-
};
|
|
307
|
-
const info = [];
|
|
308
|
-
for await (const value of this.components.datastore.query(query)) {
|
|
309
|
-
info.push({
|
|
310
|
-
name: value.key.toString().replace(certPrefix, '')
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
return info;
|
|
314
|
-
}
|
|
315
|
-
async importX509(name, pem) {
|
|
316
|
-
try {
|
|
317
|
-
if (!validateKeyName(name)) {
|
|
318
|
-
throw new InvalidParametersError(`Invalid certificate name '${name}'`);
|
|
319
|
-
}
|
|
320
|
-
if (pem == null) {
|
|
321
|
-
throw new InvalidParametersError('PEM is required');
|
|
322
|
-
}
|
|
323
|
-
if (!pem.includes('-----BEGIN CERTIFICATE-----') && !pem.includes('-----END CERTIFICATE-----')) {
|
|
324
|
-
throw new InvalidParametersError('PEM was invalid');
|
|
325
|
-
}
|
|
326
|
-
const datastoreName = DsName(certPrefix, name);
|
|
327
|
-
const exists = await this.components.datastore.has(datastoreName);
|
|
328
|
-
if (exists) {
|
|
329
|
-
throw new InvalidParametersError(`Certificate '${name}' already exists`);
|
|
330
|
-
}
|
|
331
|
-
const cached = privates.get(this);
|
|
332
|
-
if (cached == null) {
|
|
333
|
-
throw new InvalidParametersError('dek missing');
|
|
334
|
-
}
|
|
335
|
-
const dek = cached.dek;
|
|
336
|
-
const dsPem = await exporter(uint8ArrayFromString(pem), dek);
|
|
337
|
-
await this.components.datastore.put(datastoreName, uint8ArrayFromString(dsPem));
|
|
338
|
-
}
|
|
339
|
-
catch (err) {
|
|
340
|
-
await randomDelay();
|
|
341
|
-
throw err;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
async exportX509(name) {
|
|
345
|
-
try {
|
|
346
|
-
if (!validateKeyName(name)) {
|
|
347
|
-
throw new InvalidParametersError(`Invalid key name '${name}'`);
|
|
348
|
-
}
|
|
349
|
-
const datastoreName = DsName(certPrefix, name);
|
|
350
|
-
const res = await this.components.datastore.get(datastoreName);
|
|
351
|
-
const encryptedPem = uint8ArrayToString(res);
|
|
352
|
-
const cached = privates.get(this);
|
|
353
|
-
if (cached == null) {
|
|
354
|
-
throw new InvalidParametersError('dek missing');
|
|
355
|
-
}
|
|
356
|
-
const dek = cached.dek;
|
|
357
|
-
const buf = await importer(encryptedPem, dek);
|
|
358
|
-
return uint8ArrayToString(buf);
|
|
359
|
-
}
|
|
360
|
-
catch (err) {
|
|
361
|
-
await randomDelay();
|
|
362
|
-
throw err;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
async removeX509(name) {
|
|
366
|
-
try {
|
|
367
|
-
if (!validateKeyName(name) || name === this.self) {
|
|
368
|
-
throw new InvalidParametersError(`Invalid key name '${name}'`);
|
|
369
|
-
}
|
|
370
|
-
const datastoreName = DsName(certPrefix, name);
|
|
371
|
-
await this.components.datastore.delete(datastoreName);
|
|
372
|
-
}
|
|
373
|
-
catch (err) {
|
|
374
|
-
await randomDelay();
|
|
375
|
-
throw err;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
299
|
/**
|
|
379
300
|
* Rotate keychain password and re-encrypt all associated keys
|
|
380
301
|
*/
|
|
@@ -402,26 +323,23 @@ export class Keychain {
|
|
|
402
323
|
? pbkdf2(newPass, this.init.dek.salt, this.init.dek?.iterationCount, this.init.dek?.keyLength, this.init.dek?.hash)
|
|
403
324
|
: '';
|
|
404
325
|
privates.set(this, { dek: newDek });
|
|
405
|
-
const
|
|
406
|
-
for (const key of
|
|
407
|
-
const res = await this.components.datastore.get(DsName(
|
|
326
|
+
const keys = await this.listKeys();
|
|
327
|
+
for (const key of keys) {
|
|
328
|
+
const res = await this.components.datastore.get(DsName(key.name));
|
|
408
329
|
const pem = uint8ArrayToString(res);
|
|
409
330
|
const privateKey = await importPrivateKey(pem, oldDek);
|
|
410
331
|
const password = newDek.toString();
|
|
411
332
|
const keyAsPEM = await exportPrivateKey(privateKey, password, privateKey.type === 'RSA' ? 'pkcs-8' : 'libp2p-key');
|
|
412
|
-
//
|
|
413
|
-
batch
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
// add to batch
|
|
422
|
-
batch.put(DsName(certPrefix, key.name), uint8ArrayFromString(encrypted));
|
|
333
|
+
// Update stored key
|
|
334
|
+
const batch = this.components.datastore.batch();
|
|
335
|
+
const keyInfo = {
|
|
336
|
+
name: key.name,
|
|
337
|
+
id: key.id
|
|
338
|
+
};
|
|
339
|
+
batch.put(DsName(key.name), uint8ArrayFromString(keyAsPEM));
|
|
340
|
+
batch.put(DsInfoName(key.name), uint8ArrayFromString(JSON.stringify(keyInfo)));
|
|
341
|
+
await batch.commit();
|
|
423
342
|
}
|
|
424
|
-
await batch.commit();
|
|
425
343
|
this.log('keychain reconstructed');
|
|
426
344
|
}
|
|
427
345
|
}
|
package/dist/src/keychain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/keychain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/keychain.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/keychain",
|
|
3
|
-
"version": "5.1.4-
|
|
3
|
+
"version": "5.1.4-da7353a0b",
|
|
4
4
|
"description": "Key management and cryptographically protected messages",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/keychain#readme",
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"test:electron-main": "aegir test -t electron-main"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@libp2p/crypto": "5.0.15-
|
|
63
|
-
"@libp2p/interface": "2.7.0-
|
|
62
|
+
"@libp2p/crypto": "5.0.15-da7353a0b",
|
|
63
|
+
"@libp2p/interface": "2.7.0-da7353a0b",
|
|
64
64
|
"@noble/hashes": "^1.6.1",
|
|
65
65
|
"asn1js": "^3.0.5",
|
|
66
66
|
"interface-datastore": "^8.3.1",
|
|
@@ -70,8 +70,7 @@
|
|
|
70
70
|
"uint8arrays": "^5.1.0"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
|
-
"@libp2p/logger": "5.1.13-
|
|
74
|
-
"@peculiar/x509": "^1.12.3",
|
|
73
|
+
"@libp2p/logger": "5.1.13-da7353a0b",
|
|
75
74
|
"aegir": "^45.1.1",
|
|
76
75
|
"datastore-core": "^10.0.2"
|
|
77
76
|
},
|
package/src/index.ts
CHANGED
|
@@ -105,13 +105,6 @@ export interface KeyInfo {
|
|
|
105
105
|
name: string
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
export interface X509Info {
|
|
109
|
-
/**
|
|
110
|
-
* The local key name
|
|
111
|
-
*/
|
|
112
|
-
name: string
|
|
113
|
-
}
|
|
114
|
-
|
|
115
108
|
export interface Keychain {
|
|
116
109
|
/**
|
|
117
110
|
* Find a key by name
|
|
@@ -208,32 +201,6 @@ export interface Keychain {
|
|
|
208
201
|
*/
|
|
209
202
|
listKeys(): Promise<KeyInfo[]>
|
|
210
203
|
|
|
211
|
-
/**
|
|
212
|
-
* Import an X509 certificate in PEM format
|
|
213
|
-
*/
|
|
214
|
-
importX509 (name: string, pem: string): Promise<void>
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Export an X509 certificate in PEM format
|
|
218
|
-
*/
|
|
219
|
-
exportX509 (name: string): Promise<string>
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Removes an X509 certificate from the keychain
|
|
223
|
-
*/
|
|
224
|
-
removeX509 (name: string): Promise<void>
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* List all certificates.
|
|
228
|
-
*
|
|
229
|
-
* @example
|
|
230
|
-
*
|
|
231
|
-
* ```TypeScript
|
|
232
|
-
* const certs = await libp2p.keychain.listX509()
|
|
233
|
-
* ```
|
|
234
|
-
*/
|
|
235
|
-
listX509(): Promise<X509Info[]>
|
|
236
|
-
|
|
237
204
|
/**
|
|
238
205
|
* Rotate keychain password and re-encrypt all associated keys
|
|
239
206
|
*
|
package/src/keychain.ts
CHANGED
|
@@ -10,13 +10,12 @@ import { sha256 } from 'multiformats/hashes/sha2'
|
|
|
10
10
|
import sanitize from 'sanitize-filename'
|
|
11
11
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
12
12
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
|
13
|
-
import { exportPrivateKey
|
|
14
|
-
import { importPrivateKey
|
|
15
|
-
import type { KeychainComponents, KeychainInit, Keychain as KeychainInterface, KeyInfo
|
|
13
|
+
import { exportPrivateKey } from './utils/export.js'
|
|
14
|
+
import { importPrivateKey } from './utils/import.js'
|
|
15
|
+
import type { KeychainComponents, KeychainInit, Keychain as KeychainInterface, KeyInfo } from './index.js'
|
|
16
16
|
import type { Logger, PrivateKey } from '@libp2p/interface'
|
|
17
17
|
|
|
18
18
|
const keyPrefix = '/pkcs8/'
|
|
19
|
-
const certPrefix = '/x509/'
|
|
20
19
|
const infoPrefix = '/info/'
|
|
21
20
|
const privates = new WeakMap<object, { dek: string }>()
|
|
22
21
|
|
|
@@ -64,8 +63,8 @@ async function randomDelay (): Promise<void> {
|
|
|
64
63
|
/**
|
|
65
64
|
* Converts a key name into a datastore name
|
|
66
65
|
*/
|
|
67
|
-
function DsName (
|
|
68
|
-
return new Key(
|
|
66
|
+
function DsName (name: string): Key {
|
|
67
|
+
return new Key(keyPrefix + name)
|
|
69
68
|
}
|
|
70
69
|
|
|
71
70
|
/**
|
|
@@ -207,7 +206,7 @@ export class Keychain implements KeychainInterface {
|
|
|
207
206
|
await randomDelay()
|
|
208
207
|
throw new InvalidParametersError('Key is required')
|
|
209
208
|
}
|
|
210
|
-
const datastoreName = DsName(
|
|
209
|
+
const datastoreName = DsName(name)
|
|
211
210
|
const exists = await this.components.datastore.has(datastoreName)
|
|
212
211
|
if (exists) {
|
|
213
212
|
await randomDelay()
|
|
@@ -249,7 +248,7 @@ export class Keychain implements KeychainInterface {
|
|
|
249
248
|
throw new InvalidParametersError(`Invalid key name '${name}'`)
|
|
250
249
|
}
|
|
251
250
|
|
|
252
|
-
const datastoreName = DsName(
|
|
251
|
+
const datastoreName = DsName(name)
|
|
253
252
|
try {
|
|
254
253
|
const res = await this.components.datastore.get(datastoreName)
|
|
255
254
|
const pem = uint8ArrayToString(res)
|
|
@@ -274,7 +273,7 @@ export class Keychain implements KeychainInterface {
|
|
|
274
273
|
throw new InvalidParametersError(`Invalid key name '${name}'`)
|
|
275
274
|
}
|
|
276
275
|
|
|
277
|
-
const datastoreName = DsName(
|
|
276
|
+
const datastoreName = DsName(name)
|
|
278
277
|
const keyInfo = await this.findKeyByName(name)
|
|
279
278
|
const batch = this.components.datastore.batch()
|
|
280
279
|
batch.delete(datastoreName)
|
|
@@ -318,8 +317,8 @@ export class Keychain implements KeychainInterface {
|
|
|
318
317
|
await randomDelay()
|
|
319
318
|
throw new InvalidParametersError(`Invalid new key name '${newName}'`)
|
|
320
319
|
}
|
|
321
|
-
const oldDatastoreName = DsName(
|
|
322
|
-
const newDatastoreName = DsName(
|
|
320
|
+
const oldDatastoreName = DsName(oldName)
|
|
321
|
+
const newDatastoreName = DsName(newName)
|
|
323
322
|
const oldInfoName = DsInfoName(oldName)
|
|
324
323
|
const newInfoName = DsInfoName(newName)
|
|
325
324
|
|
|
@@ -348,99 +347,6 @@ export class Keychain implements KeychainInterface {
|
|
|
348
347
|
}
|
|
349
348
|
}
|
|
350
349
|
|
|
351
|
-
/**
|
|
352
|
-
* List all the certificates
|
|
353
|
-
*/
|
|
354
|
-
async listX509 (): Promise<X509Info[]> {
|
|
355
|
-
const query = {
|
|
356
|
-
prefix: certPrefix
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
const info = []
|
|
360
|
-
for await (const value of this.components.datastore.query(query)) {
|
|
361
|
-
info.push({
|
|
362
|
-
name: value.key.toString().replace(certPrefix, '')
|
|
363
|
-
})
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
return info
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
async importX509 (name: string, pem: string): Promise<void> {
|
|
370
|
-
try {
|
|
371
|
-
if (!validateKeyName(name)) {
|
|
372
|
-
throw new InvalidParametersError(`Invalid certificate name '${name}'`)
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
if (pem == null) {
|
|
376
|
-
throw new InvalidParametersError('PEM is required')
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
if (!pem.includes('-----BEGIN CERTIFICATE-----') && !pem.includes('-----END CERTIFICATE-----')) {
|
|
380
|
-
throw new InvalidParametersError('PEM was invalid')
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
const datastoreName = DsName(certPrefix, name)
|
|
384
|
-
|
|
385
|
-
const exists = await this.components.datastore.has(datastoreName)
|
|
386
|
-
if (exists) {
|
|
387
|
-
throw new InvalidParametersError(`Certificate '${name}' already exists`)
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
const cached = privates.get(this)
|
|
391
|
-
|
|
392
|
-
if (cached == null) {
|
|
393
|
-
throw new InvalidParametersError('dek missing')
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
const dek = cached.dek
|
|
397
|
-
const dsPem = await exporter(uint8ArrayFromString(pem), dek)
|
|
398
|
-
await this.components.datastore.put(datastoreName, uint8ArrayFromString(dsPem))
|
|
399
|
-
} catch (err) {
|
|
400
|
-
await randomDelay()
|
|
401
|
-
throw err
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
async exportX509 (name: string): Promise<string> {
|
|
406
|
-
try {
|
|
407
|
-
if (!validateKeyName(name)) {
|
|
408
|
-
throw new InvalidParametersError(`Invalid key name '${name}'`)
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
const datastoreName = DsName(certPrefix, name)
|
|
412
|
-
const res = await this.components.datastore.get(datastoreName)
|
|
413
|
-
const encryptedPem = uint8ArrayToString(res)
|
|
414
|
-
const cached = privates.get(this)
|
|
415
|
-
|
|
416
|
-
if (cached == null) {
|
|
417
|
-
throw new InvalidParametersError('dek missing')
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
const dek = cached.dek
|
|
421
|
-
const buf = await importer(encryptedPem, dek)
|
|
422
|
-
|
|
423
|
-
return uint8ArrayToString(buf)
|
|
424
|
-
} catch (err: any) {
|
|
425
|
-
await randomDelay()
|
|
426
|
-
throw err
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
async removeX509 (name: string): Promise<void> {
|
|
431
|
-
try {
|
|
432
|
-
if (!validateKeyName(name) || name === this.self) {
|
|
433
|
-
throw new InvalidParametersError(`Invalid key name '${name}'`)
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
const datastoreName = DsName(certPrefix, name)
|
|
437
|
-
await this.components.datastore.delete(datastoreName)
|
|
438
|
-
} catch (err) {
|
|
439
|
-
await randomDelay()
|
|
440
|
-
throw err
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
|
|
444
350
|
/**
|
|
445
351
|
* Rotate keychain password and re-encrypt all associated keys
|
|
446
352
|
*/
|
|
@@ -475,33 +381,24 @@ export class Keychain implements KeychainInterface {
|
|
|
475
381
|
this.init.dek?.hash)
|
|
476
382
|
: ''
|
|
477
383
|
privates.set(this, { dek: newDek })
|
|
478
|
-
|
|
479
|
-
const
|
|
480
|
-
|
|
481
|
-
for (const key of await this.listKeys()) {
|
|
482
|
-
const res = await this.components.datastore.get(DsName(keyPrefix, key.name))
|
|
384
|
+
const keys = await this.listKeys()
|
|
385
|
+
for (const key of keys) {
|
|
386
|
+
const res = await this.components.datastore.get(DsName(key.name))
|
|
483
387
|
const pem = uint8ArrayToString(res)
|
|
484
388
|
const privateKey = await importPrivateKey(pem, oldDek)
|
|
485
389
|
const password = newDek.toString()
|
|
486
390
|
const keyAsPEM = await exportPrivateKey(privateKey, password, privateKey.type === 'RSA' ? 'pkcs-8' : 'libp2p-key')
|
|
487
391
|
|
|
488
|
-
//
|
|
489
|
-
batch
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
const encrypted = await exporter(decrypted, newDek)
|
|
498
|
-
|
|
499
|
-
// add to batch
|
|
500
|
-
batch.put(DsName(certPrefix, key.name), uint8ArrayFromString(encrypted))
|
|
392
|
+
// Update stored key
|
|
393
|
+
const batch = this.components.datastore.batch()
|
|
394
|
+
const keyInfo = {
|
|
395
|
+
name: key.name,
|
|
396
|
+
id: key.id
|
|
397
|
+
}
|
|
398
|
+
batch.put(DsName(key.name), uint8ArrayFromString(keyAsPEM))
|
|
399
|
+
batch.put(DsInfoName(key.name), uint8ArrayFromString(JSON.stringify(keyInfo)))
|
|
400
|
+
await batch.commit()
|
|
501
401
|
}
|
|
502
|
-
|
|
503
|
-
await batch.commit()
|
|
504
|
-
|
|
505
402
|
this.log('keychain reconstructed')
|
|
506
403
|
}
|
|
507
404
|
}
|