1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * The libp2p keychain provides an API to store keys in a datastore in
5
+ * an encrypted format.
6
+ *
7
+ * @example
8
+ *
9
+ * ```typescript
10
+ * import { createLibp2p } from 'libp2p'
11
+ * import { FsDatastore } from 'datastore-fs'
12
+ *
13
+ * const node = await createLibp2p({
14
+ * datastore: new FsDatastore('/path/to/dir')
15
+ * })
16
+ *
17
+ * const info = await node.keychain.createKey('my-new-key', 'Ed25519')
18
+ *
19
+ * console.info(info) // { id: '...', name: 'my-new-key' }
20
+ * ```
21
+ */
22
+
1
23
import type { Multibase } from 'multiformats/bases/interface'
2
24
import type { PeerId } from '@libp2p/interface-peer-id'
3
25
@@ -13,14 +35,16 @@ export interface KeyInfo {
13
35
name : string
14
36
}
15
37
16
- export type KeyType = 'Ed25519' | 'RSA '
38
+ export type KeyType = 'RSA' | ' Ed25519' | 'secp256k1 '
17
39
18
40
export interface KeyChain {
19
41
/**
20
42
* Export an existing key as a PEM encrypted PKCS #8 string.
21
43
*
44
+ * @example
45
+ *
22
46
* ```js
23
- * await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
47
+ * await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
24
48
* const pemKey = await libp2p.keychain.exportKey('keyTest', 'password123')
25
49
* ```
26
50
*/
@@ -29,8 +53,10 @@ export interface KeyChain {
29
53
/**
30
54
* Import a new key from a PEM encoded PKCS #8 string.
31
55
*
56
+ * @example
57
+ *
32
58
* ```js
33
- * await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
59
+ * await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
34
60
* const pemKey = await libp2p.keychain.exportKey('keyTest', 'password123')
35
61
* const keyInfo = await libp2p.keychain.importKey('keyTestImport', pemKey, 'password123')
36
62
* ```
@@ -40,19 +66,32 @@ export interface KeyChain {
40
66
/**
41
67
* Import a new key from a PeerId with a private key component
42
68
*
69
+ * @example
70
+ *
43
71
* ```js
44
72
* const keyInfo = await libp2p.keychain.importPeer('keyTestImport', peerIdFromString('12D3Foo...'))
45
73
* ```
46
74
*/
47
75
importPeer : ( name : string , peerId : PeerId ) => Promise < KeyInfo >
48
76
77
+ /**
78
+ * Export an existing key as a PeerId
79
+ *
80
+ * @example
81
+ *
82
+ * ```js
83
+ * const peerId = await libp2p.keychain.exportPeerId('key-name')
84
+ * ```
85
+ */
86
+ exportPeerId : ( name : string ) => Promise < PeerId >
87
+
49
88
/**
50
89
* Create a key in the keychain.
51
90
*
52
91
* @example
53
92
*
54
93
* ```js
55
- * const keyInfo = await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
94
+ * const keyInfo = await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
56
95
* ```
57
96
*/
58
97
createKey : ( name : string , type : KeyType , size ?: number ) => Promise < KeyInfo >
@@ -74,7 +113,7 @@ export interface KeyChain {
74
113
* @example
75
114
*
76
115
* ```js
77
- * await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
116
+ * await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
78
117
* const keyInfo = await libp2p.keychain.removeKey('keyTest')
79
118
* ```
80
119
*/
@@ -86,7 +125,7 @@ export interface KeyChain {
86
125
* @example
87
126
*
88
127
* ```js
89
- * await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
128
+ * await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
90
129
* const keyInfo = await libp2p.keychain.renameKey('keyTest', 'keyNewNtest')
91
130
* ```
92
131
*/
@@ -95,8 +134,10 @@ export interface KeyChain {
95
134
/**
96
135
* Find a key by it's id.
97
136
*
137
+ * @example
138
+ *
98
139
* ```js
99
- * const keyInfo = await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
140
+ * const keyInfo = await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
100
141
* const keyInfo2 = await libp2p.keychain.findKeyById(keyInfo.id)
101
142
* ```
102
143
*/
@@ -108,7 +149,7 @@ export interface KeyChain {
108
149
* @example
109
150
*
110
151
* ```js
111
- * const keyInfo = await libp2p.keychain.createKey('keyTest', 'rsa ', 4096)
152
+ * const keyInfo = await libp2p.keychain.createKey('keyTest', 'RSA ', 4096)
112
153
* const keyInfo2 = await libp2p.keychain.findKeyByName('keyTest')
113
154
* ```
114
155
*/
0 commit comments