@libp2p/keychain 4.1.6-dd7b329c4 → 4.1.6-e1ca9cced
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 +31 -51
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/keychain.d.ts +9 -54
- package/dist/src/keychain.d.ts.map +1 -1
- package/dist/src/keychain.js +100 -255
- package/dist/src/keychain.js.map +1 -1
- package/dist/src/utils/constants.d.ts +4 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +4 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/export.d.ts +33 -0
- package/dist/src/utils/export.d.ts.map +1 -0
- package/dist/src/utils/export.js +183 -0
- package/dist/src/utils/export.js.map +1 -0
- package/dist/src/utils/import.d.ts +15 -0
- package/dist/src/utils/import.d.ts.map +1 -0
- package/dist/src/utils/import.js +137 -0
- package/dist/src/utils/import.js.map +1 -0
- package/package.json +9 -9
- package/src/index.ts +33 -56
- package/src/keychain.ts +113 -278
- package/src/utils/constants.ts +3 -0
- package/src/utils/export.ts +210 -0
- package/src/utils/import.ts +174 -0
- package/dist/src/errors.d.ts +0 -18
- package/dist/src/errors.d.ts.map +0 -1
- package/dist/src/errors.js +0 -19
- package/dist/src/errors.js.map +0 -1
- package/dist/src/util.d.ts +0 -12
- package/dist/src/util.d.ts.map +0 -1
- package/dist/src/util.js +0 -17
- package/dist/src/util.js.map +0 -1
- package/src/errors.ts +0 -17
- package/src/util.ts +0 -16
package/dist/src/index.d.ts
CHANGED
|
@@ -50,9 +50,8 @@
|
|
|
50
50
|
*
|
|
51
51
|
* A key benefit is that now the key chain can be used in browser with the [js-datastore-level](https://github.com/ipfs/js-datastore-level) implementation.
|
|
52
52
|
*/
|
|
53
|
-
import type { ComponentLogger,
|
|
53
|
+
import type { ComponentLogger, PrivateKey } from '@libp2p/interface';
|
|
54
54
|
import type { Datastore } from 'interface-datastore';
|
|
55
|
-
import type { Multibase } from 'multiformats/bases/interface.js';
|
|
56
55
|
export interface DEKConfig {
|
|
57
56
|
hash: string;
|
|
58
57
|
salt: string;
|
|
@@ -79,68 +78,60 @@ export interface KeyInfo {
|
|
|
79
78
|
}
|
|
80
79
|
export interface Keychain {
|
|
81
80
|
/**
|
|
82
|
-
*
|
|
81
|
+
* Find a key by name
|
|
83
82
|
*
|
|
84
83
|
* @example
|
|
85
84
|
*
|
|
86
85
|
* ```TypeScript
|
|
87
|
-
*
|
|
88
|
-
* const pemKey = await libp2p.services.keychain.exportKey('keyTest', 'password123')
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
exportKey(name: string, password: string): Promise<Multibase<'m'>>;
|
|
92
|
-
/**
|
|
93
|
-
* Import a new key from a PEM encoded PKCS #8 string.
|
|
86
|
+
* import { generateKeyPair } from '@libp2p/crypto/keys'
|
|
94
87
|
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* await libp2p.services.keychain.createKey('keyTest', 'RSA', 4096)
|
|
99
|
-
* const pemKey = await libp2p.services.keychain.exportKey('keyTest', 'password123')
|
|
100
|
-
* const keyInfo = await libp2p.services.keychain.importKey('keyTestImport', pemKey, 'password123')
|
|
88
|
+
* const key = await generateKeyPair('Ed25519')
|
|
89
|
+
* const keyInfo = await libp2p.keychain.importKey('my-key', key)
|
|
90
|
+
* const keyInfo2 = await libp2p.keychain.findKeyByName(keyInfo.name)
|
|
101
91
|
* ```
|
|
102
92
|
*/
|
|
103
|
-
|
|
93
|
+
findKeyByName(name: string): Promise<KeyInfo>;
|
|
104
94
|
/**
|
|
105
|
-
*
|
|
95
|
+
* Find a key by id
|
|
106
96
|
*
|
|
107
97
|
* @example
|
|
108
98
|
*
|
|
109
99
|
* ```TypeScript
|
|
110
|
-
*
|
|
111
|
-
* ```
|
|
112
|
-
*/
|
|
113
|
-
importPeer(name: string, peerId: PeerId): Promise<KeyInfo>;
|
|
114
|
-
/**
|
|
115
|
-
* Export an existing key as a PeerId
|
|
100
|
+
* import { generateKeyPair } from '@libp2p/crypto/keys'
|
|
116
101
|
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
* const peerId = await libp2p.services.keychain.exportPeerId('key-name')
|
|
102
|
+
* const key = await generateKeyPair('Ed25519')
|
|
103
|
+
* const keyInfo = await libp2p.keychain.importKey('my-key', key)
|
|
104
|
+
* const keyInfo2 = await libp2p.keychain.findKeyById(keyInfo.id)
|
|
121
105
|
* ```
|
|
122
106
|
*/
|
|
123
|
-
|
|
107
|
+
findKeyById(id: string): Promise<KeyInfo>;
|
|
124
108
|
/**
|
|
125
|
-
*
|
|
109
|
+
* Import a new private key.
|
|
126
110
|
*
|
|
127
111
|
* @example
|
|
128
112
|
*
|
|
129
113
|
* ```TypeScript
|
|
130
|
-
*
|
|
114
|
+
* import { generateKeyPair } from '@libp2p/crypto/keys'
|
|
115
|
+
*
|
|
116
|
+
* const key = await generateKeyPair('Ed25519')
|
|
117
|
+
* const keyInfo = await libp2p.keychain.importKey('my-key', key)
|
|
131
118
|
* ```
|
|
132
119
|
*/
|
|
133
|
-
|
|
120
|
+
importKey(name: string, key: PrivateKey): Promise<KeyInfo>;
|
|
134
121
|
/**
|
|
135
|
-
*
|
|
122
|
+
* Export an existing private key.
|
|
136
123
|
*
|
|
137
124
|
* @example
|
|
138
125
|
*
|
|
139
126
|
* ```TypeScript
|
|
140
|
-
*
|
|
127
|
+
* import { generateKeyPair } from '@libp2p/crypto/keys'
|
|
128
|
+
*
|
|
129
|
+
* const key = await generateKeyPair('Ed25519')
|
|
130
|
+
* const keyInfo = await libp2p.keychain.importKey('my-key', key)
|
|
131
|
+
* const key = await libp2p.keychain.exportKey(keyInfo.id)
|
|
141
132
|
* ```
|
|
142
133
|
*/
|
|
143
|
-
|
|
134
|
+
exportKey(name: string): Promise<PrivateKey>;
|
|
144
135
|
/**
|
|
145
136
|
* Removes a key from the keychain.
|
|
146
137
|
*
|
|
@@ -153,7 +144,8 @@ export interface Keychain {
|
|
|
153
144
|
*/
|
|
154
145
|
removeKey(name: string): Promise<KeyInfo>;
|
|
155
146
|
/**
|
|
156
|
-
* Rename a key in the keychain.
|
|
147
|
+
* Rename a key in the keychain. This is done in a batch commit with rollback
|
|
148
|
+
* so errors thrown during the operation will not cause key loss.
|
|
157
149
|
*
|
|
158
150
|
* @example
|
|
159
151
|
*
|
|
@@ -164,27 +156,15 @@ export interface Keychain {
|
|
|
164
156
|
*/
|
|
165
157
|
renameKey(oldName: string, newName: string): Promise<KeyInfo>;
|
|
166
158
|
/**
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
*
|
|
171
|
-
* ```TypeScript
|
|
172
|
-
* const keyInfo = await libp2p.services.keychain.createKey('keyTest', 'RSA', 4096)
|
|
173
|
-
* const keyInfo2 = await libp2p.services.keychain.findKeyById(keyInfo.id)
|
|
174
|
-
* ```
|
|
175
|
-
*/
|
|
176
|
-
findKeyById(id: string): Promise<KeyInfo>;
|
|
177
|
-
/**
|
|
178
|
-
* Find a key by it's name.
|
|
159
|
+
* List all the keys.
|
|
179
160
|
*
|
|
180
161
|
* @example
|
|
181
162
|
*
|
|
182
163
|
* ```TypeScript
|
|
183
|
-
* const
|
|
184
|
-
* const keyInfo2 = await libp2p.services.keychain.findKeyByName('keyTest')
|
|
164
|
+
* const keyInfos = await libp2p.keychain.listKeys()
|
|
185
165
|
* ```
|
|
186
166
|
*/
|
|
187
|
-
|
|
167
|
+
listKeys(): Promise<KeyInfo[]>;
|
|
188
168
|
/**
|
|
189
169
|
* Rotate keychain password and re-encrypt all associated keys
|
|
190
170
|
*
|
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,
|
|
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,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB;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
CHANGED
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
*
|
|
51
51
|
* A key benefit is that now the key chain can be used in browser with the [js-datastore-level](https://github.com/ipfs/js-datastore-level) implementation.
|
|
52
52
|
*/
|
|
53
|
-
import {
|
|
53
|
+
import { Keychain as KeychainClass } from './keychain.js';
|
|
54
54
|
export function keychain(init = {}) {
|
|
55
55
|
return (components) => {
|
|
56
|
-
return new
|
|
56
|
+
return new KeychainClass(components, init);
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
59
|
//# sourceMappingURL=index.js.map
|
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,
|
|
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;AA6IzD,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,6 +1,6 @@
|
|
|
1
1
|
import { serviceCapabilities } from '@libp2p/interface';
|
|
2
|
-
import type { KeychainComponents, KeychainInit, Keychain, KeyInfo } from './index.js';
|
|
3
|
-
import type {
|
|
2
|
+
import type { KeychainComponents, KeychainInit, Keychain as KeychainInterface, KeyInfo } from './index.js';
|
|
3
|
+
import type { PrivateKey } from '@libp2p/interface';
|
|
4
4
|
declare const defaultOptions: {
|
|
5
5
|
dek: {
|
|
6
6
|
keyLength: number;
|
|
@@ -9,6 +9,7 @@ declare const defaultOptions: {
|
|
|
9
9
|
hash: string;
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
export declare function keyId(key: PrivateKey): Promise<string>;
|
|
12
13
|
/**
|
|
13
14
|
* Manages the lifecycle of a key. Keys are encrypted at rest using PKCS #8.
|
|
14
15
|
*
|
|
@@ -17,7 +18,7 @@ declare const defaultOptions: {
|
|
|
17
18
|
* - '/pkcs8/*key-name*', contains the PKCS #8 for the key
|
|
18
19
|
*
|
|
19
20
|
*/
|
|
20
|
-
export declare class
|
|
21
|
+
export declare class Keychain implements KeychainInterface {
|
|
21
22
|
private readonly components;
|
|
22
23
|
private readonly init;
|
|
23
24
|
private readonly log;
|
|
@@ -40,38 +41,17 @@ export declare class DefaultKeychain implements Keychain {
|
|
|
40
41
|
* @returns {object}
|
|
41
42
|
*/
|
|
42
43
|
static get options(): typeof defaultOptions;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
* @param {number} [size = 2048] - The key size in bits. Used for rsa keys only
|
|
49
|
-
*/
|
|
50
|
-
createKey(name: string, type: KeyType, size?: number): Promise<KeyInfo>;
|
|
44
|
+
findKeyByName(name: string): Promise<KeyInfo>;
|
|
45
|
+
findKeyById(id: string): Promise<KeyInfo>;
|
|
46
|
+
importKey(name: string, key: PrivateKey): Promise<KeyInfo>;
|
|
47
|
+
exportKey(name: string): Promise<PrivateKey>;
|
|
48
|
+
removeKey(name: string): Promise<KeyInfo>;
|
|
51
49
|
/**
|
|
52
50
|
* List all the keys.
|
|
53
51
|
*
|
|
54
52
|
* @returns {Promise<KeyInfo[]>}
|
|
55
53
|
*/
|
|
56
54
|
listKeys(): Promise<KeyInfo[]>;
|
|
57
|
-
/**
|
|
58
|
-
* Find a key by it's id
|
|
59
|
-
*/
|
|
60
|
-
findKeyById(id: string): Promise<KeyInfo>;
|
|
61
|
-
/**
|
|
62
|
-
* Find a key by it's name.
|
|
63
|
-
*
|
|
64
|
-
* @param {string} name - The local key name.
|
|
65
|
-
* @returns {Promise<KeyInfo>}
|
|
66
|
-
*/
|
|
67
|
-
findKeyByName(name: string): Promise<KeyInfo>;
|
|
68
|
-
/**
|
|
69
|
-
* Remove an existing key.
|
|
70
|
-
*
|
|
71
|
-
* @param {string} name - The local key name; must already exist.
|
|
72
|
-
* @returns {Promise<KeyInfo>}
|
|
73
|
-
*/
|
|
74
|
-
removeKey(name: string): Promise<KeyInfo>;
|
|
75
55
|
/**
|
|
76
56
|
* Rename a key
|
|
77
57
|
*
|
|
@@ -80,31 +60,6 @@ export declare class DefaultKeychain implements Keychain {
|
|
|
80
60
|
* @returns {Promise<KeyInfo>}
|
|
81
61
|
*/
|
|
82
62
|
renameKey(oldName: string, newName: string): Promise<KeyInfo>;
|
|
83
|
-
/**
|
|
84
|
-
* Export an existing key as a PEM encrypted PKCS #8 string
|
|
85
|
-
*/
|
|
86
|
-
exportKey(name: string, password: string): Promise<string>;
|
|
87
|
-
/**
|
|
88
|
-
* Export an existing key as a PeerId
|
|
89
|
-
*/
|
|
90
|
-
exportPeerId(name: string): Promise<PeerId>;
|
|
91
|
-
/**
|
|
92
|
-
* Import a new key from a PEM encoded PKCS #8 string
|
|
93
|
-
*
|
|
94
|
-
* @param {string} name - The local key name; must not already exist.
|
|
95
|
-
* @param {string} pem - The PEM encoded PKCS #8 string
|
|
96
|
-
* @param {string} password - The password.
|
|
97
|
-
* @returns {Promise<KeyInfo>}
|
|
98
|
-
*/
|
|
99
|
-
importKey(name: string, pem: string, password: string): Promise<KeyInfo>;
|
|
100
|
-
/**
|
|
101
|
-
* Import a peer key
|
|
102
|
-
*/
|
|
103
|
-
importPeer(name: string, peer: PeerId): Promise<KeyInfo>;
|
|
104
|
-
/**
|
|
105
|
-
* Gets the private key as PEM encoded PKCS #8 string
|
|
106
|
-
*/
|
|
107
|
-
getPrivateKey(name: string): Promise<string>;
|
|
108
63
|
/**
|
|
109
64
|
* Rotate keychain password and re-encrypt all associated keys
|
|
110
65
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/keychain.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
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;IAE5B;;OAEG;gBACU,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY;IA+B/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"}
|