@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.
Files changed (47) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +195 -1
  3. package/dist/commands/did.d.ts.map +1 -1
  4. package/dist/commands/did.js +25 -6
  5. package/dist/commands/did.js.map +1 -1
  6. package/dist/commands/edv.d.ts +63 -0
  7. package/dist/commands/edv.d.ts.map +1 -0
  8. package/dist/commands/edv.js +627 -0
  9. package/dist/commands/edv.js.map +1 -0
  10. package/dist/commands/key.d.ts.map +1 -1
  11. package/dist/commands/key.js +44 -8
  12. package/dist/commands/key.js.map +1 -1
  13. package/dist/edv/core.d.ts +60 -0
  14. package/dist/edv/core.d.ts.map +1 -0
  15. package/dist/edv/core.js +75 -0
  16. package/dist/edv/core.js.map +1 -0
  17. package/dist/edv/document.d.ts +25 -0
  18. package/dist/edv/document.d.ts.map +1 -0
  19. package/dist/edv/document.js +19 -0
  20. package/dist/edv/document.js.map +1 -0
  21. package/dist/edv/hmac.d.ts +26 -0
  22. package/dist/edv/hmac.d.ts.map +1 -0
  23. package/dist/edv/hmac.js +67 -0
  24. package/dist/edv/hmac.js.map +1 -0
  25. package/dist/edv/recipients.d.ts +65 -0
  26. package/dist/edv/recipients.d.ts.map +1 -0
  27. package/dist/edv/recipients.js +253 -0
  28. package/dist/edv/recipients.js.map +1 -0
  29. package/dist/edv/stream.d.ts +69 -0
  30. package/dist/edv/stream.d.ts.map +1 -0
  31. package/dist/edv/stream.js +169 -0
  32. package/dist/edv/stream.js.map +1 -0
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/meta.d.ts +1 -0
  36. package/dist/meta.d.ts.map +1 -1
  37. package/dist/meta.js +1 -1
  38. package/dist/meta.js.map +1 -1
  39. package/dist/storage.d.ts +6 -4
  40. package/dist/storage.d.ts.map +1 -1
  41. package/dist/storage.js +6 -5
  42. package/dist/storage.js.map +1 -1
  43. package/dist/was/io.d.ts +14 -0
  44. package/dist/was/io.d.ts.map +1 -1
  45. package/dist/was/io.js +20 -7
  46. package/dist/was/io.js.map +1 -1
  47. package/package.json +6 -4
