@enbox/dwn-sdk-js 0.4.12 → 0.4.14

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 (145) hide show
  1. package/dist/browser.mjs +1 -1
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/src/core/dwn-error.js +8 -1
  4. package/dist/esm/src/core/dwn-error.js.map +1 -1
  5. package/dist/esm/src/core/encryption-control.js +38 -2
  6. package/dist/esm/src/core/encryption-control.js.map +1 -1
  7. package/dist/esm/src/core/message-reply.js +14 -1
  8. package/dist/esm/src/core/message-reply.js.map +1 -1
  9. package/dist/esm/src/core/protocol-authorization-action.js +130 -107
  10. package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
  11. package/dist/esm/src/core/protocol-authorization.js +10 -0
  12. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  13. package/dist/esm/src/event-stream/broadcast-channel-wake-publisher.js +63 -0
  14. package/dist/esm/src/event-stream/broadcast-channel-wake-publisher.js.map +1 -0
  15. package/dist/esm/src/handlers/protocols-configure.js +2 -0
  16. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  17. package/dist/esm/src/handlers/records-subscribe.js +73 -46
  18. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  19. package/dist/esm/src/handlers/records-write.js +132 -73
  20. package/dist/esm/src/handlers/records-write.js.map +1 -1
  21. package/dist/esm/src/index.js +1 -0
  22. package/dist/esm/src/index.js.map +1 -1
  23. package/dist/esm/src/interfaces/protocols-configure.js +3 -5
  24. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  25. package/dist/esm/src/interfaces/records-write-query.js +2 -3
  26. package/dist/esm/src/interfaces/records-write-query.js.map +1 -1
  27. package/dist/esm/src/interfaces/records-write.js +50 -35
  28. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  29. package/dist/esm/src/jose/jws/general/verifier.js +1 -1
  30. package/dist/esm/src/store/blockstore-mock.js +3 -0
  31. package/dist/esm/src/store/blockstore-mock.js.map +1 -1
  32. package/dist/esm/src/store/index-level-compound.js +34 -18
  33. package/dist/esm/src/store/index-level-compound.js.map +1 -1
  34. package/dist/esm/src/store/index-level.js +5 -5
  35. package/dist/esm/src/store/index-level.js.map +1 -1
  36. package/dist/esm/src/store/message-store-level.js +2 -2
  37. package/dist/esm/src/store/message-store-level.js.map +1 -1
  38. package/dist/esm/src/store/storage-controller.js +26 -17
  39. package/dist/esm/src/store/storage-controller.js.map +1 -1
  40. package/dist/esm/src/types/message-types.js.map +1 -1
  41. package/dist/esm/src/utils/filter.js +4 -8
  42. package/dist/esm/src/utils/filter.js.map +1 -1
  43. package/dist/esm/src/utils/messages.js +46 -28
  44. package/dist/esm/src/utils/messages.js.map +1 -1
  45. package/dist/esm/src/utils/protocols.js +2 -2
  46. package/dist/esm/src/utils/protocols.js.map +1 -1
  47. package/dist/esm/src/utils/records.js +49 -33
  48. package/dist/esm/src/utils/records.js.map +1 -1
  49. package/dist/esm/src/utils/secp256r1.js +1 -1
  50. package/dist/esm/src/utils/secp256r1.js.map +1 -1
  51. package/dist/esm/src/utils/url.js +1 -1
  52. package/dist/esm/src/utils/url.js.map +1 -1
  53. package/dist/esm/tests/broadcast-channel-wake-publisher.spec.js +74 -0
  54. package/dist/esm/tests/broadcast-channel-wake-publisher.spec.js.map +1 -0
  55. package/dist/esm/tests/core/message-reply.spec.js +27 -0
  56. package/dist/esm/tests/core/message-reply.spec.js.map +1 -1
  57. package/dist/esm/tests/core/process-message-parity.spec.js +3 -0
  58. package/dist/esm/tests/core/process-message-parity.spec.js.map +1 -1
  59. package/dist/esm/tests/durable-event-log.spec.js +37 -0
  60. package/dist/esm/tests/durable-event-log.spec.js.map +1 -1
  61. package/dist/esm/tests/features/records-squash.spec.js +5 -0
  62. package/dist/esm/tests/features/records-squash.spec.js.map +1 -1
  63. package/dist/esm/tests/handlers/messages-query.spec.js +14 -28
  64. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
  65. package/dist/esm/tests/handlers/protocols-configure.spec.js +441 -1
  66. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  67. package/dist/esm/tests/handlers/records-write.spec.js +1 -0
  68. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  69. package/dist/esm/tests/test-suite.js +8 -0
  70. package/dist/esm/tests/test-suite.js.map +1 -1
  71. package/dist/types/src/core/dwn-error.d.ts +14 -1
  72. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  73. package/dist/types/src/core/encryption-control.d.ts +16 -0
  74. package/dist/types/src/core/encryption-control.d.ts.map +1 -1
  75. package/dist/types/src/core/message-reply.d.ts +5 -0
  76. package/dist/types/src/core/message-reply.d.ts.map +1 -1
  77. package/dist/types/src/core/protocol-authorization-action.d.ts +6 -1
  78. package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
  79. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  80. package/dist/types/src/event-stream/broadcast-channel-wake-publisher.d.ts +35 -0
  81. package/dist/types/src/event-stream/broadcast-channel-wake-publisher.d.ts.map +1 -0
  82. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  83. package/dist/types/src/handlers/records-subscribe.d.ts +18 -0
  84. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  85. package/dist/types/src/handlers/records-write.d.ts +28 -0
  86. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  87. package/dist/types/src/index.d.ts +2 -0
  88. package/dist/types/src/index.d.ts.map +1 -1
  89. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  90. package/dist/types/src/interfaces/records-write-query.d.ts.map +1 -1
  91. package/dist/types/src/interfaces/records-write.d.ts +12 -0
  92. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  93. package/dist/types/src/store/blockstore-mock.d.ts.map +1 -1
  94. package/dist/types/src/store/index-level-compound.d.ts +4 -1
  95. package/dist/types/src/store/index-level-compound.d.ts.map +1 -1
  96. package/dist/types/src/store/index-level.d.ts.map +1 -1
  97. package/dist/types/src/store/storage-controller.d.ts +6 -0
  98. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  99. package/dist/types/src/types/jose-types.d.ts +3 -2
  100. package/dist/types/src/types/jose-types.d.ts.map +1 -1
  101. package/dist/types/src/types/message-types.d.ts +13 -0
  102. package/dist/types/src/types/message-types.d.ts.map +1 -1
  103. package/dist/types/src/types/subscriptions.d.ts +6 -1
  104. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  105. package/dist/types/src/utils/filter.d.ts.map +1 -1
  106. package/dist/types/src/utils/messages.d.ts +14 -0
  107. package/dist/types/src/utils/messages.d.ts.map +1 -1
  108. package/dist/types/src/utils/records.d.ts +10 -0
  109. package/dist/types/src/utils/records.d.ts.map +1 -1
  110. package/dist/types/tests/broadcast-channel-wake-publisher.spec.d.ts +2 -0
  111. package/dist/types/tests/broadcast-channel-wake-publisher.spec.d.ts.map +1 -0
  112. package/dist/types/tests/features/records-squash.spec.d.ts.map +1 -1
  113. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
  114. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  115. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  116. package/dist/types/tests/test-suite.d.ts.map +1 -1
  117. package/package.json +4 -4
  118. package/src/core/dwn-error.ts +15 -1
  119. package/src/core/encryption-control.ts +66 -2
  120. package/src/core/message-reply.ts +18 -2
  121. package/src/core/protocol-authorization-action.ts +167 -117
  122. package/src/core/protocol-authorization.ts +13 -0
  123. package/src/event-stream/broadcast-channel-wake-publisher.ts +71 -0
  124. package/src/handlers/protocols-configure.ts +2 -0
  125. package/src/handlers/records-subscribe.ts +98 -47
  126. package/src/handlers/records-write.ts +177 -91
  127. package/src/index.ts +2 -0
  128. package/src/interfaces/protocols-configure.ts +6 -8
  129. package/src/interfaces/records-write-query.ts +2 -3
  130. package/src/interfaces/records-write.ts +62 -44
  131. package/src/jose/jws/general/verifier.ts +1 -1
  132. package/src/store/blockstore-mock.ts +3 -0
  133. package/src/store/index-level-compound.ts +55 -24
  134. package/src/store/index-level.ts +6 -4
  135. package/src/store/message-store-level.ts +2 -2
  136. package/src/store/storage-controller.ts +27 -16
  137. package/src/types/jose-types.ts +3 -2
  138. package/src/types/message-types.ts +16 -0
  139. package/src/types/subscriptions.ts +6 -1
  140. package/src/utils/filter.ts +4 -8
  141. package/src/utils/messages.ts +53 -30
  142. package/src/utils/protocols.ts +2 -2
  143. package/src/utils/records.ts +76 -51
  144. package/src/utils/secp256r1.ts +1 -1
  145. package/src/utils/url.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"messages-query.spec.js","sourceRoot":"","sources":["../../../../tests/handlers/messages-query.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages-query.spec.js","sourceRoot":"","sources":["../../../../tests/handlers/messages-query.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import dexProtocolDefinition from '../vectors/protocol-definitions/dex.json' with { type: 'json' };
2
2
  import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' with { type: 'json' };
3
3
  import sinon from 'sinon';
4
+ import { EncryptionControlDeliveryRecipientAuthority } from '../../src/types/encryption-types.js';
4
5
  import { GeneralJwsBuilder } from '../../src/jose/jws/general/builder.js';
5
6
  import { lexicographicalCompare } from '../../src/utils/string.js';
6
7
  import { Message } from '../../src/core/message.js';
@@ -12,7 +13,8 @@ import { TestStores } from '../test-stores.js';
12
13
  import { TestStubGenerator } from '../utils/test-stub-generator.js';
13
14
  import { Time } from '../../src/utils/time.js';
14
15
  import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
15
- import { DataStream, Dwn, DwnErrorCode, DwnInterfaceName, DwnMethodName, Encoder, Jws, PermissionGrant, PermissionsProtocol, RecordsDelete, RecordsRead, RecordsWrite } from '../../src/index.js';
16
+ import { createAudienceControlWrite, createDeliveryControlWrite, installEncryptedProtocol, processControlWrite } from '../utils/encryption-control-test-utils.js';
17
+ import { DataStream, Dwn, DwnErrorCode, DwnInterfaceName, DwnMethodName, Encoder, Jws, PermissionGrant, PermissionsProtocol, Protocols, RecordsDelete, RecordsRead, RecordsWrite } from '../../src/index.js';
16
18
  import { DidKey, UniversalResolver } from '@enbox/dids';
17
19
  export function testProtocolsConfigureHandler() {
18
20
  describe('ProtocolsConfigureHandler.handle()', () => {
@@ -594,6 +596,444 @@ export function testProtocolsConfigureHandler() {
594
596
  }]);
595
597
  expect(commentMessages.messages.length).toBeGreaterThan(0);
596
598
  });
599
+ it('should preserve encryption control records on a same-protocol config upgrade', async () => {
600
+ const alice = await TestDataGenerator.generateDidKeyPersona();
601
+ const bob = await TestDataGenerator.generateDidKeyPersona();
602
+ const protocol = 'http://config-validity.example/control-record-upgrade';
603
+ const initialDefinition = {
604
+ protocol,
605
+ published: true,
606
+ types: {
607
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
608
+ post: { schema: 'post', dataFormats: ['application/json'] }
609
+ },
610
+ structure: {
611
+ member: { $role: true },
612
+ post: {
613
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
614
+ }
615
+ }
616
+ };
617
+ const encryptedDefinition = await installEncryptedProtocol(dwn, alice, initialDefinition);
618
+ const roleRuleSet = encryptedDefinition.structure.member;
619
+ // provision the role-audience key and its delivery to bob, the reserved-path records
620
+ // the config-history sweep must never judge against the app definition's structure
621
+ const audience = await createAudienceControlWrite({
622
+ author: alice,
623
+ protocol,
624
+ rolePath: 'member',
625
+ roleRuleSet,
626
+ });
627
+ await processControlWrite(dwn, alice.did, audience);
628
+ const roleRecord = await TestDataGenerator.generateRecordsWrite({
629
+ author: alice,
630
+ data: Encoder.stringToBytes('bob is a member'),
631
+ dataFormat: 'application/json',
632
+ protocol,
633
+ protocolPath: 'member',
634
+ recipient: bob.did,
635
+ schema: 'http://member-schema',
636
+ });
637
+ expect((await dwn.processMessage(alice.did, roleRecord.message, { dataStream: roleRecord.dataStream })).status.code).toBe(202);
638
+ const delivery = await createDeliveryControlWrite({
639
+ author: alice,
640
+ keyId: audience.keyId,
641
+ protocol,
642
+ recipient: bob.did,
643
+ recipientAuthority: EncryptionControlDeliveryRecipientAuthority.RoleHolder,
644
+ rolePath: 'member',
645
+ roleRuleSet,
646
+ });
647
+ await processControlWrite(dwn, alice.did, delivery);
648
+ // a routine policy tightening on the same protocol URI
649
+ const upgradedDefinition = {
650
+ ...initialDefinition,
651
+ structure: {
652
+ member: { $role: true },
653
+ post: {
654
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Read] }]
655
+ }
656
+ }
657
+ };
658
+ await installEncryptedProtocol(dwn, alice, upgradedDefinition);
659
+ const audienceMessages = await messageStore.query(alice.did, [{
660
+ interface: DwnInterfaceName.Records,
661
+ recordId: audience.recordsWrite.message.recordId
662
+ }]);
663
+ expect(audienceMessages.messages.length).toBeGreaterThan(0);
664
+ const deliveryMessages = await messageStore.query(alice.did, [{
665
+ interface: DwnInterfaceName.Records,
666
+ recordId: delivery.recordsWrite.message.recordId
667
+ }]);
668
+ expect(deliveryMessages.messages.length).toBeGreaterThan(0);
669
+ });
670
+ it('should preserve encryption control records while purging records invalidated by a newly learned config', async () => {
671
+ const alice = await TestDataGenerator.generateDidKeyPersona();
672
+ const bob = await TestDataGenerator.generateDidKeyPersona();
673
+ const protocol = 'http://config-validity.example/control-record-reconcile';
674
+ const openDefinition = {
675
+ protocol,
676
+ published: true,
677
+ types: {
678
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
679
+ post: { schema: 'post', dataFormats: ['application/json'] }
680
+ },
681
+ structure: {
682
+ member: { $role: true },
683
+ post: {
684
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
685
+ }
686
+ }
687
+ };
688
+ const stricterDefinition = {
689
+ ...openDefinition,
690
+ structure: {
691
+ member: { $role: true },
692
+ post: {}
693
+ }
694
+ };
695
+ const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
696
+ const encryptedOpenDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(openDefinition, keyDeriver);
697
+ const openConfig = await TestDataGenerator.generateProtocolsConfigure({
698
+ author: alice,
699
+ protocolDefinition: encryptedOpenDefinition,
700
+ messageTimestamp: '2025-01-01T00:00:00.000000Z'
701
+ });
702
+ expect((await dwn.processMessage(alice.did, openConfig.message)).status.code).toBe(202);
703
+ const roleRuleSet = encryptedOpenDefinition.structure.member;
704
+ const audience = await createAudienceControlWrite({
705
+ author: alice,
706
+ protocol,
707
+ rolePath: 'member',
708
+ roleRuleSet,
709
+ });
710
+ await processControlWrite(dwn, alice.did, audience);
711
+ const roleRecord = await TestDataGenerator.generateRecordsWrite({
712
+ author: alice,
713
+ data: Encoder.stringToBytes('bob is a member'),
714
+ dataFormat: 'application/json',
715
+ protocol,
716
+ protocolPath: 'member',
717
+ recipient: bob.did,
718
+ schema: 'http://member-schema',
719
+ });
720
+ expect((await dwn.processMessage(alice.did, roleRecord.message, { dataStream: roleRecord.dataStream })).status.code).toBe(202);
721
+ const delivery = await createDeliveryControlWrite({
722
+ author: alice,
723
+ keyId: audience.keyId,
724
+ protocol,
725
+ recipient: bob.did,
726
+ recipientAuthority: EncryptionControlDeliveryRecipientAuthority.RoleHolder,
727
+ rolePath: 'member',
728
+ roleRuleSet,
729
+ });
730
+ await processControlWrite(dwn, alice.did, delivery);
731
+ // valid under the open config known at admission time; invalidated once the
732
+ // back-dated stricter config is learned
733
+ const invalidBobRecord = await TestDataGenerator.generateRecordsWrite({
734
+ author: bob,
735
+ protocol,
736
+ protocolPath: 'post',
737
+ schema: 'post',
738
+ dataFormat: 'application/json',
739
+ dateCreated: '2025-01-03T00:00:00.000000Z',
740
+ messageTimestamp: '2025-01-03T00:00:00.000000Z'
741
+ });
742
+ expect((await dwn.processMessage(alice.did, invalidBobRecord.message, { dataStream: invalidBobRecord.dataStream })).status.code).toBe(202);
743
+ const encryptedStricterDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(stricterDefinition, keyDeriver);
744
+ const stricterConfig = await TestDataGenerator.generateProtocolsConfigure({
745
+ author: alice,
746
+ protocolDefinition: encryptedStricterDefinition,
747
+ messageTimestamp: '2025-01-02T00:00:00.000000Z'
748
+ });
749
+ expect((await dwn.processMessage(alice.did, stricterConfig.message)).status.code).toBe(202);
750
+ const invalidBobMessages = await messageStore.query(alice.did, [{
751
+ interface: DwnInterfaceName.Records,
752
+ recordId: invalidBobRecord.message.recordId
753
+ }]);
754
+ expect(invalidBobMessages.messages).toHaveLength(0);
755
+ const audienceMessages = await messageStore.query(alice.did, [{
756
+ interface: DwnInterfaceName.Records,
757
+ recordId: audience.recordsWrite.message.recordId
758
+ }]);
759
+ expect(audienceMessages.messages.length).toBeGreaterThan(0);
760
+ const deliveryMessages = await messageStore.query(alice.did, [{
761
+ interface: DwnInterfaceName.Records,
762
+ recordId: delivery.recordsWrite.message.recordId
763
+ }]);
764
+ expect(deliveryMessages.messages.length).toBeGreaterThan(0);
765
+ });
766
+ it('should purge encryption control records whose role path is removed by a config upgrade', async () => {
767
+ const alice = await TestDataGenerator.generateDidKeyPersona();
768
+ const bob = await TestDataGenerator.generateDidKeyPersona();
769
+ const protocol = 'http://config-validity.example/control-record-role-removed';
770
+ const initialDefinition = {
771
+ protocol,
772
+ published: true,
773
+ types: {
774
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
775
+ post: { schema: 'post', dataFormats: ['application/json'] }
776
+ },
777
+ structure: {
778
+ member: { $role: true },
779
+ post: {
780
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
781
+ }
782
+ }
783
+ };
784
+ const encryptedDefinition = await installEncryptedProtocol(dwn, alice, initialDefinition);
785
+ const roleRuleSet = encryptedDefinition.structure.member;
786
+ const audience = await createAudienceControlWrite({
787
+ author: alice,
788
+ protocol,
789
+ rolePath: 'member',
790
+ roleRuleSet,
791
+ });
792
+ await processControlWrite(dwn, alice.did, audience);
793
+ const roleRecord = await TestDataGenerator.generateRecordsWrite({
794
+ author: alice,
795
+ data: Encoder.stringToBytes('bob is a member'),
796
+ dataFormat: 'application/json',
797
+ protocol,
798
+ protocolPath: 'member',
799
+ recipient: bob.did,
800
+ schema: 'http://member-schema',
801
+ });
802
+ expect((await dwn.processMessage(alice.did, roleRecord.message, { dataStream: roleRecord.dataStream })).status.code).toBe(202);
803
+ const delivery = await createDeliveryControlWrite({
804
+ author: alice,
805
+ keyId: audience.keyId,
806
+ protocol,
807
+ recipient: bob.did,
808
+ recipientAuthority: EncryptionControlDeliveryRecipientAuthority.RoleHolder,
809
+ rolePath: 'member',
810
+ roleRuleSet,
811
+ });
812
+ await processControlWrite(dwn, alice.did, delivery);
813
+ // the upgrade removes the `member` role entirely — the control records it anchored
814
+ // are stale key material with nothing left to provision
815
+ const roleRemovedDefinition = {
816
+ ...initialDefinition,
817
+ structure: {
818
+ member: {},
819
+ post: {
820
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Create, ProtocolAction.Read] }]
821
+ }
822
+ }
823
+ };
824
+ await installEncryptedProtocol(dwn, alice, roleRemovedDefinition);
825
+ const audienceMessages = await messageStore.query(alice.did, [{
826
+ interface: DwnInterfaceName.Records,
827
+ recordId: audience.recordsWrite.message.recordId
828
+ }]);
829
+ expect(audienceMessages.messages).toHaveLength(0);
830
+ const deliveryMessages = await messageStore.query(alice.did, [{
831
+ interface: DwnInterfaceName.Records,
832
+ recordId: delivery.recordsWrite.message.recordId
833
+ }]);
834
+ expect(deliveryMessages.messages).toHaveLength(0);
835
+ });
836
+ it('should reject a control record invalid under newly learned governing history regardless of config arrival order', async () => {
837
+ const alice = await TestDataGenerator.generateDidKeyPersona();
838
+ const bob = await TestDataGenerator.generateDidKeyPersona();
839
+ const protocol = 'http://config-validity.example/control-record-history-order';
840
+ const roleDefinition = {
841
+ protocol,
842
+ published: true,
843
+ types: {
844
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
845
+ },
846
+ structure: {
847
+ member: {
848
+ $role: true,
849
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Create] }],
850
+ },
851
+ },
852
+ };
853
+ const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
854
+ const encryptedRoleDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(roleDefinition, keyDeriver);
855
+ const encryptedMissingDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys({
856
+ ...roleDefinition,
857
+ structure: { member: {} },
858
+ }, keyDeriver);
859
+ const config1 = await TestDataGenerator.generateProtocolsConfigure({
860
+ author: alice,
861
+ protocolDefinition: encryptedRoleDefinition,
862
+ messageTimestamp: '2025-01-01T00:00:00.000000Z',
863
+ });
864
+ const config2 = await TestDataGenerator.generateProtocolsConfigure({
865
+ author: alice,
866
+ protocolDefinition: encryptedMissingDefinition,
867
+ messageTimestamp: '2025-01-02T00:00:00.000000Z',
868
+ });
869
+ const config4 = await TestDataGenerator.generateProtocolsConfigure({
870
+ author: alice,
871
+ protocolDefinition: encryptedRoleDefinition,
872
+ messageTimestamp: '2025-01-04T00:00:00.000000Z',
873
+ });
874
+ const audience = await createAudienceControlWrite({
875
+ author: bob,
876
+ dateCreated: '2025-01-03T00:00:00.000000Z',
877
+ messageTimestamp: '2025-01-03T00:00:00.000000Z',
878
+ protocol,
879
+ rolePath: 'member',
880
+ roleRuleSet: encryptedRoleDefinition.structure.member,
881
+ });
882
+ for (const config of [config1, config4]) {
883
+ expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
884
+ }
885
+ await processControlWrite(dwn, alice.did, audience);
886
+ expect((await dwn.processMessage(alice.did, config2.message)).status.code).toBe(202);
887
+ const repaired = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
888
+ expect(repaired.messages).toHaveLength(0);
889
+ await messageStore.clear();
890
+ await dataStore.clear();
891
+ await resumableTaskStore.clear();
892
+ for (const config of [config1, config2, config4]) {
893
+ expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
894
+ }
895
+ const rejected = await dwn.processMessage(alice.did, audience.recordsWrite.message, {
896
+ dataStream: DataStream.fromBytes(audience.dataBytes),
897
+ });
898
+ expect(rejected.status.code).toBe(400);
899
+ expect(rejected.status.detail).toContain(DwnErrorCode.EncryptionControlValidateAudienceRolePathInvalid);
900
+ });
901
+ it('should purge a control record disallowed by a newly learned governing create policy', async () => {
902
+ const alice = await TestDataGenerator.generateDidKeyPersona();
903
+ const bob = await TestDataGenerator.generateDidKeyPersona();
904
+ const protocol = 'http://config-validity.example/control-record-history-action';
905
+ const openDefinition = {
906
+ protocol,
907
+ published: true,
908
+ types: {
909
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
910
+ },
911
+ structure: {
912
+ member: {
913
+ $role: true,
914
+ $actions: [{ who: 'anyone', can: [ProtocolAction.Create] }],
915
+ },
916
+ },
917
+ };
918
+ const closedDefinition = {
919
+ ...openDefinition,
920
+ structure: { member: { $role: true } },
921
+ };
922
+ const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
923
+ const encryptedOpenDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(openDefinition, keyDeriver);
924
+ const encryptedClosedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(closedDefinition, keyDeriver);
925
+ for (const [definition, messageTimestamp] of [
926
+ [encryptedOpenDefinition, '2025-02-01T00:00:00.000000Z'],
927
+ [encryptedOpenDefinition, '2025-02-04T00:00:00.000000Z'],
928
+ ]) {
929
+ const config = await TestDataGenerator.generateProtocolsConfigure({
930
+ author: alice,
931
+ protocolDefinition: definition,
932
+ messageTimestamp,
933
+ });
934
+ expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
935
+ }
936
+ const audience = await createAudienceControlWrite({
937
+ author: bob,
938
+ dateCreated: '2025-02-03T00:00:00.000000Z',
939
+ messageTimestamp: '2025-02-03T00:00:00.000000Z',
940
+ protocol,
941
+ rolePath: 'member',
942
+ roleRuleSet: encryptedOpenDefinition.structure.member,
943
+ });
944
+ await processControlWrite(dwn, alice.did, audience);
945
+ const closedConfig = await TestDataGenerator.generateProtocolsConfigure({
946
+ author: alice,
947
+ protocolDefinition: encryptedClosedDefinition,
948
+ messageTimestamp: '2025-02-02T00:00:00.000000Z',
949
+ });
950
+ expect((await dwn.processMessage(alice.did, closedConfig.message)).status.code).toBe(202);
951
+ const repaired = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
952
+ expect(repaired.messages).toHaveLength(0);
953
+ });
954
+ it('should purge an audience sealed to a key superseded by newly learned governing history', async () => {
955
+ const alice = await TestDataGenerator.generateDidKeyPersona();
956
+ const bob = await TestDataGenerator.generateDidKeyPersona();
957
+ const protocol = 'http://config-validity.example/control-record-history-key';
958
+ const definition = {
959
+ protocol,
960
+ published: true,
961
+ types: {
962
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
963
+ },
964
+ structure: {
965
+ member: { $role: true },
966
+ },
967
+ };
968
+ const aliceKeyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
969
+ const bobKeyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(bob.keyId, bob.encryptionKeyPair.privateJwk);
970
+ const aliceKeyDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, aliceKeyDeriver);
971
+ const bobKeyDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, bobKeyDeriver);
972
+ for (const messageTimestamp of ['2025-03-01T00:00:00.000000Z', '2025-03-04T00:00:00.000000Z']) {
973
+ const config = await TestDataGenerator.generateProtocolsConfigure({
974
+ author: alice,
975
+ protocolDefinition: aliceKeyDefinition,
976
+ messageTimestamp,
977
+ });
978
+ expect((await dwn.processMessage(alice.did, config.message)).status.code).toBe(202);
979
+ }
980
+ const audience = await createAudienceControlWrite({
981
+ author: alice,
982
+ dateCreated: '2025-03-03T00:00:00.000000Z',
983
+ messageTimestamp: '2025-03-03T00:00:00.000000Z',
984
+ protocol,
985
+ rolePath: 'member',
986
+ roleRuleSet: aliceKeyDefinition.structure.member,
987
+ });
988
+ await processControlWrite(dwn, alice.did, audience);
989
+ const governingConfig = await TestDataGenerator.generateProtocolsConfigure({
990
+ author: alice,
991
+ protocolDefinition: bobKeyDefinition,
992
+ messageTimestamp: '2025-03-02T00:00:00.000000Z',
993
+ });
994
+ expect((await dwn.processMessage(alice.did, governingConfig.message)).status.code).toBe(202);
995
+ const repaired = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
996
+ expect(repaired.messages).toHaveLength(0);
997
+ });
998
+ it('should retain historically valid controls when the newest role temporarily lacks key agreement', async () => {
999
+ const alice = await TestDataGenerator.generateDidKeyPersona();
1000
+ const protocol = 'http://config-validity.example/control-record-current-key-missing';
1001
+ const definition = {
1002
+ protocol,
1003
+ published: true,
1004
+ types: {
1005
+ member: { schema: 'http://member-schema', dataFormats: ['application/json'] },
1006
+ },
1007
+ structure: {
1008
+ member: { $role: true },
1009
+ },
1010
+ };
1011
+ const keyDeriver = TestDataGenerator.createProtocolPathKeyDeriver(alice.keyId, alice.encryptionKeyPair.privateJwk);
1012
+ const encryptedDefinition = await Protocols.deriveAndInjectPublicEncryptionKeys(definition, keyDeriver);
1013
+ const encryptedConfig = await TestDataGenerator.generateProtocolsConfigure({
1014
+ author: alice,
1015
+ protocolDefinition: encryptedDefinition,
1016
+ messageTimestamp: '2025-04-01T00:00:00.000000Z',
1017
+ });
1018
+ expect((await dwn.processMessage(alice.did, encryptedConfig.message)).status.code).toBe(202);
1019
+ const audience = await createAudienceControlWrite({
1020
+ author: alice,
1021
+ dateCreated: '2025-04-02T00:00:00.000000Z',
1022
+ messageTimestamp: '2025-04-02T00:00:00.000000Z',
1023
+ protocol,
1024
+ rolePath: 'member',
1025
+ roleRuleSet: encryptedDefinition.structure.member,
1026
+ });
1027
+ await processControlWrite(dwn, alice.did, audience);
1028
+ const temporarilyUnkeyedConfig = await TestDataGenerator.generateProtocolsConfigure({
1029
+ author: alice,
1030
+ protocolDefinition: definition,
1031
+ messageTimestamp: '2025-04-03T00:00:00.000000Z',
1032
+ });
1033
+ expect((await dwn.processMessage(alice.did, temporarilyUnkeyedConfig.message)).status.code).toBe(202);
1034
+ const retained = await messageStore.query(alice.did, [{ recordId: audience.recordsWrite.message.recordId }]);
1035
+ expect(retained.messages.length).toBeGreaterThan(0);
1036
+ });
597
1037
  it('should return 400 if protocol is not normalized', async () => {
598
1038
  const alice = await TestDataGenerator.generateDidKeyPersona();
599
1039
  // query for non-normalized protocol