@interop/did-cli 0.8.0 → 0.9.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.
- package/CHANGELOG.md +67 -0
- package/README.md +195 -1
- package/dist/commands/did.d.ts.map +1 -1
- package/dist/commands/did.js +25 -6
- package/dist/commands/did.js.map +1 -1
- package/dist/commands/edv.d.ts +63 -0
- package/dist/commands/edv.d.ts.map +1 -0
- package/dist/commands/edv.js +627 -0
- package/dist/commands/edv.js.map +1 -0
- package/dist/commands/key.d.ts.map +1 -1
- package/dist/commands/key.js +44 -8
- package/dist/commands/key.js.map +1 -1
- package/dist/edv/core.d.ts +60 -0
- package/dist/edv/core.d.ts.map +1 -0
- package/dist/edv/core.js +75 -0
- package/dist/edv/core.js.map +1 -0
- package/dist/edv/document.d.ts +25 -0
- package/dist/edv/document.d.ts.map +1 -0
- package/dist/edv/document.js +19 -0
- package/dist/edv/document.js.map +1 -0
- package/dist/edv/hmac.d.ts +26 -0
- package/dist/edv/hmac.d.ts.map +1 -0
- package/dist/edv/hmac.js +67 -0
- package/dist/edv/hmac.js.map +1 -0
- package/dist/edv/recipients.d.ts +65 -0
- package/dist/edv/recipients.d.ts.map +1 -0
- package/dist/edv/recipients.js +253 -0
- package/dist/edv/recipients.js.map +1 -0
- package/dist/edv/stream.d.ts +69 -0
- package/dist/edv/stream.d.ts.map +1 -0
- package/dist/edv/stream.js +169 -0
- package/dist/edv/stream.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/meta.d.ts +1 -0
- package/dist/meta.d.ts.map +1 -1
- package/dist/meta.js +1 -1
- package/dist/meta.js.map +1 -1
- package/dist/storage.d.ts +6 -4
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +6 -5
- package/dist/storage.js.map +1 -1
- package/dist/was/io.d.ts +14 -0
- package/dist/was/io.d.ts.map +1 -1
- package/dist/was/io.js +20 -7
- package/dist/was/io.js.map +1 -1
- package/package.json +6 -4
package/dist/commands/key.js
CHANGED
|
@@ -3,6 +3,7 @@ import { decodeSecretKeySeed, generateSecretKeySeed } from '@digitalcredentials/
|
|
|
3
3
|
import { Ed25519VerificationKey } from '@interop/ed25519-verification-key';
|
|
4
4
|
import * as EcdsaMultikey from '@interop/ecdsa-multikey';
|
|
5
5
|
import { X25519KeyAgreementKey2020 } from '@interop/x25519-key-agreement-key';
|
|
6
|
+
import { SHA256HMACKey } from '@interop/data-integrity-core';
|
|
6
7
|
import { listCollection, loadFromCollection, loadMetaFromCollection, removeFromCollection, saveMetaToCollection, saveToCollection } from '../storage.js';
|
|
7
8
|
import { mapFingerprintsToDids, parseKeyStorageId, resolveKeyRef } from '../meta.js';
|
|
8
9
|
import { renderTable, truncateMiddle } from '../table.js';
|
|
@@ -63,7 +64,7 @@ export function makeKeyCommand() {
|
|
|
63
64
|
key
|
|
64
65
|
.command('create')
|
|
65
66
|
.description('Create a new key')
|
|
66
|
-
.option('-t, --type <type>', 'key type (supported: ed25519, ecdsa, x25519)', 'ed25519')
|
|
67
|
+
.option('-t, --type <type>', 'key type (supported: ed25519, ecdsa, x25519, hmac)', 'ed25519')
|
|
67
68
|
.option('--curve <curve>', `ECDSA curve for --type ecdsa (supported: ${SUPPORTED_ECDSA_CURVES})`, 'p256')
|
|
68
69
|
.option('--save', 'save the key to local wallet storage (~/.config/did-cli-wallet/keys/)')
|
|
69
70
|
.option('--handle <handle>', 'short tag for the saved key (requires --save)')
|
|
@@ -181,9 +182,35 @@ export function makeKeyCommand() {
|
|
|
181
182
|
console.log(JSON.stringify(exported, null, 2));
|
|
182
183
|
break;
|
|
183
184
|
}
|
|
185
|
+
case 'hmac': {
|
|
186
|
+
if (options.withSeed) {
|
|
187
|
+
console.error('--with-seed is not supported for hmac keys; HMAC key ' +
|
|
188
|
+
'generation is non-deterministic and cannot be derived ' +
|
|
189
|
+
'from a seed.');
|
|
190
|
+
process.exit(1);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const hmac = await SHA256HMACKey.generate();
|
|
194
|
+
const exported = await hmac.export({ secretKey: true });
|
|
195
|
+
if (options.save) {
|
|
196
|
+
const now = new Date();
|
|
197
|
+
const date = now.toISOString().slice(0, 10);
|
|
198
|
+
const storageId = `${date}-hmac-${exported.id}`.replaceAll(':', '_');
|
|
199
|
+
const filePath = await saveToCollection('keys', storageId, exported);
|
|
200
|
+
await writeCreateMeta({
|
|
201
|
+
storageId,
|
|
202
|
+
created: now.toISOString(),
|
|
203
|
+
handle: options.handle,
|
|
204
|
+
description: options.description
|
|
205
|
+
});
|
|
206
|
+
console.error(`Key saved to ${filePath}`);
|
|
207
|
+
}
|
|
208
|
+
console.log(JSON.stringify(exported, null, 2));
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
184
211
|
default:
|
|
185
212
|
console.error(`Unknown key type: ${options.type}. ` +
|
|
186
|
-
'Supported: ed25519, ecdsa, x25519');
|
|
213
|
+
'Supported: ed25519, ecdsa, x25519, hmac');
|
|
187
214
|
process.exit(1);
|
|
188
215
|
}
|
|
189
216
|
});
|
|
@@ -213,7 +240,10 @@ export function makeKeyCommand() {
|
|
|
213
240
|
// Storage IDs carry a YYYY-MM-DD prefix, so this order is chronological.
|
|
214
241
|
for (const storageId of storageIds) {
|
|
215
242
|
const key = await loadFromCollection('keys', storageId);
|
|
216
|
-
|
|
243
|
+
// Asymmetric keys are identified by their publicKeyMultibase
|
|
244
|
+
// fingerprint; an HMAC key has no public half, so fall back to its id.
|
|
245
|
+
const fingerprint = key.publicKeyMultibase ?? key.id;
|
|
246
|
+
if (!fingerprint) {
|
|
217
247
|
continue;
|
|
218
248
|
}
|
|
219
249
|
const meta = await loadMetaFromCollection({
|
|
@@ -222,14 +252,14 @@ export function makeKeyCommand() {
|
|
|
222
252
|
});
|
|
223
253
|
const parsed = parseKeyStorageId({ storageId });
|
|
224
254
|
entries.push({
|
|
225
|
-
fingerprint
|
|
255
|
+
fingerprint,
|
|
226
256
|
storageId,
|
|
227
257
|
type: parsed.type,
|
|
228
258
|
curve: parsed.curve,
|
|
229
259
|
created: meta?.created ?? parsed.date,
|
|
230
260
|
handle: meta?.handle,
|
|
231
261
|
description: meta?.description,
|
|
232
|
-
dids: fingerprintDids.get(
|
|
262
|
+
dids: fingerprintDids.get(fingerprint) ?? []
|
|
233
263
|
});
|
|
234
264
|
}
|
|
235
265
|
if (options.json) {
|
|
@@ -286,14 +316,15 @@ export function makeKeyCommand() {
|
|
|
286
316
|
process.exit(1);
|
|
287
317
|
return;
|
|
288
318
|
}
|
|
289
|
-
|
|
319
|
+
// An HMAC key has no public fingerprint, so fall back to its id.
|
|
320
|
+
const fingerprint = resolved?.key.publicKeyMultibase ?? resolved?.key.id;
|
|
321
|
+
if (!resolved || !fingerprint) {
|
|
290
322
|
console.error(`No locally stored key found for ${id}`);
|
|
291
323
|
process.exit(1);
|
|
292
324
|
return;
|
|
293
325
|
}
|
|
294
326
|
const storedKey = resolved.key;
|
|
295
327
|
if (options.meta) {
|
|
296
|
-
const fingerprint = storedKey.publicKeyMultibase;
|
|
297
328
|
const parsed = parseKeyStorageId({ storageId: resolved.storageId });
|
|
298
329
|
const created = resolved.meta?.created ?? parsed.date;
|
|
299
330
|
// The displayed DIDs are always derived from the stored DID documents,
|
|
@@ -333,7 +364,12 @@ export function makeKeyCommand() {
|
|
|
333
364
|
// Re-import the stored key pair and re-export the public half only, so the
|
|
334
365
|
// secret key material never leaves storage in the displayed output.
|
|
335
366
|
let publicKey;
|
|
336
|
-
if (storedKey.type === '
|
|
367
|
+
if (storedKey.type === 'Sha256HmacKey2019') {
|
|
368
|
+
// A symmetric HMAC key has no public half; show only its safe fields,
|
|
369
|
+
// never the secret material.
|
|
370
|
+
publicKey = { id: storedKey.id, type: 'Sha256HmacKey2019' };
|
|
371
|
+
}
|
|
372
|
+
else if (storedKey.type === 'X25519KeyAgreementKey2020') {
|
|
337
373
|
publicKey = await (await X25519KeyAgreementKey2020.from(storedKey)).export({ publicKey: true });
|
|
338
374
|
}
|
|
339
375
|
else if (isEcdsaPublicKeyMultibase({
|
package/dist/commands/key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/commands/key.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/commands/key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { IEDVDocument, IEncryptedDocument, IHMAC } from '@interop/data-integrity-core';
|
|
2
|
+
import type { DocumentPayload } from './document.js';
|
|
3
|
+
import type { KeyAgreementKey } from './recipients.js';
|
|
4
|
+
/** A declared indexable attribute: a dotted path into `content`/`meta`. */
|
|
5
|
+
export interface IndexDeclaration {
|
|
6
|
+
attribute: string;
|
|
7
|
+
unique?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The prior-document base carried into an `--update`: the existing envelope's
|
|
11
|
+
* id, sequence (the core increments it), and `indexed` (the matching HMAC's
|
|
12
|
+
* entry is replaced, others preserved).
|
|
13
|
+
*/
|
|
14
|
+
export interface UpdateBase {
|
|
15
|
+
id: string;
|
|
16
|
+
sequence: number;
|
|
17
|
+
indexed: IEncryptedDocument['indexed'];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Encrypt an EDV Document through `EdvClientCore._encrypt`: serialize the
|
|
21
|
+
* document's `{ content, meta, stream }` into a single JWE for the recipients,
|
|
22
|
+
* blind any declared indexable attributes with `hmac`, and assemble the
|
|
23
|
+
* `{ id, sequence, indexed, jwe }` envelope (plus `stream` when present).
|
|
24
|
+
*
|
|
25
|
+
* Without `base` this is a new document: the core mints a fresh id and
|
|
26
|
+
* `sequence: 0`. With `base` it is an update: the prior id/sequence/`indexed`
|
|
27
|
+
* are stamped onto `doc` so the core increments the sequence and merges the
|
|
28
|
+
* index entry. Recipient union across an update is handled by the caller, so
|
|
29
|
+
* `doc.jwe` is not passed in.
|
|
30
|
+
*
|
|
31
|
+
* @param options {object}
|
|
32
|
+
* @param options.doc {IEDVDocument} The cleartext document to encrypt.
|
|
33
|
+
* @param options.keys {KeyAgreementKey[]} The recipients to encrypt to.
|
|
34
|
+
* @param [options.hmac] {IHMAC} Blinding key; required for `indexes`.
|
|
35
|
+
* @param [options.indexes] {IndexDeclaration[]} Attributes to index.
|
|
36
|
+
* @param [options.base] {UpdateBase} Prior document; omit for a new document.
|
|
37
|
+
* @returns {Promise<IEncryptedDocument>}
|
|
38
|
+
*/
|
|
39
|
+
export declare function encryptDocument({ doc, keys, hmac, indexes, base }: {
|
|
40
|
+
doc: IEDVDocument;
|
|
41
|
+
keys: KeyAgreementKey[];
|
|
42
|
+
hmac?: IHMAC;
|
|
43
|
+
indexes?: IndexDeclaration[];
|
|
44
|
+
base?: UpdateBase;
|
|
45
|
+
}): Promise<IEncryptedDocument>;
|
|
46
|
+
/**
|
|
47
|
+
* Decrypt an EDV Document envelope through `EdvClientCore._decrypt`, returning
|
|
48
|
+
* its cleartext payload (`content`, plus `meta`/`stream` when present). A wrong
|
|
49
|
+
* key surfaces as a thrown error (the core rejects a `null` decrypt).
|
|
50
|
+
*
|
|
51
|
+
* @param options {object}
|
|
52
|
+
* @param options.encryptedDoc {IEncryptedDocument}
|
|
53
|
+
* @param options.keyAgreementKey {KeyAgreementKey}
|
|
54
|
+
* @returns {Promise<DocumentPayload>}
|
|
55
|
+
*/
|
|
56
|
+
export declare function decryptDocument({ encryptedDoc, keyAgreementKey }: {
|
|
57
|
+
encryptedDoc: IEncryptedDocument;
|
|
58
|
+
keyAgreementKey: KeyAgreementKey;
|
|
59
|
+
}): Promise<DocumentPayload>;
|
|
60
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/edv/core.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,KAAK,EACN,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;CACvC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CAAC,EACpC,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACL,EAAE;IACD,GAAG,EAAE,YAAY,CAAA;IACjB,IAAI,EAAE,eAAe,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkB9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,EACpC,YAAY,EACZ,eAAe,EAChB,EAAE;IACD,YAAY,EAAE,kBAAkB,CAAA;IAChC,eAAe,EAAE,eAAe,CAAA;CACjC,GAAG,OAAO,CAAC,eAAe,CAAC,CAO3B"}
|
package/dist/edv/core.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EDV Document encryption via `@interop/edv-client`'s `EdvClientCore` (Layer 2,
|
|
3
|
+
* Phase 3). Phases 1-2 hand-rolled the `{ id, sequence, indexed, jwe }` envelope;
|
|
4
|
+
* this routes document encryption and decryption through the reference core
|
|
5
|
+
* instead, so the envelope -- and now the HMAC-blinded `indexed` array -- is
|
|
6
|
+
* correct-by-construction against the implementation an EDV / WAS server expects.
|
|
7
|
+
*
|
|
8
|
+
* Only the transport-free helpers are used: `EdvClientCore._encrypt` /
|
|
9
|
+
* `_decrypt` (the envelope + index blinding), `ensureIndex` (declaring indexable
|
|
10
|
+
* attributes), and `generateId` (the document id). The chunked-stream bytes are
|
|
11
|
+
* still produced by the cipher directly (see `./stream.ts`), since the core's
|
|
12
|
+
* stream path requires a server transport; only the stream document's envelope
|
|
13
|
+
* passes through here.
|
|
14
|
+
*/
|
|
15
|
+
import { Cipher } from '@interop/minimal-cipher';
|
|
16
|
+
import { EdvClientCore } from '@interop/edv-client';
|
|
17
|
+
/**
|
|
18
|
+
* Encrypt an EDV Document through `EdvClientCore._encrypt`: serialize the
|
|
19
|
+
* document's `{ content, meta, stream }` into a single JWE for the recipients,
|
|
20
|
+
* blind any declared indexable attributes with `hmac`, and assemble the
|
|
21
|
+
* `{ id, sequence, indexed, jwe }` envelope (plus `stream` when present).
|
|
22
|
+
*
|
|
23
|
+
* Without `base` this is a new document: the core mints a fresh id and
|
|
24
|
+
* `sequence: 0`. With `base` it is an update: the prior id/sequence/`indexed`
|
|
25
|
+
* are stamped onto `doc` so the core increments the sequence and merges the
|
|
26
|
+
* index entry. Recipient union across an update is handled by the caller, so
|
|
27
|
+
* `doc.jwe` is not passed in.
|
|
28
|
+
*
|
|
29
|
+
* @param options {object}
|
|
30
|
+
* @param options.doc {IEDVDocument} The cleartext document to encrypt.
|
|
31
|
+
* @param options.keys {KeyAgreementKey[]} The recipients to encrypt to.
|
|
32
|
+
* @param [options.hmac] {IHMAC} Blinding key; required for `indexes`.
|
|
33
|
+
* @param [options.indexes] {IndexDeclaration[]} Attributes to index.
|
|
34
|
+
* @param [options.base] {UpdateBase} Prior document; omit for a new document.
|
|
35
|
+
* @returns {Promise<IEncryptedDocument>}
|
|
36
|
+
*/
|
|
37
|
+
export async function encryptDocument({ doc, keys, hmac, indexes, base }) {
|
|
38
|
+
if (base) {
|
|
39
|
+
Object.assign(doc, base);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
doc.id = await EdvClientCore.generateId();
|
|
43
|
+
}
|
|
44
|
+
const core = new EdvClientCore({ hmac });
|
|
45
|
+
for (const { attribute, unique } of indexes ?? []) {
|
|
46
|
+
core.ensureIndex({ attribute, unique });
|
|
47
|
+
}
|
|
48
|
+
const { recipients, keyResolver } = new Cipher().createRecipients({ keys });
|
|
49
|
+
return core._encrypt({
|
|
50
|
+
doc,
|
|
51
|
+
recipients,
|
|
52
|
+
keyResolver,
|
|
53
|
+
hmac,
|
|
54
|
+
update: Boolean(base)
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Decrypt an EDV Document envelope through `EdvClientCore._decrypt`, returning
|
|
59
|
+
* its cleartext payload (`content`, plus `meta`/`stream` when present). A wrong
|
|
60
|
+
* key surfaces as a thrown error (the core rejects a `null` decrypt).
|
|
61
|
+
*
|
|
62
|
+
* @param options {object}
|
|
63
|
+
* @param options.encryptedDoc {IEncryptedDocument}
|
|
64
|
+
* @param options.keyAgreementKey {KeyAgreementKey}
|
|
65
|
+
* @returns {Promise<DocumentPayload>}
|
|
66
|
+
*/
|
|
67
|
+
export async function decryptDocument({ encryptedDoc, keyAgreementKey }) {
|
|
68
|
+
const core = new EdvClientCore();
|
|
69
|
+
const { content, meta, stream } = await core._decrypt({
|
|
70
|
+
encryptedDoc,
|
|
71
|
+
keyAgreementKey
|
|
72
|
+
});
|
|
73
|
+
return stream === undefined ? { content, meta } : { content, meta, stream };
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/edv/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AA0BnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EACpC,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EAOL;IACC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;IAC3C,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IACxC,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3E,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnB,GAAG;QACH,UAAU;QACV,WAAW;QACX,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;KACtB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EACpC,YAAY,EACZ,eAAe,EAIhB;IACC,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAA;IAChC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;QACpD,YAAY;QACZ,eAAe;KAChB,CAAC,CAAA;IACF,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;AAC7E,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared EDV Document types and the envelope detector for the `edv` command.
|
|
3
|
+
*
|
|
4
|
+
* The `{ id, sequence, indexed, jwe }` envelope -- the document the EDV / WAS
|
|
5
|
+
* data model stores -- is assembled and unwrapped by `@interop/edv-client`'s
|
|
6
|
+
* `EdvClientCore` (see `./core.ts`); Phases 1-2's hand-rolled assembly was
|
|
7
|
+
* retired in Phase 3 in favor of that reference implementation. This module
|
|
8
|
+
* keeps only what the command layer needs alongside it: the decrypted payload
|
|
9
|
+
* shape and the `isEncryptedDocument` discriminator that tells an EDV Document
|
|
10
|
+
* envelope apart from a bare Layer 1 JWE on read.
|
|
11
|
+
*/
|
|
12
|
+
import type { IEDVDocument, IEncryptedDocument } from '@interop/data-integrity-core';
|
|
13
|
+
/** Filename convention for a serialized EDV Document. */
|
|
14
|
+
export declare const EDV_DOCUMENT_FILE_SUFFIX = ".edvdoc.json";
|
|
15
|
+
/** The decrypted payload an EDV Document's JWE protects. */
|
|
16
|
+
export type DocumentPayload = Pick<IEDVDocument, 'content' | 'meta' | 'stream'>;
|
|
17
|
+
/**
|
|
18
|
+
* True when a parsed value is an encrypted EDV Document envelope (it carries a
|
|
19
|
+
* string `id` and an object `jwe`), as opposed to a bare Layer 1 JWE.
|
|
20
|
+
*
|
|
21
|
+
* @param value {unknown}
|
|
22
|
+
* @returns {boolean}
|
|
23
|
+
*/
|
|
24
|
+
export declare function isEncryptedDocument(value: unknown): value is IEncryptedDocument;
|
|
25
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/edv/document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,8BAA8B,CAAA;AAErC,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,iBAAiB,CAAA;AAEtD,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAU7B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Filename convention for a serialized EDV Document. */
|
|
2
|
+
export const EDV_DOCUMENT_FILE_SUFFIX = '.edvdoc.json';
|
|
3
|
+
/**
|
|
4
|
+
* True when a parsed value is an encrypted EDV Document envelope (it carries a
|
|
5
|
+
* string `id` and an object `jwe`), as opposed to a bare Layer 1 JWE.
|
|
6
|
+
*
|
|
7
|
+
* @param value {unknown}
|
|
8
|
+
* @returns {boolean}
|
|
9
|
+
*/
|
|
10
|
+
export function isEncryptedDocument(value) {
|
|
11
|
+
if (value === null || typeof value !== 'object') {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
const candidate = value;
|
|
15
|
+
return (typeof candidate.id === 'string' &&
|
|
16
|
+
typeof candidate.jwe === 'object' &&
|
|
17
|
+
candidate.jwe !== null);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/edv/document.ts"],"names":[],"mappings":"AAgBA,yDAAyD;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,cAAc,CAAA;AAKtD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,SAAS,GAAG,KAAgC,CAAA;IAClD,OAAO,CACL,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ;QAChC,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ;QACjC,SAAS,CAAC,GAAG,KAAK,IAAI,CACvB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMAC key (`SHA256HMACKey`) resolution for EDV index blinding. The
|
|
3
|
+
* concrete key implementation -- the reference `IHMAC` impl -- lives in
|
|
4
|
+
* `@interop/data-integrity-core`; this module only adapts it to the CLI's
|
|
5
|
+
* wallet storage: it finds the blinding key the `edv encrypt --index` flow
|
|
6
|
+
* should use (by id, handle, or storage id, or by auto-selecting the lone HMAC
|
|
7
|
+
* key) and reconstructs it from its persisted JWK secret.
|
|
8
|
+
*/
|
|
9
|
+
import { SHA256HMACKey } from '@interop/data-integrity-core';
|
|
10
|
+
/** The stored `type` value of an HMAC blinding key (the EDV protocol string). */
|
|
11
|
+
export declare const HMAC_KEY_TYPE = "Sha256HmacKey2019";
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the HMAC blinding key for index operations. With `ref`, match a
|
|
14
|
+
* stored HMAC key by its id, its storage id, or its metadata handle; without
|
|
15
|
+
* `ref`, auto-select when the wallet holds exactly one HMAC key. Throws with a
|
|
16
|
+
* clear message when nothing matches, the handle/ref is ambiguous, or no HMAC
|
|
17
|
+
* key exists yet.
|
|
18
|
+
*
|
|
19
|
+
* @param options {object}
|
|
20
|
+
* @param [options.ref] {string} The `--hmac` value; auto-select when omitted.
|
|
21
|
+
* @returns {Promise<SHA256HMACKey>}
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveHmac({ ref }: {
|
|
24
|
+
ref?: string;
|
|
25
|
+
}): Promise<SHA256HMACKey>;
|
|
26
|
+
//# sourceMappingURL=hmac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.d.ts","sourceRoot":"","sources":["../../src/edv/hmac.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,aAAa,EAEd,MAAM,8BAA8B,CAAA;AAOrC,iFAAiF;AACjF,eAAO,MAAM,aAAa,sBAAsB,CAAA;AAyBhD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACJ,EAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,aAAa,CAAC,CA+CzB"}
|
package/dist/edv/hmac.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HMAC key (`SHA256HMACKey`) resolution for EDV index blinding. The
|
|
3
|
+
* concrete key implementation -- the reference `IHMAC` impl -- lives in
|
|
4
|
+
* `@interop/data-integrity-core`; this module only adapts it to the CLI's
|
|
5
|
+
* wallet storage: it finds the blinding key the `edv encrypt --index` flow
|
|
6
|
+
* should use (by id, handle, or storage id, or by auto-selecting the lone HMAC
|
|
7
|
+
* key) and reconstructs it from its persisted JWK secret.
|
|
8
|
+
*/
|
|
9
|
+
import { SHA256HMACKey } from '@interop/data-integrity-core';
|
|
10
|
+
import { listCollection, loadFromCollection, loadMetaFromCollection } from '../storage.js';
|
|
11
|
+
/** The stored `type` value of an HMAC blinding key (the EDV protocol string). */
|
|
12
|
+
export const HMAC_KEY_TYPE = 'Sha256HmacKey2019';
|
|
13
|
+
/**
|
|
14
|
+
* Collect every `SHA256HMACKey` stored in the wallet keys collection.
|
|
15
|
+
*
|
|
16
|
+
* @returns {Promise<StoredHmac[]>}
|
|
17
|
+
*/
|
|
18
|
+
async function listStoredHmacs() {
|
|
19
|
+
const storageIds = await listCollection('keys');
|
|
20
|
+
const stored = await Promise.all(storageIds.map(storageId => loadFromCollection('keys', storageId)));
|
|
21
|
+
return storageIds
|
|
22
|
+
.map((storageId, index) => ({ storageId, stored: stored[index] }))
|
|
23
|
+
.filter(({ stored }) => stored.type === HMAC_KEY_TYPE);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the HMAC blinding key for index operations. With `ref`, match a
|
|
27
|
+
* stored HMAC key by its id, its storage id, or its metadata handle; without
|
|
28
|
+
* `ref`, auto-select when the wallet holds exactly one HMAC key. Throws with a
|
|
29
|
+
* clear message when nothing matches, the handle/ref is ambiguous, or no HMAC
|
|
30
|
+
* key exists yet.
|
|
31
|
+
*
|
|
32
|
+
* @param options {object}
|
|
33
|
+
* @param [options.ref] {string} The `--hmac` value; auto-select when omitted.
|
|
34
|
+
* @returns {Promise<SHA256HMACKey>}
|
|
35
|
+
*/
|
|
36
|
+
export async function resolveHmac({ ref }) {
|
|
37
|
+
const candidates = await listStoredHmacs();
|
|
38
|
+
if (candidates.length === 0) {
|
|
39
|
+
throw new Error('No HMAC key found in the wallet; create one with ' +
|
|
40
|
+
'`di key create --type hmac --save`.');
|
|
41
|
+
}
|
|
42
|
+
if (ref === undefined) {
|
|
43
|
+
if (candidates.length > 1) {
|
|
44
|
+
throw new Error(`The wallet has ${candidates.length} HMAC keys; ` +
|
|
45
|
+
'pass --hmac to choose one.');
|
|
46
|
+
}
|
|
47
|
+
return SHA256HMACKey.from(candidates[0].stored);
|
|
48
|
+
}
|
|
49
|
+
const direct = candidates.find(candidate => candidate.stored.id === ref || candidate.storageId === ref);
|
|
50
|
+
if (direct) {
|
|
51
|
+
return SHA256HMACKey.from(direct.stored);
|
|
52
|
+
}
|
|
53
|
+
const metas = await Promise.all(candidates.map(candidate => loadMetaFromCollection({
|
|
54
|
+
collection: 'keys',
|
|
55
|
+
storageId: candidate.storageId
|
|
56
|
+
})));
|
|
57
|
+
const byHandle = candidates.filter((_candidate, index) => metas[index]?.handle === ref);
|
|
58
|
+
if (byHandle.length === 0) {
|
|
59
|
+
throw new Error(`No HMAC key found for "${ref}".`);
|
|
60
|
+
}
|
|
61
|
+
if (byHandle.length > 1) {
|
|
62
|
+
throw new Error(`Handle "${ref}" matches ${byHandle.length} HMAC keys; ` +
|
|
63
|
+
'use the key id instead.');
|
|
64
|
+
}
|
|
65
|
+
return SHA256HMACKey.from(byHandle[0].stored);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=hmac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src/edv/hmac.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EACL,aAAa,EAEd,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAQhD;;;;GAIG;AACH,KAAK,UAAU,eAAe;IAC5B,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;IAC/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CACzB,kBAAkB,CAAiB,MAAM,EAAE,SAAS,CAAC,CACtD,CACF,CAAA;IACD,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACjE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAChC,GAAG,EAGJ;IACC,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAA;IAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,mDAAmD;YACjD,qCAAqC,CACxC,CAAA;IACH,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,kBAAkB,UAAU,CAAC,MAAM,cAAc;gBAC/C,4BAA4B,CAC/B,CAAA;QACH,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAC5B,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC,SAAS,KAAK,GAAG,CACxE,CAAA;IACD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CACzB,sBAAsB,CAAC;QACrB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,SAAS,CAAC,SAAS;KAC/B,CAAC,CACH,CACF,CAAA;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAChC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,CACpD,CAAA;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAA;IACpD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,WAAW,GAAG,aAAa,QAAQ,CAAC,MAAM,cAAc;YACtD,yBAAyB,CAC5B,CAAA;IACH,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { X25519KeyAgreementKey2020 } from '@interop/x25519-key-agreement-key';
|
|
2
|
+
/** The X25519 key-agreement verification-method type minimal-cipher expects. */
|
|
3
|
+
export declare const KEY_AGREEMENT_TYPE = "X25519KeyAgreementKey2020";
|
|
4
|
+
/**
|
|
5
|
+
* An X25519 key-agreement key instance with its `.id` (`kid`) populated. Used
|
|
6
|
+
* both as a resolved recipient (encrypt reads `id` + `publicKeyMultibase`) and
|
|
7
|
+
* as the decryption key (decrypt reads `id` + `deriveSecret`).
|
|
8
|
+
*/
|
|
9
|
+
export type KeyAgreementKey = InstanceType<typeof X25519KeyAgreementKey2020> & {
|
|
10
|
+
id: string;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Resolve one `--recipient` value to a recipient key. Resolution order: a raw
|
|
14
|
+
* X25519 `publicKeyMultibase` (starts `z6LS`), then a DID / DID URL, then a
|
|
15
|
+
* wallet key fingerprint or handle.
|
|
16
|
+
*
|
|
17
|
+
* @param options {object}
|
|
18
|
+
* @param options.ref {string}
|
|
19
|
+
* @returns {Promise<KeyAgreementKey>}
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveRecipient({ ref }: {
|
|
22
|
+
ref: string;
|
|
23
|
+
}): Promise<KeyAgreementKey>;
|
|
24
|
+
/**
|
|
25
|
+
* Load and validate a key-document JSON file holding an X25519 public key, and
|
|
26
|
+
* construct its key-agreement key.
|
|
27
|
+
*
|
|
28
|
+
* @param options {object}
|
|
29
|
+
* @param options.path {string}
|
|
30
|
+
* @returns {Promise<KeyAgreementKey>}
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveRecipientFile({ path }: {
|
|
33
|
+
path: string;
|
|
34
|
+
}): Promise<KeyAgreementKey>;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a `--key` reference (fingerprint or handle) to a reconstructed
|
|
37
|
+
* X25519 key-agreement key. The referenced key must be a stored X25519 key
|
|
38
|
+
* with its secret half.
|
|
39
|
+
*
|
|
40
|
+
* @param options {object}
|
|
41
|
+
* @param options.ref {string}
|
|
42
|
+
* @returns {Promise<KeyAgreementKey>}
|
|
43
|
+
*/
|
|
44
|
+
export declare function loadKeyAgreementKey({ ref }: {
|
|
45
|
+
ref: string;
|
|
46
|
+
}): Promise<KeyAgreementKey>;
|
|
47
|
+
/**
|
|
48
|
+
* Auto-select the decryption key when `--key` is omitted: scan the stored
|
|
49
|
+
* X25519 secret keys and return the one whose `id` (`kid`) matches a recipient
|
|
50
|
+
* of the JWE. Throws when none match or more than one does.
|
|
51
|
+
*
|
|
52
|
+
* @param options {object}
|
|
53
|
+
* @param options.jwe {{recipients?: {header?: {kid?: string}}[]}}
|
|
54
|
+
* @returns {Promise<KeyAgreementKey>}
|
|
55
|
+
*/
|
|
56
|
+
export declare function autoSelectKeyAgreementKey({ jwe }: {
|
|
57
|
+
jwe: {
|
|
58
|
+
recipients?: {
|
|
59
|
+
header?: {
|
|
60
|
+
kid?: string;
|
|
61
|
+
};
|
|
62
|
+
}[];
|
|
63
|
+
};
|
|
64
|
+
}): Promise<KeyAgreementKey>;
|
|
65
|
+
//# sourceMappingURL=recipients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipients.d.ts","sourceRoot":"","sources":["../../src/edv/recipients.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAI7E,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,8BAA8B,CAAA;AAW7D;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,yBAAyB,CAAC,GAAG;IAC7E,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAqKD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAC,eAAe,CAAC,CAmB3B;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,IAAI,EACL,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,eAAe,CAAC,CAa3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAC,eAAe,CAAC,CAa3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,EAC9C,GAAG,EACJ,EAAE;IACD,GAAG,EAAE;QAAE,UAAU,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,EAAE,CAAA;KAAE,CAAA;CACtD,GAAG,OAAO,CAAC,eAAe,CAAC,CAsC3B"}
|