@@ -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
- if (!key.publicKeyMultibase) {
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: key.publicKeyMultibase,
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(key.publicKeyMultibase) ?? []
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
- if (!resolved?.key.publicKeyMultibase) {
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 === 'X25519KeyAgreementKey2020') {
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({
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,EACpB,IAAI,EACJ,KAAK,EAIN;IACC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAsB;IAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IAC9D,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;AACnE,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,eAAe,CAAC,EAC7B,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EAMZ;IACC,MAAM,IAAI,GAAgB,EAAE,OAAO,EAAE,CAAA;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IACD,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;IAEvE,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CACL,mBAAmB,EACnB,oDAAoD,EACpD,SAAS,CACV;SACA,MAAM,CACL,iBAAiB,EACjB,4CAA4C,sBAAsB,GAAG,EACrE,MAAM,CACP;SACA,MAAM,CACL,QAAQ,EACR,uEAAuE,CACxE;SACA,MAAM,CACL,mBAAmB,EACnB,+CAA+C,CAChD;SACA,MAAM,CACL,6BAA6B,EAC7B,uDAAuD,CACxD;SACA,MAAM,CACL,aAAa,EACb,iFAAiF,CAClF;SACA,MAAM,CACL,KAAK,EAAE,OAON,EAAE,EAAE;QACH,IACE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC;YACnE,CAAC,OAAO,CAAC,IAAI,EACb,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;gBAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ;oBACpC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;oBAC9C,CAAC,CAAC,OAAO,CAAA;gBACX,MAAM,SAAS,GAAG,aAAa;oBAC7B,CAAC,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,CAAC;oBACxC,CAAC,CAAC,SAAS,CAAA;gBACb,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC;oBACpD,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAA;gBACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;oBACpC,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAA;gBACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;oBACtB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,kBAAkB,CAAA;oBACvD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,UAAU,CAC7D,GAAG,EACH,GAAG,CACJ,CAAA;oBACD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,MAAM,EACN,SAAS,EACT,QAAQ,CACT,CAAA;oBACD,MAAM,eAAe,CAAC;wBACpB,SAAS;wBACT,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC,CAAA;oBACF,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAA;gBAC3C,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ;oBAC7B,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE;oBACtC,CAAC,CAAC,QAAQ,CAAA;gBACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC5C,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,OAAO,CAAC,KAAK,CACX,yDAAyD;wBACvD,wDAAwD;wBACxD,cAAc,CACjB,CAAA;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACf,OAAM;gBACR,CAAC;gBACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CACX,wBAAwB,OAAO,CAAC,KAAK,IAAI;wBACvC,cAAc,sBAAsB,EAAE,CACzC,CAAA;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACf,OAAM;gBACR,CAAC;gBACD,0BAA0B,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBACrC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBACvD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;oBACpC,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAA;gBACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;oBACtB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,kBAAkB,CAAA;oBACxD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;oBACvD,MAAM,SAAS,GACb,GAAG,IAAI,UAAU,UAAU,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;oBAC7D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,MAAM,EACN,SAAS,EACT,QAAQ,CACT,CAAA;oBACD,MAAM,eAAe,CAAC;wBACpB,SAAS;wBACT,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC,CAAA;oBACF,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAA;gBAC3C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC9C,MAAK;YACP,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,OAAO,CAAC,KAAK,CACX,2DAA2D;wBACzD,wDAAwD;wBACxD,cAAc,CACjB,CAAA;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACf,OAAM;gBACR,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,CAAA;gBAC1D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;oBACpC,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAA;gBACF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;oBACtB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,kBAAkB,CAAA;oBACxD,MAAM,SAAS,GAAG,GAAG,IAAI,WAAW,KAAK,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;oBAChE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,MAAM,EACN,SAAS,EACT,QAAQ,CACT,CAAA;oBACD,MAAM,eAAe,CAAC;wBACpB,SAAS;wBACT,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC,CAAA;oBACF,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAA;gBAC3C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC9C,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,OAAO,CAAC,KAAK,CACX,uDAAuD;wBACrD,wDAAwD;wBACxD,cAAc,CACjB,CAAA;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACf,OAAM;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAA;gBAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;oBACtB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC3C,MAAM,SAAS,GAAG,GAAG,IAAI,SAAS,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CACxD,GAAG,EACH,GAAG,CACJ,CAAA;oBACD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,MAAM,EACN,SAAS,EACT,QAAQ,CACT,CAAA;oBACD,MAAM,eAAe,CAAC;wBACpB,SAAS;wBACT,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC,CAAA;oBACF,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAA;gBAC3C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC9C,MAAK;YACP,CAAC;YACD;gBACE,OAAO,CAAC,KAAK,CACX,qBAAqB,OAAO,CAAC,IAAI,IAAI;oBACnC,yCAAyC,CAC5C,CAAA;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACH,CAAC,CACF,CAAA;IAEH,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CACL,QAAQ,EACR,0DAA0D,CAC3D;SACA,MAAM,CAAC,SAAS,EAAE,uDAAuD,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;QAC7D,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAClC,MAAM,EACN,SAAS,CACV,CAAA;gBACD,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;gBACrC,CAAC;YACH,CAAC;YACD,MAAM,CAAC,IAAI,EAAE,CAAA;YACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,qBAAqB,EAAE,CAAA;QACrD,MAAM,OAAO,GASP,EAAE,CAAA;QACR,yEAAyE;QACzE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAGjC,MAAM,EAAE,SAAS,CAAC,CAAA;YACrB,6DAA6D;YAC7D,uEAAuE;YACvE,MAAM,WAAW,GAAG,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,EAAE,CAAA;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC;gBACxC,UAAU,EAAE,MAAM;gBAClB,SAAS;aACV,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;YAC/C,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW;gBACX,SAAS;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI;gBACrC,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,WAAW,EAAE,IAAI,EAAE,WAAW;gBAC9B,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;aAC7C,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1C,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChD,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7C,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC5D,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC,CAAA;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,MAAM,IAAI,EAAE;YAClB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACtD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;YACjC,KAAK,CAAC,WAAW;YACjB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,WAAW,IAAI,EAAE;SACxB,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CACT,WAAW,CAAC;YACV,OAAO,EAAE;gBACP,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAClC,EAAE,MAAM,EAAE,MAAM,EAAE;gBAClB,EAAE,MAAM,EAAE,SAAS,EAAE;gBACrB,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACvC,EAAE,MAAM,EAAE,MAAM,EAAE;gBAClB,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;aACxC;YACD,IAAI;SACL,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACxB,WAAW,CACV,4DAA4D;QAC1D,0CAA0C,CAC7C;SACA,MAAM,CAAC,QAAQ,EAAE,wDAAwD,CAAC;SAC1E,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAA2C,EAAE,EAAE;QACxE,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,iEAAiE;QACjE,MAAM,WAAW,GAAG,QAAQ,EAAE,GAAG,CAAC,kBAAkB,IAAI,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA;QACxE,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAA;QAE9B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAA;YACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAA;YACrD,uEAAuE;YACvE,uDAAuD;YACvD,MAAM,IAAI,GAAG,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;YACnE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG;oBACb,WAAW;oBACX,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;oBACzC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC5C,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;oBAC3B,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC9D,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,IAAI;wBAChC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW;qBACvC,CAAC;oBACF,IAAI;iBACL,CAAA;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC5C,OAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG;gBACX,CAAC,aAAa,EAAE,WAAW,CAAC;gBAC5B,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC1B,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;gBACvC,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;gBACjD,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1B,CAAA;YACD,OAAO,CAAC,GAAG,CACT,WAAW,CAAC;gBACV,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBACnD,IAAI;aACL,CAAC,CACH,CAAA;YACD,OAAM;QACR,CAAC;QAED,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,SAAS,CAAA;QACb,IAAK,SAA+B,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAClE,sEAAsE;YACtE,6BAA6B;YAC7B,SAAS,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAA;QAC7D,CAAC;aAAM,IACJ,SAA+B,CAAC,IAAI,KAAK,2BAA2B,EACrE,CAAC;YACD,SAAS,GAAG,MAAM,CAChB,MAAM,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAChD,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/B,CAAC;aAAM,IACL,yBAAyB,CAAC;YACxB,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;SACjD,CAAC,EACF,CAAC;YACD,SAAS,GAAG,MAAM,CAChB,MAAM,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CACpC,CAAC,MAAM,CAAC;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,KAAK;aACjB,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,MAAM,CAChB,MAAM,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAC7C,CAAC,MAAM,CAAC;gBACP,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,KAAK;aACjB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CACV,uEAAuE;QACrE,uDAAuD,CAC1D;SACA,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,CAAC;SACzE,MAAM,CACL,6BAA6B,EAC7B,iDAAiD,CAClD;SACA,MAAM,CACL,KAAK,EACH,EAAU,EACV,OAAkD,EAClD,EAAE;QACF,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAA;QACnD,MAAM,IAAI,GAAG,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAEnE,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAA;QACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,MAAM,GAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAA;YACxD,sDAAsD;YACtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,IAAI,CAAA;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAA;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,kEAAkE;YAClE,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAA;YACrE,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACrB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,MAAM,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC,WAAW,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;YACxC,CAAC;QACH,CAAC;QACD,iEAAiE;QACjE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,IAAI;SACL,CAAC,CAAA;QACF,OAAO,CAAC,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CACF,CAAA;IAEH,GAAG;SACA,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACzB,WAAW,CACV,2DAA2D;QACzD,2CAA2C,CAC9C;SACA,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC;YACzC,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAA;QACF,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,GAAG;SACA,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,EAAE,KAAK,CAAC;SACvE,MAAM,CAAC,CAAC,KAAa,EAAE,OAA2B,EAAE,EAAE;QACrD,OAAO,CAAC,KAAK,CAAC,iBAAiB,KAAK,aAAa,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QACnE,kBAAkB;IACpB,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -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"}
@@ -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"}
@@ -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"}