@enbox/dwn-sdk-js 0.4.4 → 0.4.6

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 (201) hide show
  1. package/dist/browser.mjs +15 -15
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +5406 -2391
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/json-schemas/definitions.json +18 -0
  6. package/dist/esm/src/core/constants.js +3 -3
  7. package/dist/esm/src/core/constants.js.map +1 -1
  8. package/dist/esm/src/core/dwn-error.js +29 -1
  9. package/dist/esm/src/core/dwn-error.js.map +1 -1
  10. package/dist/esm/src/core/messages-grant-authorization.js +20 -0
  11. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  12. package/dist/esm/src/core/protocol-authorization-validation.js +80 -3
  13. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
  14. package/dist/esm/src/core/recording-validation-state-reader.js +5 -0
  15. package/dist/esm/src/core/recording-validation-state-reader.js.map +1 -1
  16. package/dist/esm/src/core/replication-apply.js +163 -7
  17. package/dist/esm/src/core/replication-apply.js.map +1 -1
  18. package/dist/esm/src/core/validation-state-reader.js +20 -0
  19. package/dist/esm/src/core/validation-state-reader.js.map +1 -1
  20. package/dist/esm/src/dwn.js +19 -2
  21. package/dist/esm/src/dwn.js.map +1 -1
  22. package/dist/esm/src/handlers/messages-query.js +3 -5
  23. package/dist/esm/src/handlers/messages-query.js.map +1 -1
  24. package/dist/esm/src/handlers/protocols-configure.js +10 -4
  25. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  26. package/dist/esm/src/handlers/records-write.js +1 -1
  27. package/dist/esm/src/handlers/records-write.js.map +1 -1
  28. package/dist/esm/src/index.js +2 -1
  29. package/dist/esm/src/index.js.map +1 -1
  30. package/dist/esm/src/interfaces/protocols-configure.js +23 -10
  31. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  32. package/dist/esm/src/interfaces/records-write-signing.js +2 -8
  33. package/dist/esm/src/interfaces/records-write-signing.js.map +1 -1
  34. package/dist/esm/src/interfaces/records-write.js +43 -65
  35. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  36. package/dist/esm/src/protocols/encryption.js +411 -0
  37. package/dist/esm/src/protocols/encryption.js.map +1 -0
  38. package/dist/esm/src/protocols/permission-grant.js +0 -5
  39. package/dist/esm/src/protocols/permission-grant.js.map +1 -1
  40. package/dist/esm/src/types/message-types.js.map +1 -1
  41. package/dist/esm/src/types/permission-types.js.map +1 -1
  42. package/dist/esm/src/types/protocols-types.js.map +1 -1
  43. package/dist/esm/src/utils/encryption.js +156 -188
  44. package/dist/esm/src/utils/encryption.js.map +1 -1
  45. package/dist/esm/src/utils/hd-key.js +0 -1
  46. package/dist/esm/src/utils/hd-key.js.map +1 -1
  47. package/dist/esm/src/utils/permission-scope.js +9 -6
  48. package/dist/esm/src/utils/permission-scope.js.map +1 -1
  49. package/dist/esm/src/utils/protocols.js +12 -9
  50. package/dist/esm/src/utils/protocols.js.map +1 -1
  51. package/dist/esm/src/utils/records.js +54 -56
  52. package/dist/esm/src/utils/records.js.map +1 -1
  53. package/dist/esm/src/utils/replication.js +27 -4
  54. package/dist/esm/src/utils/replication.js.map +1 -1
  55. package/dist/esm/tests/core/replication-apply.spec.js +141 -1
  56. package/dist/esm/tests/core/replication-apply.spec.js.map +1 -1
  57. package/dist/esm/tests/core/replication-replay-property.spec.js +1 -0
  58. package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -1
  59. package/dist/esm/tests/core/validation-read-closure.spec.js +111 -0
  60. package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -1
  61. package/dist/esm/tests/core/validation-state-reader.spec.js +89 -0
  62. package/dist/esm/tests/core/validation-state-reader.spec.js.map +1 -1
  63. package/dist/esm/tests/features/protocol-composition.spec.js +30 -31
  64. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  65. package/dist/esm/tests/fuzz/encryption.fuzz.spec.js +29 -121
  66. package/dist/esm/tests/fuzz/encryption.fuzz.spec.js.map +1 -1
  67. package/dist/esm/tests/handlers/messages-query.spec.js +71 -3
  68. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
  69. package/dist/esm/tests/handlers/messages-read.spec.js +2 -2
  70. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  71. package/dist/esm/tests/handlers/records-read.spec.js +9 -135
  72. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  73. package/dist/esm/tests/handlers/records-write.spec.js +279 -19
  74. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  75. package/dist/esm/tests/interfaces/protocols-configure.spec.js +17 -22
  76. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  77. package/dist/esm/tests/interfaces/records-write.spec.js +170 -150
  78. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  79. package/dist/esm/tests/protocols/encryption.spec.js +914 -0
  80. package/dist/esm/tests/protocols/encryption.spec.js.map +1 -0
  81. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +100 -100
  82. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  83. package/dist/esm/tests/store/message-store-level.spec.js +20 -2
  84. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  85. package/dist/esm/tests/utils/encryption-callbacks.spec.js +88 -125
  86. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  87. package/dist/esm/tests/utils/encryption.spec.js +121 -271
  88. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  89. package/dist/esm/tests/utils/permission-scope.spec.js +5 -1
  90. package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -1
  91. package/dist/esm/tests/utils/records.spec.js +15 -5
  92. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  93. package/dist/esm/tests/utils/test-data-generator.js +7 -44
  94. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  95. package/dist/esm/tests/validation/json-schemas/encryption/audience-key.spec.js +40 -0
  96. package/dist/esm/tests/validation/json-schemas/encryption/audience-key.spec.js.map +1 -0
  97. package/dist/esm/tests/validation/json-schemas/encryption/grant-key.spec.js +72 -0
  98. package/dist/esm/tests/validation/json-schemas/encryption/grant-key.spec.js.map +1 -0
  99. package/dist/types/generated/precompiled-validators.d.ts +140 -92
  100. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  101. package/dist/types/src/core/constants.d.ts +2 -2
  102. package/dist/types/src/core/constants.d.ts.map +1 -1
  103. package/dist/types/src/core/core-protocol.d.ts +1 -1
  104. package/dist/types/src/core/core-protocol.d.ts.map +1 -1
  105. package/dist/types/src/core/dwn-error.d.ts +29 -1
  106. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  107. package/dist/types/src/core/messages-grant-authorization.d.ts +2 -0
  108. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  109. package/dist/types/src/core/protocol-authorization-validation.d.ts +2 -2
  110. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
  111. package/dist/types/src/core/recording-validation-state-reader.d.ts +9 -0
  112. package/dist/types/src/core/recording-validation-state-reader.d.ts.map +1 -1
  113. package/dist/types/src/core/replication-apply.d.ts +4 -3
  114. package/dist/types/src/core/replication-apply.d.ts.map +1 -1
  115. package/dist/types/src/core/validation-state-reader.d.ts +9 -0
  116. package/dist/types/src/core/validation-state-reader.d.ts.map +1 -1
  117. package/dist/types/src/dwn.d.ts +1 -0
  118. package/dist/types/src/dwn.d.ts.map +1 -1
  119. package/dist/types/src/handlers/messages-query.d.ts.map +1 -1
  120. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  121. package/dist/types/src/index.d.ts +6 -5
  122. package/dist/types/src/index.d.ts.map +1 -1
  123. package/dist/types/src/interfaces/protocols-configure.d.ts +1 -1
  124. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  125. package/dist/types/src/interfaces/records-write-signing.d.ts +4 -8
  126. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -1
  127. package/dist/types/src/interfaces/records-write.d.ts +10 -26
  128. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  129. package/dist/types/src/protocols/encryption.d.ts +43 -0
  130. package/dist/types/src/protocols/encryption.d.ts.map +1 -0
  131. package/dist/types/src/protocols/permission-grant.d.ts +0 -7
  132. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  133. package/dist/types/src/types/encryption-types.d.ts +5 -38
  134. package/dist/types/src/types/encryption-types.d.ts.map +1 -1
  135. package/dist/types/src/types/message-types.d.ts +0 -13
  136. package/dist/types/src/types/message-types.d.ts.map +1 -1
  137. package/dist/types/src/types/permission-types.d.ts +0 -9
  138. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  139. package/dist/types/src/types/protocols-types.d.ts +9 -14
  140. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  141. package/dist/types/src/types/records-types.d.ts +3 -3
  142. package/dist/types/src/types/records-types.d.ts.map +1 -1
  143. package/dist/types/src/types/validation-state-reader.d.ts +12 -0
  144. package/dist/types/src/types/validation-state-reader.d.ts.map +1 -1
  145. package/dist/types/src/utils/encryption.d.ts +61 -145
  146. package/dist/types/src/utils/encryption.d.ts.map +1 -1
  147. package/dist/types/src/utils/hd-key.d.ts +1 -1
  148. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  149. package/dist/types/src/utils/permission-scope.d.ts +4 -3
  150. package/dist/types/src/utils/permission-scope.d.ts.map +1 -1
  151. package/dist/types/src/utils/protocols.d.ts +3 -5
  152. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  153. package/dist/types/src/utils/records.d.ts +5 -13
  154. package/dist/types/src/utils/records.d.ts.map +1 -1
  155. package/dist/types/src/utils/replication.d.ts +3 -0
  156. package/dist/types/src/utils/replication.d.ts.map +1 -1
  157. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  158. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
  159. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  160. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  161. package/dist/types/tests/protocols/encryption.spec.d.ts +2 -0
  162. package/dist/types/tests/protocols/encryption.spec.d.ts.map +1 -0
  163. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  164. package/dist/types/tests/utils/test-data-generator.d.ts +0 -5
  165. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  166. package/dist/types/tests/validation/json-schemas/encryption/audience-key.spec.d.ts +2 -0
  167. package/dist/types/tests/validation/json-schemas/encryption/audience-key.spec.d.ts.map +1 -0
  168. package/dist/types/tests/validation/json-schemas/encryption/grant-key.spec.d.ts +2 -0
  169. package/dist/types/tests/validation/json-schemas/encryption/grant-key.spec.d.ts.map +1 -0
  170. package/package.json +3 -3
  171. package/src/core/constants.ts +3 -3
  172. package/src/core/core-protocol.ts +1 -1
  173. package/src/core/dwn-error.ts +29 -1
  174. package/src/core/messages-grant-authorization.ts +27 -0
  175. package/src/core/protocol-authorization-validation.ts +145 -6
  176. package/src/core/recording-validation-state-reader.ts +13 -0
  177. package/src/core/replication-apply.ts +222 -8
  178. package/src/core/validation-state-reader.ts +30 -0
  179. package/src/dwn.ts +24 -2
  180. package/src/handlers/messages-query.ts +6 -5
  181. package/src/handlers/protocols-configure.ts +19 -3
  182. package/src/handlers/records-write.ts +1 -1
  183. package/src/index.ts +15 -5
  184. package/src/interfaces/protocols-configure.ts +39 -12
  185. package/src/interfaces/records-write-signing.ts +5 -12
  186. package/src/interfaces/records-write.ts +75 -92
  187. package/src/protocols/encryption.ts +649 -0
  188. package/src/protocols/permission-grant.ts +0 -6
  189. package/src/types/encryption-types.ts +9 -38
  190. package/src/types/message-types.ts +0 -13
  191. package/src/types/permission-types.ts +0 -10
  192. package/src/types/protocols-types.ts +9 -16
  193. package/src/types/records-types.ts +3 -3
  194. package/src/types/validation-state-reader.ts +13 -0
  195. package/src/utils/encryption.ts +258 -280
  196. package/src/utils/hd-key.ts +1 -1
  197. package/src/utils/permission-scope.ts +10 -6
  198. package/src/utils/protocols.ts +16 -15
  199. package/src/utils/records.ts +86 -71
  200. package/src/utils/replication.ts +30 -4
  201. package/dist/esm/tests/vectors/protocol-definitions/chat.json +0 -70
