@interop/did-cli 0.6.0

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.
Files changed (116) hide show
  1. package/CHANGELOG.md +341 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +1307 -0
  4. package/dist/commands/did.d.ts +3 -0
  5. package/dist/commands/did.d.ts.map +1 -0
  6. package/dist/commands/did.js +605 -0
  7. package/dist/commands/did.js.map +1 -0
  8. package/dist/commands/key.d.ts +3 -0
  9. package/dist/commands/key.d.ts.map +1 -0
  10. package/dist/commands/key.js +430 -0
  11. package/dist/commands/key.js.map +1 -0
  12. package/dist/commands/vc.d.ts +79 -0
  13. package/dist/commands/vc.d.ts.map +1 -0
  14. package/dist/commands/vc.js +528 -0
  15. package/dist/commands/vc.js.map +1 -0
  16. package/dist/commands/wallet.d.ts +14 -0
  17. package/dist/commands/wallet.d.ts.map +1 -0
  18. package/dist/commands/wallet.js +48 -0
  19. package/dist/commands/wallet.js.map +1 -0
  20. package/dist/commands/was.d.ts +500 -0
  21. package/dist/commands/was.d.ts.map +1 -0
  22. package/dist/commands/was.js +1833 -0
  23. package/dist/commands/was.js.map +1 -0
  24. package/dist/commands/zcap.d.ts +85 -0
  25. package/dist/commands/zcap.d.ts.map +1 -0
  26. package/dist/commands/zcap.js +447 -0
  27. package/dist/commands/zcap.js.map +1 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +20 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/keys/ecdsa.d.ts +40 -0
  33. package/dist/keys/ecdsa.d.ts.map +1 -0
  34. package/dist/keys/ecdsa.js +73 -0
  35. package/dist/keys/ecdsa.js.map +1 -0
  36. package/dist/meta.d.ts +164 -0
  37. package/dist/meta.d.ts.map +1 -0
  38. package/dist/meta.js +286 -0
  39. package/dist/meta.js.map +1 -0
  40. package/dist/storage.d.ts +191 -0
  41. package/dist/storage.d.ts.map +1 -0
  42. package/dist/storage.js +307 -0
  43. package/dist/storage.js.map +1 -0
  44. package/dist/table.d.ts +43 -0
  45. package/dist/table.d.ts.map +1 -0
  46. package/dist/table.js +61 -0
  47. package/dist/table.js.map +1 -0
  48. package/dist/vc/fixtures/welcomeCredential.d.ts +22 -0
  49. package/dist/vc/fixtures/welcomeCredential.d.ts.map +1 -0
  50. package/dist/vc/fixtures/welcomeCredential.js +25 -0
  51. package/dist/vc/fixtures/welcomeCredential.js.map +1 -0
  52. package/dist/vc/issue.d.ts +24 -0
  53. package/dist/vc/issue.d.ts.map +1 -0
  54. package/dist/vc/issue.js +211 -0
  55. package/dist/vc/issue.js.map +1 -0
  56. package/dist/vc/registries.d.ts +30 -0
  57. package/dist/vc/registries.d.ts.map +1 -0
  58. package/dist/vc/registries.js +53 -0
  59. package/dist/vc/registries.js.map +1 -0
  60. package/dist/vc/registryManager.d.ts +25 -0
  61. package/dist/vc/registryManager.d.ts.map +1 -0
  62. package/dist/vc/registryManager.js +29 -0
  63. package/dist/vc/registryManager.js.map +1 -0
  64. package/dist/vc/suites/expirationSuite.d.ts +23 -0
  65. package/dist/vc/suites/expirationSuite.d.ts.map +1 -0
  66. package/dist/vc/suites/expirationSuite.js +84 -0
  67. package/dist/vc/suites/expirationSuite.js.map +1 -0
  68. package/dist/vc/suites/issuerDetailsSuite.d.ts +22 -0
  69. package/dist/vc/suites/issuerDetailsSuite.d.ts.map +1 -0
  70. package/dist/vc/suites/issuerDetailsSuite.js +69 -0
  71. package/dist/vc/suites/issuerDetailsSuite.js.map +1 -0
  72. package/dist/vc/verify.d.ts +46 -0
  73. package/dist/vc/verify.d.ts.map +1 -0
  74. package/dist/vc/verify.js +147 -0
  75. package/dist/vc/verify.js.map +1 -0
  76. package/dist/was/address.d.ts +44 -0
  77. package/dist/was/address.d.ts.map +1 -0
  78. package/dist/was/address.js +98 -0
  79. package/dist/was/address.js.map +1 -0
  80. package/dist/was/capability.d.ts +65 -0
  81. package/dist/was/capability.d.ts.map +1 -0
  82. package/dist/was/capability.js +108 -0
  83. package/dist/was/capability.js.map +1 -0
  84. package/dist/was/client.d.ts +108 -0
  85. package/dist/was/client.d.ts.map +1 -0
  86. package/dist/was/client.js +142 -0
  87. package/dist/was/client.js.map +1 -0
  88. package/dist/was/io.d.ts +71 -0
  89. package/dist/was/io.d.ts.map +1 -0
  90. package/dist/was/io.js +146 -0
  91. package/dist/was/io.js.map +1 -0
  92. package/dist/was/registry.d.ts +79 -0
  93. package/dist/was/registry.d.ts.map +1 -0
  94. package/dist/was/registry.js +99 -0
  95. package/dist/was/registry.js.map +1 -0
  96. package/dist/zcap/create.d.ts +20 -0
  97. package/dist/zcap/create.d.ts.map +1 -0
  98. package/dist/zcap/create.js +29 -0
  99. package/dist/zcap/create.js.map +1 -0
  100. package/dist/zcap/delegate.d.ts +44 -0
  101. package/dist/zcap/delegate.d.ts.map +1 -0
  102. package/dist/zcap/delegate.js +77 -0
  103. package/dist/zcap/delegate.js.map +1 -0
  104. package/dist/zcap/encoding.d.ts +17 -0
  105. package/dist/zcap/encoding.d.ts.map +1 -0
  106. package/dist/zcap/encoding.js +37 -0
  107. package/dist/zcap/encoding.js.map +1 -0
  108. package/dist/zcap/signer.d.ts +20 -0
  109. package/dist/zcap/signer.d.ts.map +1 -0
  110. package/dist/zcap/signer.js +62 -0
  111. package/dist/zcap/signer.js.map +1 -0
  112. package/dist/zcap/ttl.d.ts +19 -0
  113. package/dist/zcap/ttl.d.ts.map +1 -0
  114. package/dist/zcap/ttl.js +40 -0
  115. package/dist/zcap/ttl.js.map +1 -0
  116. package/package.json +64 -0
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function makeDidCommand(): Command;
3
+ //# sourceMappingURL=did.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../../src/commands/did.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+EnC,wBAAgB,cAAc,IAAI,OAAO,CAurBxC"}
@@ -0,0 +1,605 @@
1
+ import { Command } from 'commander';
2
+ import { decodeSecretKeySeed, generateSecretKeySeed } from '@digitalcredentials/bnid';
3
+ import { driver } from '@interop/did-method-key';
4
+ import * as didWeb from '@interop/did-web-resolver';
5
+ import { Ed25519VerificationKey } from '@interop/ed25519-verification-key';
6
+ import * as EcdsaMultikey from '@interop/ecdsa-multikey';
7
+ import { listDids, loadDidDocument, loadDidKeys, loadDidMeta, removeDidFiles, saveDidMeta, saveToDids } from '../storage.js';
8
+ import { recordKeyDidAssociation, removeKeyDidAssociation, resolveDidRef } from '../meta.js';
9
+ import { renderTable } from '../table.js';
10
+ import { normalizeEcdsaCurve, SUPPORTED_ECDSA_CURVES, warnIfNotVcIssuanceCapable } from '../keys/ecdsa.js';
11
+ /**
12
+ * Save the artifacts of a newly created DID: the DID document, its keys file,
13
+ * a metadata sidecar (creation timestamp plus the handle and description when
14
+ * given), and the key-to-DID association cache of any matching wallet keys.
15
+ *
16
+ * @param options {object}
17
+ * @param options.method {string}
18
+ * @param options.didDocument {object}
19
+ * @param options.exportedKeys {object}
20
+ * @param options.fingerprints {(string | undefined)[]}
21
+ * @param [options.handle] {string}
22
+ * @param [options.description] {string}
23
+ * @returns {Promise<void>}
24
+ */
25
+ async function saveDidArtifacts({ method, didDocument, exportedKeys, fingerprints, handle, description }) {
26
+ const did = didDocument.id;
27
+ const docPath = await saveToDids({ method, did, data: didDocument });
28
+ await saveToDids({ method, did, suffix: 'keys', data: exportedKeys });
29
+ const meta = { created: new Date().toISOString() };
30
+ if (handle) {
31
+ meta.handle = handle;
32
+ }
33
+ if (description) {
34
+ meta.description = description;
35
+ }
36
+ await saveDidMeta({ did, meta });
37
+ for (const fingerprint of fingerprints) {
38
+ if (fingerprint) {
39
+ await recordKeyDidAssociation({ publicKeyMultibase: fingerprint, did });
40
+ }
41
+ }
42
+ console.error(`DID saved to ${docPath}`);
43
+ }
44
+ export function makeDidCommand() {
45
+ const did = new Command('did').description('Manage DIDs');
46
+ did
47
+ .command('create [method]')
48
+ .description('Create a new DID (method: key, web, webvh) [default: key]')
49
+ .option('-t, --type <type>', 'key type (supported: ed25519, ecdsa)', 'ed25519')
50
+ .option('--curve <curve>', `ECDSA curve for --type ecdsa (supported: ${SUPPORTED_ECDSA_CURVES})`, 'p256')
51
+ .option('--url <url>', 'HTTPS url of the DID document (required for did:web)')
52
+ .option('--with-seed', 'include the secret key seed in output (generated if SECRET_KEY_SEED is not set)')
53
+ .option('--save', 'save the DID document to local storage (~/.config/did-cli-wallet/dids/)')
54
+ .option('--handle <handle>', 'short tag for the saved DID (requires --save)')
55
+ .option('--description <description>', 'longer description of the saved DID (requires --save)')
56
+ .action(async (method = 'key', options) => {
57
+ if ((options.handle !== undefined || options.description !== undefined) &&
58
+ !options.save) {
59
+ console.error('--handle and --description require --save');
60
+ process.exit(1);
61
+ return;
62
+ }
63
+ switch (method) {
64
+ case 'key': {
65
+ switch (options.type) {
66
+ case 'ed25519': {
67
+ const envSeed = process.env.SECRET_KEY_SEED;
68
+ const secretKeySeed = options.withSeed
69
+ ? (envSeed ?? (await generateSecretKeySeed()))
70
+ : envSeed;
71
+ const seedBytes = secretKeySeed
72
+ ? decodeSecretKeySeed({ secretKeySeed })
73
+ : undefined;
74
+ const keyPair = await Ed25519VerificationKey.generate({
75
+ seed: seedBytes
76
+ });
77
+ const didDriver = driver();
78
+ didDriver.use({ keyPairClass: Ed25519VerificationKey });
79
+ const { didDocument } = await didDriver.fromKeyPair({
80
+ verificationKeyPair: keyPair
81
+ });
82
+ if (options.save) {
83
+ const exported = await keyPair.export({
84
+ publicKey: true,
85
+ secretKey: true
86
+ });
87
+ await saveDidArtifacts({
88
+ method: 'key',
89
+ didDocument,
90
+ exportedKeys: exported,
91
+ fingerprints: [
92
+ exported
93
+ .publicKeyMultibase
94
+ ],
95
+ handle: options.handle,
96
+ description: options.description
97
+ });
98
+ }
99
+ const output = { id: didDocument.id };
100
+ if (options.withSeed) {
101
+ output.secretKeySeed = secretKeySeed;
102
+ }
103
+ output.didDocument = didDocument;
104
+ console.log(JSON.stringify(output, null, 2));
105
+ break;
106
+ }
107
+ case 'ecdsa': {
108
+ if (options.withSeed) {
109
+ console.error('--with-seed is not supported for ecdsa keys; ECDSA key ' +
110
+ 'generation is non-deterministic and cannot be derived ' +
111
+ 'from a seed.');
112
+ process.exit(1);
113
+ return;
114
+ }
115
+ const curve = normalizeEcdsaCurve({ curve: options.curve });
116
+ if (!curve) {
117
+ console.error(`Unknown ecdsa curve: ${options.curve}. ` +
118
+ `Supported: ${SUPPORTED_ECDSA_CURVES}`);
119
+ process.exit(1);
120
+ return;
121
+ }
122
+ warnIfNotVcIssuanceCapable({ curve });
123
+ const keyPair = await EcdsaMultikey.generate({ curve });
124
+ const didDriver = driver();
125
+ const { didDocument } = await didDriver.fromKeyPair({
126
+ verificationKeyPair: keyPair
127
+ });
128
+ if (options.save) {
129
+ const exported = await keyPair.export({
130
+ publicKey: true,
131
+ secretKey: true
132
+ });
133
+ await saveDidArtifacts({
134
+ method: 'key',
135
+ didDocument,
136
+ exportedKeys: exported,
137
+ fingerprints: [
138
+ exported
139
+ .publicKeyMultibase
140
+ ],
141
+ handle: options.handle,
142
+ description: options.description
143
+ });
144
+ }
145
+ const output = { id: didDocument.id };
146
+ output.didDocument = didDocument;
147
+ console.log(JSON.stringify(output, null, 2));
148
+ break;
149
+ }
150
+ default:
151
+ console.error(`Unknown key type: ${options.type}. Supported: ed25519, ecdsa`);
152
+ process.exit(1);
153
+ }
154
+ break;
155
+ }
156
+ case 'web': {
157
+ switch (options.type) {
158
+ case 'ed25519': {
159
+ if (!options.url) {
160
+ console.error('did:web requires --url (e.g. --url https://example.com)');
161
+ process.exit(1);
162
+ return;
163
+ }
164
+ const envSeed = process.env.SECRET_KEY_SEED;
165
+ const secretKeySeed = options.withSeed
166
+ ? (envSeed ?? (await generateSecretKeySeed()))
167
+ : envSeed;
168
+ const seedBytes = secretKeySeed
169
+ ? decodeSecretKeySeed({ secretKeySeed })
170
+ : undefined;
171
+ const didWebDriver = didWeb.driver();
172
+ didWebDriver.use({ keyPairClass: Ed25519VerificationKey });
173
+ const { didDocument, keyPairs } = await didWebDriver.generate({
174
+ url: options.url,
175
+ seed: seedBytes
176
+ });
177
+ if (options.save) {
178
+ const exported = {};
179
+ const fingerprints = [];
180
+ for (const [methodId, keyPair] of keyPairs) {
181
+ const exportedKey = (await keyPair.export({
182
+ publicKey: true,
183
+ secretKey: true
184
+ }));
185
+ exported[methodId] = exportedKey;
186
+ fingerprints.push(exportedKey.publicKeyMultibase);
187
+ }
188
+ await saveDidArtifacts({
189
+ method: 'web',
190
+ didDocument,
191
+ exportedKeys: exported,
192
+ fingerprints,
193
+ handle: options.handle,
194
+ description: options.description
195
+ });
196
+ }
197
+ const output = { id: didDocument.id };
198
+ if (options.withSeed) {
199
+ output.secretKeySeed = secretKeySeed;
200
+ }
201
+ output.didDocument = didDocument;
202
+ console.log(JSON.stringify(output, null, 2));
203
+ break;
204
+ }
205
+ case 'ecdsa': {
206
+ if (!options.url) {
207
+ console.error('did:web requires --url (e.g. --url https://example.com)');
208
+ process.exit(1);
209
+ return;
210
+ }
211
+ if (options.withSeed) {
212
+ console.error('--with-seed is not supported for ecdsa keys; ECDSA key ' +
213
+ 'generation is non-deterministic and cannot be derived ' +
214
+ 'from a seed.');
215
+ process.exit(1);
216
+ return;
217
+ }
218
+ const curve = normalizeEcdsaCurve({ curve: options.curve });
219
+ if (!curve) {
220
+ console.error(`Unknown ecdsa curve: ${options.curve}. ` +
221
+ `Supported: ${SUPPORTED_ECDSA_CURVES}`);
222
+ process.exit(1);
223
+ return;
224
+ }
225
+ warnIfNotVcIssuanceCapable({ curve });
226
+ const keyPair = await EcdsaMultikey.generate({ curve });
227
+ const didWebDriver = didWeb.driver();
228
+ const { didDocument, keyPairs } = await didWebDriver.generate({
229
+ url: options.url,
230
+ verificationKeyPair: keyPair
231
+ });
232
+ if (options.save) {
233
+ const exported = {};
234
+ const fingerprints = [];
235
+ for (const [methodId, savedKey] of keyPairs) {
236
+ const exportedKey = (await savedKey.export({
237
+ publicKey: true,
238
+ secretKey: true
239
+ }));
240
+ exported[methodId] = exportedKey;
241
+ fingerprints.push(exportedKey.publicKeyMultibase);
242
+ }
243
+ await saveDidArtifacts({
244
+ method: 'web',
245
+ didDocument,
246
+ exportedKeys: exported,
247
+ fingerprints,
248
+ handle: options.handle,
249
+ description: options.description
250
+ });
251
+ }
252
+ const output = { id: didDocument.id };
253
+ output.didDocument = didDocument;
254
+ console.log(JSON.stringify(output, null, 2));
255
+ break;
256
+ }
257
+ default:
258
+ console.error(`Unknown key type: ${options.type}. ` +
259
+ `Supported: ed25519, ecdsa`);
260
+ process.exit(1);
261
+ }
262
+ break;
263
+ }
264
+ case 'webvh':
265
+ console.log(`Creating did:${method}...`);
266
+ // TODO: implement
267
+ break;
268
+ default:
269
+ console.error(`Unknown method: ${method}. Supported: key, web, webvh`);
270
+ process.exit(1);
271
+ }
272
+ });
273
+ did
274
+ .command('add-key <did>')
275
+ .description('Add a verification key to an existing (locally stored) did:web')
276
+ .option('-t, --type <type>', 'key type (supported: ed25519, ecdsa)', 'ed25519')
277
+ .option('--curve <curve>', `ECDSA curve for --type ecdsa (supported: ${SUPPORTED_ECDSA_CURVES})`, 'p256')
278
+ .option('--purpose <purpose...>', 'verification relationship(s) to wire the key into ' +
279
+ '(default: authentication, assertionMethod, capabilityDelegation, capabilityInvocation)')
280
+ .option('--with-seed', 'include the new secret key seed in output (generated if SECRET_KEY_SEED is not set)')
281
+ .action(async (did, options) => {
282
+ if (!did.startsWith('did:web:')) {
283
+ console.error('add-key is only supported for did:web DIDs');
284
+ process.exit(1);
285
+ }
286
+ if (options.type !== 'ed25519' && options.type !== 'ecdsa') {
287
+ console.error(`Unknown key type: ${options.type}. Supported: ed25519, ecdsa`);
288
+ process.exit(1);
289
+ }
290
+ let didDocument;
291
+ let exportedKeys;
292
+ try {
293
+ didDocument = await loadDidDocument(did);
294
+ exportedKeys = await loadDidKeys(did);
295
+ }
296
+ catch {
297
+ console.error(`No locally stored did:web found for ${did}`);
298
+ process.exit(1);
299
+ }
300
+ // ed25519 keys are derived from a seed; ecdsa keys are generated
301
+ // non-deterministically and have no seed.
302
+ let secretKeySeed;
303
+ let keyPair;
304
+ const didWebDriver = didWeb.driver();
305
+ if (options.type === 'ed25519') {
306
+ const envSeed = process.env.SECRET_KEY_SEED;
307
+ secretKeySeed = options.withSeed
308
+ ? (envSeed ?? (await generateSecretKeySeed()))
309
+ : envSeed;
310
+ const seedBytes = secretKeySeed
311
+ ? decodeSecretKeySeed({ secretKeySeed })
312
+ : undefined;
313
+ keyPair = await Ed25519VerificationKey.generate({ seed: seedBytes });
314
+ didWebDriver.use({ keyPairClass: Ed25519VerificationKey });
315
+ }
316
+ else {
317
+ if (options.withSeed) {
318
+ console.error('--with-seed is not supported for ecdsa keys; ECDSA key ' +
319
+ 'generation is non-deterministic and cannot be derived ' +
320
+ 'from a seed.');
321
+ process.exit(1);
322
+ return;
323
+ }
324
+ const curve = normalizeEcdsaCurve({ curve: options.curve });
325
+ if (!curve) {
326
+ console.error(`Unknown ecdsa curve: ${options.curve}. ` +
327
+ `Supported: ${SUPPORTED_ECDSA_CURVES}`);
328
+ process.exit(1);
329
+ return;
330
+ }
331
+ warnIfNotVcIssuanceCapable({ curve });
332
+ keyPair = await EcdsaMultikey.generate({ curve });
333
+ }
334
+ const keyPairs = new Map();
335
+ try {
336
+ await didWebDriver.addVerificationMethod({
337
+ didDocument,
338
+ keyPairs,
339
+ keyPair,
340
+ purposes: options.purpose
341
+ });
342
+ }
343
+ catch (err) {
344
+ console.error(err.message);
345
+ process.exit(1);
346
+ }
347
+ // Merge the new key into the stored keys file (keyed by VM id).
348
+ const addedFingerprints = [];
349
+ for (const [methodId, addedKey] of keyPairs) {
350
+ const exportedKey = (await addedKey.export({
351
+ publicKey: true,
352
+ secretKey: true
353
+ }));
354
+ exportedKeys[methodId] = exportedKey;
355
+ addedFingerprints.push(exportedKey.publicKeyMultibase);
356
+ }
357
+ const docPath = await saveToDids({
358
+ method: 'web',
359
+ did,
360
+ data: didDocument
361
+ });
362
+ await saveToDids({
363
+ method: 'web',
364
+ did,
365
+ suffix: 'keys',
366
+ data: exportedKeys
367
+ });
368
+ // Update the key-to-DID cache of any matching wallet keys; the DID's
369
+ // own metadata sidecar is left untouched.
370
+ for (const fingerprint of addedFingerprints) {
371
+ if (fingerprint) {
372
+ await recordKeyDidAssociation({
373
+ publicKeyMultibase: fingerprint,
374
+ did
375
+ });
376
+ }
377
+ }
378
+ console.error(`DID saved to ${docPath}`);
379
+ const output = { id: didDocument.id };
380
+ if (options.withSeed) {
381
+ output.secretKeySeed = secretKeySeed;
382
+ }
383
+ output.didDocument = didDocument;
384
+ console.log(JSON.stringify(output, null, 2));
385
+ });
386
+ did
387
+ .command('resolve <did>')
388
+ .description('Resolve a DID document')
389
+ .option('-o, --output <format>', 'output format (json|pretty)', 'pretty')
390
+ .action((did, options) => {
391
+ console.log(`Resolving ${did} (format: ${options.output})`);
392
+ // TODO: implement
393
+ });
394
+ did
395
+ .command('show <did>')
396
+ .aliases(['view', 'cat'])
397
+ .description('Show a locally stored DID document (no secret key material) by DID ' +
398
+ 'or handle')
399
+ .option('--meta', 'show the DID metadata instead of the DID document')
400
+ .option('--json', 'with --meta, output the metadata as JSON')
401
+ .action(async (didRef, options) => {
402
+ let did;
403
+ try {
404
+ did = await resolveDidRef({ ref: didRef });
405
+ }
406
+ catch (err) {
407
+ console.error(err.message);
408
+ process.exit(1);
409
+ return;
410
+ }
411
+ let didDocument;
412
+ try {
413
+ didDocument = await loadDidDocument(did ?? didRef);
414
+ }
415
+ catch {
416
+ console.error(`No locally stored DID found for ${didRef}`);
417
+ process.exit(1);
418
+ return;
419
+ }
420
+ if (options.meta) {
421
+ const docDid = didDocument.id;
422
+ const meta = await loadDidMeta({ did: docDid });
423
+ const keyCount = Array.isArray(didDocument.verificationMethod)
424
+ ? didDocument.verificationMethod.length
425
+ : 0;
426
+ if (options.json) {
427
+ const output = {
428
+ did: docDid,
429
+ method: docDid.split(':')[1],
430
+ ...(meta?.created && { created: meta.created }),
431
+ ...(meta?.handle && { handle: meta.handle }),
432
+ ...(meta?.description && { description: meta.description }),
433
+ keys: keyCount
434
+ };
435
+ console.log(JSON.stringify(output, null, 2));
436
+ return;
437
+ }
438
+ const rows = [
439
+ ['DID', docDid],
440
+ ['Method', docDid.split(':')[1]],
441
+ ['Handle', meta?.handle ?? ''],
442
+ ['Created', meta?.created ?? ''],
443
+ ['Description', meta?.description ?? ''],
444
+ ['Keys', String(keyCount)]
445
+ ];
446
+ console.log(renderTable({
447
+ columns: [{ header: 'FIELD' }, { header: 'VALUE' }],
448
+ rows
449
+ }));
450
+ return;
451
+ }
452
+ // The stored DID document holds no secret material -- signing keys live in
453
+ // the separate `<did>.keys.json` file -- so it is safe to print as-is.
454
+ console.log(JSON.stringify(didDocument, null, 2));
455
+ });
456
+ did
457
+ .command('list')
458
+ .description('List locally stored DIDs with their metadata')
459
+ .option('--json', 'output the list as a JSON array of objects with metadata')
460
+ .option('--plain', 'output one DID per line, sorted (no metadata)')
461
+ .action(async (options) => {
462
+ const dids = await listDids();
463
+ if (options.plain) {
464
+ for (const did of dids) {
465
+ console.log(did);
466
+ }
467
+ return;
468
+ }
469
+ const entries = [];
470
+ for (const did of dids) {
471
+ const meta = await loadDidMeta({ did });
472
+ entries.push({ did, method: did.split(':')[1], ...meta });
473
+ }
474
+ if (options.json) {
475
+ const output = entries.map(entry => ({
476
+ did: entry.did,
477
+ method: entry.method,
478
+ ...(entry.created && { created: entry.created }),
479
+ ...(entry.handle && { handle: entry.handle }),
480
+ ...(entry.description && { description: entry.description })
481
+ }));
482
+ console.log(JSON.stringify(output, null, 2));
483
+ return;
484
+ }
485
+ if (entries.length === 0) {
486
+ return;
487
+ }
488
+ const rows = entries.map(entry => [
489
+ entry.handle ?? '',
490
+ entry.method,
491
+ entry.created?.slice(0, 10) ?? '',
492
+ entry.did,
493
+ entry.description ?? ''
494
+ ]);
495
+ console.log(renderTable({
496
+ columns: [
497
+ { header: 'HANDLE', maxWidth: 16 },
498
+ { header: 'METHOD' },
499
+ { header: 'CREATED' },
500
+ { header: 'DID', maxWidth: 44 },
501
+ { header: 'DESCRIPTION', maxWidth: 40 }
502
+ ],
503
+ rows
504
+ }));
505
+ });
506
+ did
507
+ .command('meta <did>')
508
+ .description('Show or edit the metadata of a locally stored DID (by DID or handle); ' +
509
+ 'with no options, prints the current metadata')
510
+ .option('--handle <handle>', 'set the handle (an empty string clears it)')
511
+ .option('--description <description>', 'set the description (an empty string clears it)')
512
+ .action(async (didRef, options) => {
513
+ let did;
514
+ try {
515
+ did = await resolveDidRef({ ref: didRef });
516
+ }
517
+ catch (err) {
518
+ console.error(err.message);
519
+ process.exit(1);
520
+ return;
521
+ }
522
+ if (did) {
523
+ // Refuse to create metadata for DIDs that are not saved locally.
524
+ try {
525
+ await loadDidDocument(did);
526
+ }
527
+ catch {
528
+ did = undefined;
529
+ }
530
+ }
531
+ if (!did) {
532
+ console.error(`No locally stored DID found for ${didRef}`);
533
+ process.exit(1);
534
+ return;
535
+ }
536
+ const existing = await loadDidMeta({ did });
537
+ const hasEdits = options.handle !== undefined || options.description !== undefined;
538
+ if (!hasEdits) {
539
+ console.log(JSON.stringify(existing ?? {}, null, 2));
540
+ return;
541
+ }
542
+ const meta = { ...(existing ?? {}) };
543
+ if (options.handle !== undefined) {
544
+ if (options.handle === '') {
545
+ delete meta.handle;
546
+ }
547
+ else {
548
+ meta.handle = options.handle;
549
+ }
550
+ }
551
+ if (options.description !== undefined) {
552
+ if (options.description === '') {
553
+ delete meta.description;
554
+ }
555
+ else {
556
+ meta.description = options.description;
557
+ }
558
+ }
559
+ const filePath = await saveDidMeta({ did, meta });
560
+ console.error(`Metadata saved to ${filePath}`);
561
+ console.log(JSON.stringify(meta, null, 2));
562
+ });
563
+ did
564
+ .command('remove <did>')
565
+ .aliases(['delete', 'rm'])
566
+ .description('Remove a locally stored DID document, its keys file, and its ' +
567
+ 'metadata sidecar (by DID or handle)')
568
+ .action(async (didRef) => {
569
+ let did;
570
+ try {
571
+ did = await resolveDidRef({ ref: didRef });
572
+ }
573
+ catch (err) {
574
+ console.error(err.message);
575
+ process.exit(1);
576
+ return;
577
+ }
578
+ let didDocument;
579
+ try {
580
+ didDocument = await loadDidDocument(did ?? didRef);
581
+ }
582
+ catch {
583
+ console.error(`No locally stored DID found for ${didRef}`);
584
+ process.exit(1);
585
+ return;
586
+ }
587
+ const docDid = did ?? didRef;
588
+ // Scrub the cached key-to-DID associations of any matching wallet keys
589
+ // before the DID document (the source of truth) is deleted.
590
+ for (const method of didDocument.verificationMethod ?? []) {
591
+ if (method.publicKeyMultibase) {
592
+ await removeKeyDidAssociation({
593
+ publicKeyMultibase: method.publicKeyMultibase,
594
+ did: docDid
595
+ });
596
+ }
597
+ }
598
+ const removed = await removeDidFiles({ did: docDid });
599
+ for (const filePath of removed) {
600
+ console.error(`Removed ${filePath}`);
601
+ }
602
+ });
603
+ return did;
604
+ }
605
+ //# sourceMappingURL=did.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did.js","sourceRoot":"","sources":["../../src/commands/did.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function makeKeyCommand(): Command;
3
+ //# sourceMappingURL=key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/commands/key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmGnC,wBAAgB,cAAc,IAAI,OAAO,CAkdxC"}