@@ -6,7 +6,7 @@ import { ProtocolsConfigureHandler } from '../../src/handlers/protocols-configur
6
6
  import { TestDataGenerator } from '../utils/test-data-generator.js';
7
7
  import { Time } from '../../src/utils/time.js';
8
8
  import { afterEach, describe, expect, it } from 'bun:test';
9
- import { DwnErrorCode, DwnInterfaceName, DwnMethodName, Message } from '../../src/index.js';
9
+ import { DwnErrorCode, DwnInterfaceName, DwnMethodName, Message, Protocols } from '../../src/index.js';
10
10
  describe('ProtocolsConfigure', () => {
11
11
  describe('parse()', () => {
12
12
  it('should throw if protocol definitions has record nesting more than 10 level deep', async () => {
@@ -424,7 +424,7 @@ describe('ProtocolsConfigure', () => {
424
424
  console.warn = originalWarn;
425
425
  capturedWarnings.length = 0;
426
426
  });
427
- it('should warn when encryptionRequired: true and anyone can read at the same path', async () => {
427
+ it('should reject encryptionRequired: true when anyone can read at the same path', async () => {
428
428
  originalWarn = console.warn;
429
429
  console.warn = (...args) => { capturedWarnings.push(String(args[0])); };
430
430
  const definition = {
@@ -445,19 +445,14 @@ describe('ProtocolsConfigure', () => {
445
445
  },
446
446
  };
447
447
  const alice = await TestDataGenerator.generatePersona();
448
- const result = await ProtocolsConfigure.create({
448
+ const encryptedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, alice.keyId, alice.encryptionKeyPair.privateJwk);
449
+ await expect(ProtocolsConfigure.create({
449
450
  signer: Jws.createSigner(alice),
450
- definition,
451
- });
452
- // The protocol is still valid — the warning is non-fatal
453
- expect(result).toBeDefined();
454
- // A warning should have been emitted
455
- expect(capturedWarnings.length).toBe(1);
456
- expect(capturedWarnings[0]).toContain('encryptionRequired: true');
457
- expect(capturedWarnings[0]).toContain('anyone');
458
- expect(capturedWarnings[0]).toContain('secret');
451
+ definition: encryptedDefinition,
452
+ })).rejects.toThrow(DwnErrorCode.ProtocolsConfigureInvalidEncryptedAnyoneRead);
453
+ expect(capturedWarnings.length).toBe(0);
459
454
  });
460
- it('should warn for nested types with encryptionRequired + anyone-can-read', async () => {
455
+ it('should reject nested types with encryptionRequired + anyone-can-read', async () => {
461
456
  originalWarn = console.warn;
462
457
  console.warn = (...args) => { capturedWarnings.push(String(args[0])); };
463
458
  const definition = {
@@ -480,14 +475,12 @@ describe('ProtocolsConfigure', () => {
480
475
  },
481
476
  };
482
477
  const alice = await TestDataGenerator.generatePersona();
483
- const result = await ProtocolsConfigure.create({
478
+ const encryptedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, alice.keyId, alice.encryptionKeyPair.privateJwk);
479
+ await expect(ProtocolsConfigure.create({
484
480
  signer: Jws.createSigner(alice),
485
- definition,
486
- });
487
- expect(result).toBeDefined();
488
- expect(capturedWarnings.length).toBe(1);
489
- expect(capturedWarnings[0]).toContain('message');
490
- expect(capturedWarnings[0]).toContain('thread/message');
481
+ definition: encryptedDefinition,
482
+ })).rejects.toThrow(DwnErrorCode.ProtocolsConfigureInvalidEncryptedAnyoneRead);
483
+ expect(capturedWarnings.length).toBe(0);
491
484
  });
492
485
  it('should not warn when encryptionRequired is absent', async () => {
493
486
  originalWarn = console.warn;
@@ -505,9 +498,10 @@ describe('ProtocolsConfigure', () => {
505
498
  },
506
499
  };
507
500
  const alice = await TestDataGenerator.generatePersona();
501
+ const encryptedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, alice.keyId, alice.encryptionKeyPair.privateJwk);
508
502
  const result = await ProtocolsConfigure.create({
509
503
  signer: Jws.createSigner(alice),
510
- definition,
504
+ definition: encryptedDefinition,
511
505
  });
512
506
  expect(result).toBeDefined();
513
507
  expect(capturedWarnings.length).toBe(0);
@@ -542,9 +536,10 @@ describe('ProtocolsConfigure', () => {
542
536
  },
543
537
  };
544
538
  const alice = await TestDataGenerator.generatePersona();
539
+ const encryptedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, alice.keyId, alice.encryptionKeyPair.privateJwk);
545
540
  const result = await ProtocolsConfigure.create({
546
541
  signer: Jws.createSigner(alice),
547
- definition,
542
+ definition: encryptedDefinition,
548
543
  });
549
544
  expect(result).toBeDefined();
550
545
  expect(capturedWarnings.length).toBe(0);
@@ -1 +1 @@
1
- {"version":3,"file":"protocols-configure.spec.js","sourceRoot":"","sources":["../../../../tests/interfaces/protocols-configure.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocols-configure.spec.js","sourceRoot":"","sources":["../../../../tests/interfaces/protocols-configure.spec.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import sinon from 'sinon';
2
2
  import { beforeEach, describe, expect, it } from 'bun:test';
3
+ import { DataStream } from '../../src/utils/data-stream.js';
3
4
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
5
+ import { Encryption } from '../../src/utils/encryption.js';
6
+ import { Records } from '../../src/utils/records.js';
4
7
  import { RecordsWrite } from '../../src/interfaces/records-write.js';
5
8
  import { RecordsWriteHandler } from '../../src/handlers/records-write.js';
6
9
  import { TestDataGenerator } from '../utils/test-data-generator.js';
7
10
  import { Time } from '../../src/utils/time.js';
8
- import { DwnInterfaceName, DwnMethodName, Encoder, Jws, KeyDerivationScheme, Message, MessageStoreLevel, PermissionsProtocol } from '../../src/index.js';
11
+ import { ContentEncryptionAlgorithm, DwnInterfaceName, DwnMethodName, Encoder, HdKey, Jws, KeyDerivationScheme, Message, MessageStoreLevel, PermissionsProtocol, ROLE_AUDIENCE_DERIVATION_SCHEME, } from '../../src/index.js';
9
12
  import { createTestValidationStateReader } from '../utils/test-validation-state-reader.js';
10
13
  describe('RecordsWrite', () => {
11
14
  beforeEach(() => {
@@ -263,6 +266,91 @@ describe('RecordsWrite', () => {
263
266
  });
264
267
  await expect(createPromise).rejects.toThrow(DwnErrorCode.RecordsWriteCreateMissingSigner);
265
268
  });
269
+ it('should reject if both encryption and encryptionInput are given', async () => {
270
+ const alice = await TestDataGenerator.generatePersona();
271
+ const dataEncryptionKey = TestDataGenerator.randomBytes(32);
272
+ const dataEncryptionInitializationVector = TestDataGenerator.randomBytes(16);
273
+ const publicKey = alice.encryptionKeyPair.publicJwk;
274
+ const encryptionInput = {
275
+ initializationVector: dataEncryptionInitializationVector,
276
+ key: dataEncryptionKey,
277
+ keyEncryptionInputs: [{
278
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
279
+ keyId: await Encryption.getKeyId(publicKey),
280
+ publicKey,
281
+ }],
282
+ };
283
+ const encryptedWrite = await RecordsWrite.create({
284
+ data: TestDataGenerator.randomBytes(32),
285
+ dataFormat: 'application/octet-stream',
286
+ encryptionInput,
287
+ protocol: 'https://example.com/protocol',
288
+ protocolPath: 'message',
289
+ signer: Jws.createSigner(alice),
290
+ });
291
+ const createPromise = RecordsWrite.create({
292
+ data: TestDataGenerator.randomBytes(32),
293
+ dataFormat: 'application/octet-stream',
294
+ encryption: encryptedWrite.message.encryption,
295
+ encryptionInput,
296
+ protocol: 'https://example.com/protocol',
297
+ protocolPath: 'message',
298
+ signer: Jws.createSigner(alice),
299
+ });
300
+ await expect(createPromise).rejects.toThrow(DwnErrorCode.RecordsWriteCreateEncryptionAndEncryptionInputMutuallyExclusive);
301
+ });
302
+ it('should reject encrypted messages whose initializationVector has the wrong decoded length', async () => {
303
+ const alice = await TestDataGenerator.generatePersona();
304
+ const publicKey = alice.encryptionKeyPair.publicJwk;
305
+ const recordsWrite = await RecordsWrite.create({
306
+ data: TestDataGenerator.randomBytes(32),
307
+ dataFormat: 'application/octet-stream',
308
+ encryptionInput: {
309
+ initializationVector: TestDataGenerator.randomBytes(16),
310
+ key: TestDataGenerator.randomBytes(32),
311
+ keyEncryptionInputs: [{
312
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
313
+ keyId: await Encryption.getKeyId(publicKey),
314
+ publicKey,
315
+ }],
316
+ },
317
+ protocol: 'https://example.com/protocol',
318
+ protocolPath: 'message',
319
+ signer: Jws.createSigner(alice),
320
+ });
321
+ const message = structuredClone(recordsWrite.message);
322
+ message.encryption.initializationVector = Encoder.bytesToBase64Url(TestDataGenerator.randomBytes(15));
323
+ await expect(RecordsWrite.parse(message)).rejects.toThrow(DwnErrorCode.RecordsWriteValidateIntegrityEncryptionInitializationVectorInvalid);
324
+ });
325
+ it('should create and parse encrypted messages with roleAudience key encryption entries', async () => {
326
+ const alice = await TestDataGenerator.generatePersona();
327
+ const publicKey = alice.encryptionKeyPair.publicJwk;
328
+ const recordsWrite = await RecordsWrite.create({
329
+ data: TestDataGenerator.randomBytes(32),
330
+ dataFormat: 'application/octet-stream',
331
+ encryptionInput: {
332
+ initializationVector: TestDataGenerator.randomBytes(16),
333
+ key: TestDataGenerator.randomBytes(32),
334
+ keyEncryptionInputs: [{
335
+ derivationScheme: ROLE_AUDIENCE_DERIVATION_SCHEME,
336
+ epoch: 1,
337
+ keyId: await Encryption.getKeyId(publicKey),
338
+ protocol: 'https://example.com/protocol',
339
+ publicKey,
340
+ role: 'thread/member',
341
+ }],
342
+ },
343
+ protocol: 'https://example.com/protocol',
344
+ protocolPath: 'message',
345
+ signer: Jws.createSigner(alice),
346
+ });
347
+ await RecordsWrite.parse(recordsWrite.message);
348
+ const keyEncryption = recordsWrite.message.encryption.keyEncryption[0];
349
+ expect(keyEncryption.derivationScheme).toBe(ROLE_AUDIENCE_DERIVATION_SCHEME);
350
+ expect('epoch' in keyEncryption && keyEncryption.epoch).toBe(1);
351
+ expect('protocol' in keyEncryption && keyEncryption.protocol).toBe('https://example.com/protocol');
352
+ expect('role' in keyEncryption && keyEncryption.role).toBe('thread/member');
353
+ });
266
354
  });
267
355
  describe('createFrom()', () => {
268
356
  it('should create a RecordsWrite with `published` set to `true` with just `publishedDate` given', async () => {
@@ -305,6 +393,75 @@ describe('RecordsWrite', () => {
305
393
  });
306
394
  expect(write2.message.descriptor.tags).toBeUndefined();
307
395
  });
396
+ it('should attach encryption metadata when encryptionInput is given', async () => {
397
+ const { author, recordsWrite } = await TestDataGenerator.generateRecordsWrite();
398
+ const plaintext = TestDataGenerator.randomBytes(32);
399
+ const dataEncryptionKey = TestDataGenerator.randomBytes(32);
400
+ const dataEncryptionInitializationVector = TestDataGenerator.randomBytes(16);
401
+ const encryptedData = await Encryption.encrypt(ContentEncryptionAlgorithm.A256CTR, dataEncryptionKey, dataEncryptionInitializationVector, plaintext);
402
+ const publicKey = author.encryptionKeyPair.publicJwk;
403
+ const keyId = await Encryption.getKeyId(publicKey);
404
+ const encryptionInput = {
405
+ initializationVector: dataEncryptionInitializationVector,
406
+ key: dataEncryptionKey,
407
+ keyEncryptionInputs: [{
408
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
409
+ keyId,
410
+ publicKey,
411
+ }],
412
+ };
413
+ const write = await RecordsWrite.createFrom({
414
+ recordsWriteMessage: recordsWrite.message,
415
+ data: encryptedData,
416
+ encryptionInput,
417
+ signer: Jws.createSigner(author),
418
+ });
419
+ expect(write.message.encryption).toBeDefined();
420
+ expect(write.message.encryption.keyEncryption).toHaveLength(1);
421
+ expect(write.message.encryption.keyEncryption[0].keyId).toBe(keyId);
422
+ expect(write.signaturePayload.encryptionCid).toBeDefined();
423
+ });
424
+ it('should preserve encryption metadata when updating without new data', async () => {
425
+ const alice = await TestDataGenerator.generatePersona();
426
+ const plaintext = TestDataGenerator.randomBytes(32);
427
+ const dataEncryptionKey = TestDataGenerator.randomBytes(32);
428
+ const dataEncryptionInitializationVector = TestDataGenerator.randomBytes(16);
429
+ const encryptedData = await Encryption.encrypt(ContentEncryptionAlgorithm.A256CTR, dataEncryptionKey, dataEncryptionInitializationVector, plaintext);
430
+ const protocol = 'https://example.com/protocol';
431
+ const protocolPath = 'message';
432
+ const rootKey = {
433
+ derivedPrivateKey: alice.encryptionKeyPair.privateJwk,
434
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
435
+ rootKeyId: 'unused',
436
+ };
437
+ const publicKey = await HdKey.derivePublicKey(rootKey, [KeyDerivationScheme.ProtocolPath, protocol, protocolPath]);
438
+ const encryptionInput = {
439
+ initializationVector: dataEncryptionInitializationVector,
440
+ key: dataEncryptionKey,
441
+ keyEncryptionInputs: [{
442
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
443
+ keyId: await Encryption.getKeyId(publicKey),
444
+ publicKey,
445
+ }],
446
+ };
447
+ const initialWrite = await RecordsWrite.create({
448
+ data: encryptedData,
449
+ dataFormat: 'application/octet-stream',
450
+ encryptionInput,
451
+ protocol,
452
+ protocolPath,
453
+ signer: Jws.createSigner(alice),
454
+ });
455
+ const updateWrite = await RecordsWrite.createFrom({
456
+ recordsWriteMessage: initialWrite.message,
457
+ signer: Jws.createSigner(alice),
458
+ tags: { edited: true },
459
+ });
460
+ expect(updateWrite.message.encryption).toEqual(initialWrite.message.encryption);
461
+ expect(updateWrite.signaturePayload.encryptionCid).toBe(initialWrite.signaturePayload.encryptionCid);
462
+ const decryptedStream = await Records.decrypt(updateWrite.message, rootKey, DataStream.fromBytes(encryptedData));
463
+ expect(await DataStream.toBytes(decryptedStream)).toEqual(plaintext);
464
+ });
308
465
  });
309
466
  describe('parse()', () => {
310
467
  it('should invoke JSON schema validation when parsing a RecordsWrite', async () => {
@@ -449,8 +606,9 @@ describe('RecordsWrite', () => {
449
606
  describe('encryptSymmetricEncryptionKey()', () => {
450
607
  it('should replace encryption property by default', async () => {
451
608
  const alice = await TestDataGenerator.generatePersona();
609
+ const bob = await TestDataGenerator.generatePersona();
452
610
  const dataEncryptionKey = TestDataGenerator.randomBytes(32);
453
- const dataEncryptionIV = TestDataGenerator.randomBytes(12);
611
+ const dataEncryptionIV = TestDataGenerator.randomBytes(16);
454
612
  const recordsWrite = await RecordsWrite.create({
455
613
  signer: Jws.createSigner(alice),
456
614
  protocol: 'https://example.com/protocol',
@@ -463,170 +621,32 @@ describe('RecordsWrite', () => {
463
621
  const encryptionInput1 = {
464
622
  initializationVector: dataEncryptionIV,
465
623
  key: dataEncryptionKey,
466
- authenticationTag: TestDataGenerator.randomBytes(16),
467
624
  keyEncryptionInputs: [{
468
- publicKeyId: alice.keyId,
625
+ keyId: await Encryption.getKeyId(alice.encryptionKeyPair.publicJwk),
469
626
  publicKey: alice.encryptionKeyPair.publicJwk,
470
627
  derivationScheme: KeyDerivationScheme.ProtocolPath,
471
628
  }],
472
629
  };
473
630
  await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput1);
474
631
  expect(recordsWrite['_message'].encryption).toBeDefined();
475
- expect(recordsWrite['_message'].encryption.recipients).toHaveLength(1);
476
- expect(recordsWrite['_message'].encryption.recipients[0].header.derivationScheme).toBe('protocolPath');
632
+ expect(recordsWrite['_message'].encryption.keyEncryption).toHaveLength(1);
633
+ expect(recordsWrite['_message'].encryption.keyEncryption[0].derivationScheme).toBe('protocolPath');
477
634
  // Second encryption (replace mode) — should overwrite
478
635
  const encryptionInput2 = {
479
636
  initializationVector: dataEncryptionIV,
480
637
  key: dataEncryptionKey,
481
- authenticationTag: TestDataGenerator.randomBytes(16),
482
- keyEncryptionInputs: [{
483
- publicKeyId: alice.keyId,
484
- publicKey: alice.encryptionKeyPair.publicJwk,
485
- derivationScheme: KeyDerivationScheme.ProtocolContext,
486
- }],
487
- };
488
- await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput2);
489
- // Should have replaced — only 1 entry with ProtocolContext scheme
490
- expect(recordsWrite['_message'].encryption.recipients).toHaveLength(1);
491
- expect(recordsWrite['_message'].encryption.recipients[0].header.derivationScheme).toBe('protocolContext');
492
- });
493
- it('should append recipients when append option is true', async () => {
494
- const alice = await TestDataGenerator.generatePersona();
495
- const dataEncryptionKey = TestDataGenerator.randomBytes(32);
496
- const dataEncryptionIV = TestDataGenerator.randomBytes(12);
497
- const recordsWrite = await RecordsWrite.create({
498
- signer: Jws.createSigner(alice),
499
- protocol: 'https://example.com/protocol',
500
- protocolPath: 'test',
501
- schema: 'https://example.com/schema',
502
- dataFormat: 'application/octet-stream',
503
- data: TestDataGenerator.randomBytes(100),
504
- });
505
- // First encryption — ProtocolPath
506
- const encryptionInput1 = {
507
- initializationVector: dataEncryptionIV,
508
- key: dataEncryptionKey,
509
- authenticationTag: TestDataGenerator.randomBytes(16),
510
638
  keyEncryptionInputs: [{
511
- publicKeyId: alice.keyId,
512
- publicKey: alice.encryptionKeyPair.publicJwk,
639
+ keyId: await Encryption.getKeyId(bob.encryptionKeyPair.publicJwk),
640
+ publicKey: bob.encryptionKeyPair.publicJwk,
513
641
  derivationScheme: KeyDerivationScheme.ProtocolPath,
514
642
  }],
515
643
  };
516
- await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput1);
517
- const originalIV = recordsWrite['_message'].encryption.iv;
518
- const originalProtected = recordsWrite['_message'].encryption.protected;
519
- // Second encryption with append — ProtocolContext
520
- const encryptionInput2 = {
521
- initializationVector: dataEncryptionIV,
522
- key: dataEncryptionKey,
523
- authenticationTag: TestDataGenerator.randomBytes(16),
524
- keyEncryptionInputs: [{
525
- publicKeyId: alice.keyId,
526
- publicKey: alice.encryptionKeyPair.publicJwk,
527
- derivationScheme: KeyDerivationScheme.ProtocolContext,
528
- }],
529
- };
530
- await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput2, { append: true });
531
- // Should have both entries
644
+ await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput2);
645
+ // Should have replaced — only Bob's entry remains
532
646
  const encryption = recordsWrite['_message'].encryption;
533
- expect(encryption.recipients).toHaveLength(2);
534
- expect(encryption.recipients[0].header.derivationScheme).toBe('protocolPath');
535
- expect(encryption.recipients[1].header.derivationScheme).toBe('protocolContext');
536
- // Original IV and protected header should be preserved
537
- expect(encryption.iv).toBe(originalIV);
538
- expect(encryption.protected).toBe(originalProtected);
539
- // ProtocolContext entry should have derivedPublicKey
540
- expect(encryption.recipients[1].header.derivedPublicKey).toBeDefined();
541
- // Authorization was already wiped by the first (non-append) call, so
542
- // append mode preserves whatever state exists — which is undefined here.
543
- // When starting from a parsed/signed message (the signAsOwner test
544
- // below), authorization IS preserved by append mode.
545
- expect(recordsWrite['_message'].authorization).toBeUndefined();
546
- });
547
- it('should allow signAsOwner after appending an owner recipient', async () => {
548
- // Simulates the cross-DWN scenario: Bob authors a record, Alice (owner)
549
- // appends a ProtocolContext recipient entry, then signs as owner.
550
- const alice = await TestDataGenerator.generatePersona();
551
- const bob = await TestDataGenerator.generatePersona();
552
- const dataEncryptionKey = TestDataGenerator.randomBytes(32);
553
- const dataEncryptionIV = TestDataGenerator.randomBytes(12);
554
- // Bob creates and signs the record
555
- const recordsWrite = await RecordsWrite.create({
556
- signer: Jws.createSigner(bob),
557
- protocol: 'https://example.com/protocol',
558
- protocolPath: 'thread',
559
- schema: 'https://example.com/schema',
560
- dataFormat: 'application/octet-stream',
561
- data: TestDataGenerator.randomBytes(100),
562
- });
563
- // Bob encrypts with ProtocolPath, then re-signs
564
- const encryptionInput1 = {
565
- initializationVector: dataEncryptionIV,
566
- key: dataEncryptionKey,
567
- authenticationTag: TestDataGenerator.randomBytes(16),
568
- keyEncryptionInputs: [{
569
- publicKeyId: alice.keyId,
570
- publicKey: alice.encryptionKeyPair.publicJwk,
571
- derivationScheme: KeyDerivationScheme.ProtocolPath,
572
- }],
573
- };
574
- await recordsWrite.encryptSymmetricEncryptionKey(encryptionInput1);
575
- await recordsWrite.sign({ signer: Jws.createSigner(bob) });
576
- expect(recordsWrite.author).toBe(bob.did);
577
- expect(recordsWrite['_message'].authorization).toBeDefined();
578
- // Simulate: Alice parses Bob's message and appends ProtocolContext
579
- const parsed = await RecordsWrite.parse(recordsWrite.message);
580
- expect(parsed.author).toBe(bob.did);
581
- const encryptionInput2 = {
582
- initializationVector: dataEncryptionIV,
583
- key: dataEncryptionKey,
584
- authenticationTag: TestDataGenerator.randomBytes(16),
585
- keyEncryptionInputs: [{
586
- publicKeyId: alice.keyId,
587
- publicKey: alice.encryptionKeyPair.publicJwk,
588
- derivationScheme: KeyDerivationScheme.ProtocolContext,
589
- }],
590
- };
591
- await parsed.encryptSymmetricEncryptionKey(encryptionInput2, { append: true });
592
- // Author and authorization should be preserved after append
593
- expect(parsed.author).toBe(bob.did);
594
- expect(parsed['_message'].authorization).toBeDefined();
595
- // Alice signs as owner — should NOT throw
596
- await parsed.signAsOwner(Jws.createSigner(alice));
597
- expect(parsed.owner).toBe(alice.did);
598
- expect(parsed['_message'].authorization.ownerSignature).toBeDefined();
599
- // Both recipient entries should be present
600
- const encryption = parsed['_message'].encryption;
601
- expect(encryption.recipients).toHaveLength(2);
602
- expect(encryption.recipients[0].header.derivationScheme).toBe('protocolPath');
603
- expect(encryption.recipients[1].header.derivationScheme).toBe('protocolContext');
604
- // validateIntegrity should pass — the stale encryptionCid in the
605
- // author's signature is allowed when ownerSignature is present
606
- await parsed['validateIntegrity']();
607
- });
608
- it('should throw when append is true but encryption does not exist', async () => {
609
- const alice = await TestDataGenerator.generatePersona();
610
- const dataEncryptionKey = TestDataGenerator.randomBytes(32);
611
- const dataEncryptionIV = TestDataGenerator.randomBytes(12);
612
- const recordsWrite = await RecordsWrite.create({
613
- signer: Jws.createSigner(alice),
614
- protocol: 'https://example.com/protocol',
615
- protocolPath: 'test',
616
- dataFormat: 'application/octet-stream',
617
- data: TestDataGenerator.randomBytes(100),
618
- });
619
- const encryptionInput = {
620
- initializationVector: dataEncryptionIV,
621
- key: dataEncryptionKey,
622
- authenticationTag: TestDataGenerator.randomBytes(16),
623
- keyEncryptionInputs: [{
624
- publicKeyId: alice.keyId,
625
- publicKey: alice.encryptionKeyPair.publicJwk,
626
- derivationScheme: KeyDerivationScheme.ProtocolPath,
627
- }],
628
- };
629
- await expect(recordsWrite.encryptSymmetricEncryptionKey(encryptionInput, { append: true })).rejects.toThrow(DwnErrorCode.RecordsWriteMissingEncryption);
647
+ expect(encryption.keyEncryption).toHaveLength(1);
648
+ expect(encryption.keyEncryption[0].derivationScheme).toBe('protocolPath');
649
+ expect(encryption.keyEncryption[0].keyId).toBe(await Encryption.getKeyId(bob.encryptionKeyPair.publicJwk));
630
650
  });
631
651
  });
632
652
  });