@enbox/dwn-sdk-js 0.3.7 → 0.3.9

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 (236) hide show
  1. package/dist/browser.mjs +8 -8
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +2591 -1435
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/constants.js +20 -0
  6. package/dist/esm/src/core/constants.js.map +1 -1
  7. package/dist/esm/src/core/dwn-error.js +24 -1
  8. package/dist/esm/src/core/dwn-error.js.map +1 -1
  9. package/dist/esm/src/core/grant-authorization.js +4 -4
  10. package/dist/esm/src/core/grant-authorization.js.map +1 -1
  11. package/dist/esm/src/core/message.js +89 -4
  12. package/dist/esm/src/core/message.js.map +1 -1
  13. package/dist/esm/src/core/messages-grant-authorization.js +147 -55
  14. package/dist/esm/src/core/messages-grant-authorization.js.map +1 -1
  15. package/dist/esm/src/core/protocol-authorization.js +76 -0
  16. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  17. package/dist/esm/src/core/records-grant-authorization.js +40 -15
  18. package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
  19. package/dist/esm/src/handlers/messages-read.js +5 -5
  20. package/dist/esm/src/handlers/messages-read.js.map +1 -1
  21. package/dist/esm/src/handlers/messages-subscribe.js +109 -7
  22. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  23. package/dist/esm/src/handlers/messages-sync.js +341 -96
  24. package/dist/esm/src/handlers/messages-sync.js.map +1 -1
  25. package/dist/esm/src/handlers/protocols-configure.js +81 -2
  26. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  27. package/dist/esm/src/handlers/records-count.js +30 -0
  28. package/dist/esm/src/handlers/records-count.js.map +1 -1
  29. package/dist/esm/src/handlers/records-delete.js +3 -2
  30. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  31. package/dist/esm/src/handlers/records-query.js +30 -0
  32. package/dist/esm/src/handlers/records-query.js.map +1 -1
  33. package/dist/esm/src/handlers/records-read.js +3 -2
  34. package/dist/esm/src/handlers/records-read.js.map +1 -1
  35. package/dist/esm/src/handlers/records-subscribe.js +31 -0
  36. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  37. package/dist/esm/src/handlers/records-write.js +21 -14
  38. package/dist/esm/src/handlers/records-write.js.map +1 -1
  39. package/dist/esm/src/index.js +2 -0
  40. package/dist/esm/src/index.js.map +1 -1
  41. package/dist/esm/src/interfaces/messages-read.js +6 -3
  42. package/dist/esm/src/interfaces/messages-read.js.map +1 -1
  43. package/dist/esm/src/interfaces/messages-subscribe.js +6 -3
  44. package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
  45. package/dist/esm/src/interfaces/messages-sync.js +17 -3
  46. package/dist/esm/src/interfaces/messages-sync.js.map +1 -1
  47. package/dist/esm/src/interfaces/protocols-configure.js +5 -2
  48. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  49. package/dist/esm/src/interfaces/protocols-query.js +8 -4
  50. package/dist/esm/src/interfaces/protocols-query.js.map +1 -1
  51. package/dist/esm/src/interfaces/records-count.js +5 -0
  52. package/dist/esm/src/interfaces/records-count.js.map +1 -1
  53. package/dist/esm/src/interfaces/records-delete.js +6 -2
  54. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  55. package/dist/esm/src/interfaces/records-query.js +5 -0
  56. package/dist/esm/src/interfaces/records-query.js.map +1 -1
  57. package/dist/esm/src/interfaces/records-read.js +6 -3
  58. package/dist/esm/src/interfaces/records-read.js.map +1 -1
  59. package/dist/esm/src/interfaces/records-subscribe.js +5 -0
  60. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  61. package/dist/esm/src/interfaces/records-write.js +6 -3
  62. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  63. package/dist/esm/src/protocols/permissions.js +28 -7
  64. package/dist/esm/src/protocols/permissions.js.map +1 -1
  65. package/dist/esm/src/sync/records-projection.js +228 -0
  66. package/dist/esm/src/sync/records-projection.js.map +1 -0
  67. package/dist/esm/src/types/message-types.js.map +1 -1
  68. package/dist/esm/src/types/permission-types.js.map +1 -1
  69. package/dist/esm/src/utils/permission-scope.js +37 -0
  70. package/dist/esm/src/utils/permission-scope.js.map +1 -0
  71. package/dist/esm/tests/core/grant-authorization.spec.js +26 -3
  72. package/dist/esm/tests/core/grant-authorization.spec.js.map +1 -1
  73. package/dist/esm/tests/core/records-grant-authorization.spec.js +117 -0
  74. package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -0
  75. package/dist/esm/tests/features/permissions.spec.js +126 -0
  76. package/dist/esm/tests/features/permissions.spec.js.map +1 -1
  77. package/dist/esm/tests/features/records-record-limit.spec.js +14 -0
  78. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
  79. package/dist/esm/tests/handlers/messages-read.spec.js +345 -12
  80. package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
  81. package/dist/esm/tests/handlers/messages-subscribe.spec.js +326 -9
  82. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  83. package/dist/esm/tests/handlers/messages-sync.spec.js +1053 -7
  84. package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
  85. package/dist/esm/tests/handlers/protocols-configure.spec.js +361 -0
  86. package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
  87. package/dist/esm/tests/handlers/records-count.spec.js +75 -2
  88. package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
  89. package/dist/esm/tests/handlers/records-query.spec.js +73 -0
  90. package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
  91. package/dist/esm/tests/handlers/records-subscribe.spec.js +75 -1
  92. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  93. package/dist/esm/tests/handlers/records-write.spec.js +41 -0
  94. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  95. package/dist/esm/tests/interfaces/messages-get.spec.js +107 -5
  96. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  97. package/dist/esm/tests/interfaces/protocols-configure.spec.js +13 -0
  98. package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -1
  99. package/dist/esm/tests/interfaces/records-delete.spec.js +12 -0
  100. package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -1
  101. package/dist/esm/tests/interfaces/records-query.spec.js +10 -0
  102. package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -1
  103. package/dist/esm/tests/interfaces/records-subscribe.spec.js +10 -0
  104. package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -1
  105. package/dist/esm/tests/interfaces/records-write.spec.js +33 -0
  106. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  107. package/dist/esm/tests/sync/records-projection.spec.js +245 -0
  108. package/dist/esm/tests/sync/records-projection.spec.js.map +1 -0
  109. package/dist/esm/tests/test-suite.js +2 -0
  110. package/dist/esm/tests/test-suite.js.map +1 -1
  111. package/dist/esm/tests/utils/permission-scope.spec.js +66 -0
  112. package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -0
  113. package/dist/esm/tests/utils/test-data-generator.js +5 -2
  114. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  115. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  116. package/dist/types/src/core/constants.d.ts +13 -0
  117. package/dist/types/src/core/constants.d.ts.map +1 -1
  118. package/dist/types/src/core/dwn-error.d.ts +24 -1
  119. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  120. package/dist/types/src/core/grant-authorization.d.ts +1 -2
  121. package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
  122. package/dist/types/src/core/message.d.ts +41 -1
  123. package/dist/types/src/core/message.d.ts.map +1 -1
  124. package/dist/types/src/core/messages-grant-authorization.d.ts +36 -4
  125. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  126. package/dist/types/src/core/protocol-authorization.d.ts +12 -0
  127. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  128. package/dist/types/src/core/records-grant-authorization.d.ts +6 -0
  129. package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
  130. package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
  131. package/dist/types/src/handlers/messages-subscribe.d.ts +2 -1
  132. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  133. package/dist/types/src/handlers/messages-sync.d.ts +31 -0
  134. package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
  135. package/dist/types/src/handlers/protocols-configure.d.ts +3 -0
  136. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  137. package/dist/types/src/handlers/records-count.d.ts +4 -0
  138. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  139. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  140. package/dist/types/src/handlers/records-query.d.ts +4 -0
  141. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  142. package/dist/types/src/handlers/records-read.d.ts.map +1 -1
  143. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  144. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  145. package/dist/types/src/index.d.ts +6 -2
  146. package/dist/types/src/index.d.ts.map +1 -1
  147. package/dist/types/src/interfaces/messages-read.d.ts +1 -1
  148. package/dist/types/src/interfaces/messages-read.d.ts.map +1 -1
  149. package/dist/types/src/interfaces/messages-subscribe.d.ts +1 -1
  150. package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
  151. package/dist/types/src/interfaces/messages-sync.d.ts +4 -1
  152. package/dist/types/src/interfaces/messages-sync.d.ts.map +1 -1
  153. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  154. package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -1
  155. package/dist/types/src/interfaces/records-count.d.ts +1 -0
  156. package/dist/types/src/interfaces/records-count.d.ts.map +1 -1
  157. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  158. package/dist/types/src/interfaces/records-query.d.ts +1 -0
  159. package/dist/types/src/interfaces/records-query.d.ts.map +1 -1
  160. package/dist/types/src/interfaces/records-read.d.ts.map +1 -1
  161. package/dist/types/src/interfaces/records-subscribe.d.ts +1 -0
  162. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  163. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  164. package/dist/types/src/protocols/permissions.d.ts +2 -0
  165. package/dist/types/src/protocols/permissions.d.ts.map +1 -1
  166. package/dist/types/src/sync/records-projection.d.ts +98 -0
  167. package/dist/types/src/sync/records-projection.d.ts.map +1 -0
  168. package/dist/types/src/types/message-types.d.ts +1 -0
  169. package/dist/types/src/types/message-types.d.ts.map +1 -1
  170. package/dist/types/src/types/messages-types.d.ts +21 -3
  171. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  172. package/dist/types/src/types/permission-types.d.ts +4 -0
  173. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  174. package/dist/types/src/types/records-types.d.ts +4 -0
  175. package/dist/types/src/types/records-types.d.ts.map +1 -1
  176. package/dist/types/src/types/subscriptions.d.ts +18 -3
  177. package/dist/types/src/types/subscriptions.d.ts.map +1 -1
  178. package/dist/types/src/utils/permission-scope.d.ts +29 -0
  179. package/dist/types/src/utils/permission-scope.d.ts.map +1 -0
  180. package/dist/types/tests/core/records-grant-authorization.spec.d.ts +2 -0
  181. package/dist/types/tests/core/records-grant-authorization.spec.d.ts.map +1 -0
  182. package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
  183. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
  184. package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
  185. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  186. package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
  187. package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -1
  188. package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
  189. package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
  190. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  191. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  192. package/dist/types/tests/sync/records-projection.spec.d.ts +2 -0
  193. package/dist/types/tests/sync/records-projection.spec.d.ts.map +1 -0
  194. package/dist/types/tests/test-suite.d.ts.map +1 -1
  195. package/dist/types/tests/utils/permission-scope.spec.d.ts +2 -0
  196. package/dist/types/tests/utils/permission-scope.spec.d.ts.map +1 -0
  197. package/dist/types/tests/utils/test-data-generator.d.ts +5 -2
  198. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  199. package/package.json +1 -1
  200. package/src/core/constants.ts +24 -0
  201. package/src/core/dwn-error.ts +24 -1
  202. package/src/core/grant-authorization.ts +7 -5
  203. package/src/core/message.ts +153 -6
  204. package/src/core/messages-grant-authorization.ts +282 -70
  205. package/src/core/protocol-authorization.ts +130 -0
  206. package/src/core/records-grant-authorization.ts +64 -21
  207. package/src/handlers/messages-read.ts +7 -5
  208. package/src/handlers/messages-subscribe.ts +149 -9
  209. package/src/handlers/messages-sync.ts +593 -102
  210. package/src/handlers/protocols-configure.ts +103 -2
  211. package/src/handlers/records-count.ts +33 -0
  212. package/src/handlers/records-delete.ts +3 -2
  213. package/src/handlers/records-query.ts +33 -0
  214. package/src/handlers/records-read.ts +3 -2
  215. package/src/handlers/records-subscribe.ts +34 -0
  216. package/src/handlers/records-write.ts +21 -15
  217. package/src/index.ts +7 -3
  218. package/src/interfaces/messages-read.ts +8 -5
  219. package/src/interfaces/messages-subscribe.ts +12 -9
  220. package/src/interfaces/messages-sync.ts +33 -12
  221. package/src/interfaces/protocols-configure.ts +8 -4
  222. package/src/interfaces/protocols-query.ts +13 -9
  223. package/src/interfaces/records-count.ts +7 -0
  224. package/src/interfaces/records-delete.ts +9 -5
  225. package/src/interfaces/records-query.ts +7 -0
  226. package/src/interfaces/records-read.ts +6 -3
  227. package/src/interfaces/records-subscribe.ts +7 -0
  228. package/src/interfaces/records-write.ts +25 -17
  229. package/src/protocols/permissions.ts +47 -9
  230. package/src/sync/records-projection.ts +328 -0
  231. package/src/types/message-types.ts +1 -0
  232. package/src/types/messages-types.ts +23 -3
  233. package/src/types/permission-types.ts +5 -1
  234. package/src/types/records-types.ts +5 -1
  235. package/src/types/subscriptions.ts +19 -3
  236. package/src/utils/permission-scope.ts +55 -0
@@ -8,4 +8,24 @@
8
8
  * dependencies between `grant-authorization.ts` and `protocols/permissions.ts`.
9
9
  */
10
10
  export const PERMISSIONS_REVOCATION_PATH = 'grant/revocation';
11
+ /**
12
+ * The DWN Permissions protocol URI.
13
+ */
14
+ export const PERMISSIONS_PROTOCOL_URI = 'https://identity.foundation/dwn/permissions';
15
+ /**
16
+ * Well-known key-delivery protocol URI used for encrypted context-key records.
17
+ */
18
+ export const KEY_DELIVERY_PROTOCOL_URI = 'https://identity.foundation/protocols/key-delivery';
19
+ const RECORDS_PRIMARY_PROJECTION_EXCLUDED_PROTOCOLS = new Set([
20
+ KEY_DELIVERY_PROTOCOL_URI,
21
+ PERMISSIONS_PROTOCOL_URI,
22
+ ]);
23
+ /**
24
+ * Returns true for infrastructure protocols whose records are dependencies or
25
+ * authorization metadata, not primary application records for projection roots.
26
+ */
27
+ export function isRecordsPrimaryProjectionExcludedProtocol(protocol) {
28
+ return protocol !== undefined &&
29
+ RECORDS_PRIMARY_PROJECTION_EXCLUDED_PROTOCOLS.has(protocol);
30
+ }
11
31
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,kBAAkB,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,6CAA6C,CAAC;AAEtF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,oDAAoD,CAAC;AAE9F,MAAM,6CAA6C,GAAG,IAAI,GAAG,CAAS;IACpE,yBAAyB;IACzB,wBAAwB;CACzB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,0CAA0C,CAAC,QAA4B;IACrF,OAAO,QAAQ,KAAK,SAAS;QAC3B,6CAA6C,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChE,CAAC"}
@@ -23,8 +23,14 @@ export var DwnErrorCode;
23
23
  DwnErrorCode["Ed25519InvalidJwk"] = "Ed25519InvalidJwk";
24
24
  DwnErrorCode["EventLogNotOpenError"] = "EventLogNotOpenError";
25
25
  DwnErrorCode["EventLogProgressGap"] = "EventLogProgressGap";
26
- DwnErrorCode["MessagesGrantAuthorizationMismatchedProtocol"] = "EventsGrantAuthorizationMismatchedProtocol";
26
+ DwnErrorCode["MessagesGrantAuthorizationMismatchedProtocol"] = "MessagesGrantAuthorizationMismatchedProtocol";
27
+ DwnErrorCode["MessagesGrantAuthorizationProjectionInfrastructureProtocol"] = "MessagesGrantAuthorizationProjectionInfrastructureProtocol";
28
+ DwnErrorCode["MessagesGrantAuthorizationProjectionScopeMismatch"] = "MessagesGrantAuthorizationProjectionScopeMismatch";
29
+ DwnErrorCode["MessagesGrantAuthorizationProtocolSyncInfrastructureProtocol"] = "MessagesGrantAuthorizationProtocolSyncInfrastructureProtocol";
30
+ DwnErrorCode["MessagesGrantAuthorizationSubscribeProtocolMismatch"] = "MessagesGrantAuthorizationSubscribeProtocolMismatch";
31
+ DwnErrorCode["MessagesGrantAuthorizationUnfilteredSubscribeProtocolScope"] = "MessagesGrantAuthorizationUnfilteredSubscribeProtocolScope";
27
32
  DwnErrorCode["MessagesSubscribeAuthorizationFailed"] = "MessagesSubscribeAuthorizationFailed";
33
+ DwnErrorCode["MessagesSubscribeDeliveryAuthorizationFailed"] = "MessagesSubscribeDeliveryAuthorizationFailed";
28
34
  DwnErrorCode["MessagesSubscribeEventLogUnimplemented"] = "MessagesSubscribeEventLogUnimplemented";
29
35
  DwnErrorCode["GeneralJwsVerifierGetPublicKeyNotFound"] = "GeneralJwsVerifierGetPublicKeyNotFound";
30
36
  DwnErrorCode["GeneralJwsVerifierInvalidSignature"] = "GeneralJwsVerifierInvalidSignature";
@@ -45,19 +51,31 @@ export var DwnErrorCode;
45
51
  DwnErrorCode["IndexInvalidSortPropertyInMemory"] = "IndexInvalidSortPropertyInMemory";
46
52
  DwnErrorCode["IndexMissingIndexableProperty"] = "IndexMissingIndexableProperty";
47
53
  DwnErrorCode["JwsDecodePlainObjectPayloadInvalid"] = "JwsDecodePlainObjectPayloadInvalid";
54
+ DwnErrorCode["MessagePermissionGrantCreateInvocationAmbiguous"] = "MessagePermissionGrantCreateInvocationAmbiguous";
55
+ DwnErrorCode["MessagePermissionGrantDescriptorPayloadMismatch"] = "MessagePermissionGrantDescriptorPayloadMismatch";
56
+ DwnErrorCode["MessagePermissionGrantIdsDescriptorPayloadMismatch"] = "MessagePermissionGrantIdsDescriptorPayloadMismatch";
57
+ DwnErrorCode["MessagePermissionGrantIdsEmpty"] = "MessagePermissionGrantIdsEmpty";
58
+ DwnErrorCode["MessagePermissionGrantIdsNotCanonical"] = "MessagePermissionGrantIdsNotCanonical";
59
+ DwnErrorCode["MessagePermissionGrantValidateInvocationAmbiguous"] = "MessagePermissionGrantValidateInvocationAmbiguous";
48
60
  DwnErrorCode["MessagesReadInvalidCid"] = "MessagesReadInvalidCid";
49
61
  DwnErrorCode["MessagesReadAuthorizationFailed"] = "MessagesReadAuthorizationFailed";
50
62
  DwnErrorCode["MessageGetInvalidCid"] = "MessageGetInvalidCid";
51
63
  DwnErrorCode["MessagesReadVerifyScopeFailed"] = "MessagesReadVerifyScopeFailed";
52
64
  DwnErrorCode["MessagesSyncAuthorizationFailed"] = "MessagesSyncAuthorizationFailed";
53
65
  DwnErrorCode["MessagesSyncInvalidPrefix"] = "MessagesSyncInvalidPrefix";
66
+ DwnErrorCode["MessagesSyncUnsupportedProjectionRootVersion"] = "MessagesSyncUnsupportedProjectionRootVersion";
54
67
  DwnErrorCode["ParseCidCodecNotSupported"] = "ParseCidCodecNotSupported";
55
68
  DwnErrorCode["ParseCidMultihashNotSupported"] = "ParseCidMultihashNotSupported";
69
+ DwnErrorCode["PermissionsProtocolCreateGrantScopeContextIdProtocolPathConflict"] = "PermissionsProtocolCreateGrantScopeContextIdProtocolPathConflict";
56
70
  DwnErrorCode["PermissionsProtocolCreateGrantRecordsScopeMissingProtocol"] = "PermissionsProtocolCreateGrantRecordsScopeMissingProtocol";
71
+ DwnErrorCode["PermissionsProtocolCreateGrantSubtreeScopeMissingProtocol"] = "PermissionsProtocolCreateGrantSubtreeScopeMissingProtocol";
72
+ DwnErrorCode["PermissionsProtocolCreateRequestScopeContextIdProtocolPathConflict"] = "PermissionsProtocolCreateRequestScopeContextIdProtocolPathConflict";
57
73
  DwnErrorCode["PermissionsProtocolCreateRequestRecordsScopeMissingProtocol"] = "PermissionsProtocolCreateRequestRecordsScopeMissingProtocol";
74
+ DwnErrorCode["PermissionsProtocolCreateRequestSubtreeScopeMissingProtocol"] = "PermissionsProtocolCreateRequestSubtreeScopeMissingProtocol";
58
75
  DwnErrorCode["PermissionsProtocolGetScopeInvalidProtocol"] = "PermissionsProtocolGetScopeInvalidProtocol";
59
76
  DwnErrorCode["PermissionsProtocolValidateSchemaUnexpectedRecord"] = "PermissionsProtocolValidateSchemaUnexpectedRecord";
60
77
  DwnErrorCode["PermissionsProtocolValidateScopeContextIdProhibitedProperties"] = "PermissionsProtocolValidateScopeContextIdProhibitedProperties";
78
+ DwnErrorCode["PermissionsProtocolValidateScopeSubtreeScopeMissingProtocol"] = "PermissionsProtocolValidateScopeSubtreeScopeMissingProtocol";
61
79
  DwnErrorCode["PermissionsProtocolValidateScopeProtocolMismatch"] = "PermissionsProtocolValidateScopeProtocolMismatch";
62
80
  DwnErrorCode["PermissionsProtocolValidateScopeMissingProtocolTag"] = "PermissionsProtocolValidateScopeMissingProtocolTag";
63
81
  DwnErrorCode["PermissionsProtocolValidateRevocationProtocolTagMismatch"] = "PermissionsProtocolValidateRevocationProtocolTagMismatch";
@@ -78,6 +96,7 @@ export var DwnErrorCode;
78
96
  DwnErrorCode["ProtocolAuthorizationIncorrectDataFormat"] = "ProtocolAuthorizationIncorrectDataFormat";
79
97
  DwnErrorCode["ProtocolAuthorizationIncorrectContextId"] = "ProtocolAuthorizationIncorrectContextId";
80
98
  DwnErrorCode["ProtocolAuthorizationIncorrectProtocolPath"] = "ProtocolAuthorizationIncorrectProtocolPath";
99
+ DwnErrorCode["ProtocolAuthorizationInitialWriteRevalidationNotInitial"] = "ProtocolAuthorizationInitialWriteRevalidationNotInitial";
81
100
  DwnErrorCode["ProtocolAuthorizationDuplicateRoleRecipient"] = "ProtocolAuthorizationDuplicateRoleRecipient";
82
101
  DwnErrorCode["ProtocolAuthorizationEncryptionRequired"] = "ProtocolAuthorizationEncryptionRequired";
83
102
  DwnErrorCode["ProtocolAuthorizationImmutableRecord"] = "ProtocolAuthorizationImmutableRecord";
@@ -91,6 +110,9 @@ export var DwnErrorCode;
91
110
  DwnErrorCode["ProtocolAuthorizationSquashNotEnabled"] = "ProtocolAuthorizationSquashNotEnabled";
92
111
  DwnErrorCode["ProtocolAuthorizationSquashNotInitialWrite"] = "ProtocolAuthorizationSquashNotInitialWrite";
93
112
  DwnErrorCode["ProtocolAuthorizationSquashBackstop"] = "ProtocolAuthorizationSquashBackstop";
113
+ DwnErrorCode["ProtocolAuthorizationStoredInitialWriteActionNotAllowed"] = "ProtocolAuthorizationStoredInitialWriteActionNotAllowed";
114
+ DwnErrorCode["ProtocolAuthorizationStoredInitialWriteActionRulesNotFound"] = "ProtocolAuthorizationStoredInitialWriteActionRulesNotFound";
115
+ DwnErrorCode["ProtocolAuthorizationStoredInitialWriteRoleMissingRecipient"] = "ProtocolAuthorizationStoredInitialWriteRoleMissingRecipient";
94
116
  DwnErrorCode["ProtocolAuthorizationMissingContextId"] = "ProtocolAuthorizationMissingContextId";
95
117
  DwnErrorCode["ProtocolAuthorizationMissingRuleSet"] = "ProtocolAuthorizationMissingRuleSet";
96
118
  DwnErrorCode["ProtocolAuthorizationParentlessIncorrectProtocolPath"] = "ProtocolAuthorizationParentlessIncorrectProtocolPath";
@@ -142,6 +164,7 @@ export var DwnErrorCode;
142
164
  DwnErrorCode["RecordsGrantAuthorizationDeleteProtocolScopeMismatch"] = "RecordsGrantAuthorizationDeleteProtocolScopeMismatch";
143
165
  DwnErrorCode["RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch"] = "RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch";
144
166
  DwnErrorCode["RecordsGrantAuthorizationScopeContextIdMismatch"] = "RecordsGrantAuthorizationScopeContextIdMismatch";
167
+ DwnErrorCode["RecordsGrantAuthorizationScopeMismatch"] = "RecordsGrantAuthorizationScopeMismatch";
145
168
  DwnErrorCode["RecordsGrantAuthorizationScopeProtocolMismatch"] = "RecordsGrantAuthorizationScopeProtocolMismatch";
146
169
  DwnErrorCode["RecordsGrantAuthorizationScopeProtocolPathMismatch"] = "RecordsGrantAuthorizationScopeProtocolPathMismatch";
147
170
  DwnErrorCode["RecordsDerivePrivateKeyUnSupportedCurve"] = "RecordsDerivePrivateKeyUnSupportedCurve";
@@ -1 +1 @@
1
- {"version":3,"file":"dwn-error.js","sourceRoot":"","sources":["../../../../src/core/dwn-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dwn-error.js","sourceRoot":"","sources":["../../../../src/core/dwn-error.ts"],"names":[],"mappings":"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"}
@@ -71,8 +71,7 @@ export class GrantAuthorization {
71
71
  * Verify that the `interface` and `method` grant scopes match the incoming message.
72
72
  *
73
73
  * For the Messages interface, a `Read` scope is treated as a unified scope that also authorizes
74
- * `Subscribe` and `Sync` operations. This mirrors how protocol `$actions` treats `read` as a
75
- * unified action covering read, query, subscribe, and count.
74
+ * `Subscribe` and `Sync` operations.
76
75
  *
77
76
  * @throws {DwnError} if the `interface` and `method` of the incoming message do not match the scope of the permission grant.
78
77
  */
@@ -81,7 +80,7 @@ export class GrantAuthorization {
81
80
  throw new DwnError(DwnErrorCode.GrantAuthorizationInterfaceMismatch, `DWN Interface of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`);
82
81
  }
83
82
  // Messages.Read is the only valid Messages scope and covers Read, Subscribe, and Sync operations.
84
- // Reject any Messages grant with method !== Read (malformed or legacy stored data).
83
+ // Reject any Messages grant with method !== Read.
85
84
  if (dwnInterface === DwnInterfaceName.Messages) {
86
85
  if (permissionGrant.scope.method !== DwnMethodName.Read) {
87
86
  throw new DwnError(DwnErrorCode.GrantAuthorizationMethodMismatch, `messages permission grant must have method 'Read', got '${permissionGrant.scope.method}' for grant ${permissionGrant.id}`);
@@ -90,8 +89,9 @@ export class GrantAuthorization {
90
89
  if (!allowedMethods.includes(dwnMethod)) {
91
90
  throw new DwnError(DwnErrorCode.GrantAuthorizationMethodMismatch, `DWN Method of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`);
92
91
  }
92
+ return;
93
93
  }
94
- else if (dwnMethod !== permissionGrant.scope.method) {
94
+ if (dwnMethod !== permissionGrant.scope.method) {
95
95
  throw new DwnError(DwnErrorCode.GrantAuthorizationMethodMismatch, `DWN Method of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`);
96
96
  }
97
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grant-authorization.js","sourceRoot":"","sources":["../../../../src/core/grant-authorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grant-authorization.js","sourceRoot":"","sources":["../../../../src/core/grant-authorization.ts"],"names":[],"mappings":"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"}
@@ -80,12 +80,12 @@ export class Message {
80
80
  * @returns {AuthorizationModel} used as an `authorization` property.
81
81
  */
82
82
  static async createAuthorization(input) {
83
- const { descriptor, signer, delegatedGrant, permissionGrantId, protocolRole } = input;
83
+ const { descriptor, signer, delegatedGrant, permissionGrantId, permissionGrantIds, protocolRole } = input;
84
84
  let delegatedGrantId;
85
85
  if (delegatedGrant !== undefined) {
86
86
  delegatedGrantId = await Message.getCid(delegatedGrant);
87
87
  }
88
- const signature = await Message.createSignature(descriptor, signer, { delegatedGrantId, permissionGrantId, protocolRole });
88
+ const signature = await Message.createSignature(descriptor, signer, { delegatedGrantId, permissionGrantId, permissionGrantIds, protocolRole });
89
89
  const authorization = {
90
90
  signature
91
91
  };
@@ -100,13 +100,59 @@ export class Message {
100
100
  */
101
101
  static async createSignature(descriptor, signer, additionalPayloadProperties) {
102
102
  const descriptorCid = await Cid.computeCid(descriptor);
103
- const signaturePayload = { descriptorCid, ...additionalPayloadProperties };
103
+ const { delegatedGrantId, permissionGrantId, permissionGrantIds, protocolRole } = additionalPayloadProperties ?? {};
104
+ const permissionGrantInvocation = Message.normalizePermissionGrantInvocation({ permissionGrantId, permissionGrantIds });
105
+ const signaturePayload = {
106
+ descriptorCid,
107
+ delegatedGrantId,
108
+ protocolRole,
109
+ ...permissionGrantInvocation
110
+ };
104
111
  removeUndefinedProperties(signaturePayload);
105
112
  const signaturePayloadBytes = Encoder.objectToBytes(signaturePayload);
106
113
  const builder = await GeneralJwsBuilder.create(signaturePayloadBytes, [signer]);
107
114
  const signature = builder.getJws();
108
115
  return signature;
109
116
  }
117
+ /**
118
+ * Normalizes permission grant invocation before it is written into a descriptor
119
+ * and signed payload.
120
+ *
121
+ * Direct operation messages use `permissionGrantId`; Messages operations use
122
+ * canonicalized `permissionGrantIds` so a request can invoke a grant set.
123
+ */
124
+ static normalizePermissionGrantInvocation(input) {
125
+ if (input.permissionGrantId !== undefined && input.permissionGrantIds !== undefined) {
126
+ throw new DwnError(DwnErrorCode.MessagePermissionGrantCreateInvocationAmbiguous, 'permission grant invocation must use either `permissionGrantId` or `permissionGrantIds`, not both');
127
+ }
128
+ if (input.permissionGrantId !== undefined) {
129
+ return { permissionGrantId: input.permissionGrantId };
130
+ }
131
+ if (input.permissionGrantIds === undefined) {
132
+ return {};
133
+ }
134
+ const permissionGrantIds = Message.normalizePermissionGrantIds(input);
135
+ return { permissionGrantIds };
136
+ }
137
+ /**
138
+ * Returns the permission grant ID carried by a direct operation signature payload.
139
+ */
140
+ static getPermissionGrantId(signaturePayload) {
141
+ return signaturePayload.permissionGrantId;
142
+ }
143
+ /**
144
+ * Returns all permission grant IDs invoked by a signature payload.
145
+ *
146
+ * Direct Records/Protocols operations carry a single `permissionGrantId`.
147
+ * Messages operations carry `permissionGrantIds`. Generic cleanup and
148
+ * revocation code uses this helper across both wire shapes.
149
+ */
150
+ static getPermissionGrantIds(signaturePayload) {
151
+ if (signaturePayload.permissionGrantId !== undefined) {
152
+ return [signaturePayload.permissionGrantId];
153
+ }
154
+ return signaturePayload.permissionGrantIds ?? [];
155
+ }
110
156
  /**
111
157
  * @returns newest message in the array. `undefined` if given array is empty.
112
158
  */
@@ -181,9 +227,10 @@ export class Message {
181
227
  * 3. The `descriptorCid` property matches the CID of the message descriptor
182
228
  * NOTE: signature is NOT verified.
183
229
  * @param payloadJsonSchemaKey The key to look up the JSON schema referenced in `compile-validators.js` and perform payload schema validation on.
230
+ * @param options Additional structural validation controls.
184
231
  * @returns the parsed JSON payload object if validation succeeds.
185
232
  */
186
- static async validateSignatureStructure(messageSignature, messageDescriptor, payloadJsonSchemaKey = 'GenericSignaturePayload') {
233
+ static async validateSignatureStructure(messageSignature, messageDescriptor, payloadJsonSchemaKey = 'GenericSignaturePayload', options = {}) {
187
234
  if (messageSignature.signatures.length !== 1) {
188
235
  throw new DwnError(DwnErrorCode.AuthenticationMoreThanOneSignatureNotSupported, 'expected no more than 1 signature for authorization purpose');
189
236
  }
@@ -196,7 +243,45 @@ export class Message {
196
243
  if (descriptorCid !== expectedDescriptorCid) {
197
244
  throw new DwnError(DwnErrorCode.AuthenticateDescriptorCidMismatch, `provided descriptorCid ${descriptorCid} does not match expected CID ${expectedDescriptorCid}`);
198
245
  }
246
+ if (options.validatePermissionGrantInvocation !== false) {
247
+ Message.validatePermissionGrantInvocationMatchesPayload(messageDescriptor, payloadJson);
248
+ }
199
249
  return payloadJson;
200
250
  }
251
+ static normalizePermissionGrantIds(input) {
252
+ if (input.permissionGrantIds === undefined) {
253
+ return [];
254
+ }
255
+ if (input.permissionGrantIds.length === 0) {
256
+ throw new DwnError(DwnErrorCode.MessagePermissionGrantIdsEmpty, '`permissionGrantIds` must contain at least one grant ID');
257
+ }
258
+ return [...new Set(input.permissionGrantIds)].sort(lexicographicalCompare);
259
+ }
260
+ static validatePermissionGrantInvocationCanonical(input) {
261
+ if (input.permissionGrantId !== undefined && input.permissionGrantIds !== undefined) {
262
+ throw new DwnError(DwnErrorCode.MessagePermissionGrantValidateInvocationAmbiguous, 'permission grant invocation must use either `permissionGrantId` or `permissionGrantIds`, not both');
263
+ }
264
+ if (input.permissionGrantId !== undefined) {
265
+ return [input.permissionGrantId];
266
+ }
267
+ const normalizedPermissionGrantIds = Message.normalizePermissionGrantIds(input);
268
+ if (input.permissionGrantIds !== undefined && !Message.areStringArraysEqual(input.permissionGrantIds, normalizedPermissionGrantIds)) {
269
+ throw new DwnError(DwnErrorCode.MessagePermissionGrantIdsNotCanonical, '`permissionGrantIds` must be sorted and deduplicated');
270
+ }
271
+ return normalizedPermissionGrantIds;
272
+ }
273
+ static validatePermissionGrantInvocationMatchesPayload(descriptor, signaturePayload) {
274
+ if (descriptor.permissionGrantId !== signaturePayload.permissionGrantId) {
275
+ throw new DwnError(DwnErrorCode.MessagePermissionGrantDescriptorPayloadMismatch, 'permission grant invocation in descriptor does not match signature payload');
276
+ }
277
+ const descriptorPermissionGrantIds = Message.validatePermissionGrantInvocationCanonical(descriptor);
278
+ const payloadPermissionGrantIds = Message.validatePermissionGrantInvocationCanonical(signaturePayload);
279
+ if (!Message.areStringArraysEqual(descriptorPermissionGrantIds, payloadPermissionGrantIds)) {
280
+ throw new DwnError(DwnErrorCode.MessagePermissionGrantIdsDescriptorPayloadMismatch, 'permission grant invocation in descriptor does not match signature payload');
281
+ }
282
+ }
283
+ static areStringArraysEqual(a, b) {
284
+ return a.length === b.length && a.every((value, index) => value === b[index]);
285
+ }
201
286
  }
202
287
  //# sourceMappingURL=message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../src/core/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../src/core/message.ts"],"names":[],"mappings":"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"}
@@ -1,97 +1,189 @@
1
1
  import { DwnInterfaceName } from '../enums/dwn-interface-method.js';
2
2
  import { GrantAuthorization } from './grant-authorization.js';
3
+ import { isRecordsPrimaryProjectionExcludedProtocol } from './constants.js';
4
+ import { PermissionScopeMatcher } from '../utils/permission-scope.js';
3
5
  import { PermissionsProtocol } from '../protocols/permissions.js';
4
6
  import { Records } from '../utils/records.js';
5
7
  import { RecordsWrite } from '../interfaces/records-write.js';
6
8
  import { DwnError, DwnErrorCode } from './dwn-error.js';
7
9
  export class MessagesGrantAuthorization {
10
+ static async fetchPermissionGrants(tenant, messageStore, permissionGrantIds) {
11
+ return Promise.all(permissionGrantIds.map(permissionGrantId => PermissionsProtocol.fetchGrant(tenant, messageStore, permissionGrantId)));
12
+ }
8
13
  /**
9
14
  * Authorizes a MessagesReadMessage using the given permission grant.
10
15
  * @param messageStore Used to check if the given grant has been revoked; and to fetch related RecordsWrites if needed.
11
16
  */
12
17
  static async authorizeMessagesRead(input) {
13
- const { messagesReadMessage, messageToRead, expectedGrantor, expectedGrantee, permissionGrant, messageStore } = input;
14
- await GrantAuthorization.performBaseValidation({
18
+ const { messagesReadMessage, messageToRead, expectedGrantor, expectedGrantee, permissionGrants, messageStore } = input;
19
+ await MessagesGrantAuthorization.performBaseValidationForGrantSet({
15
20
  incomingMessage: messagesReadMessage,
16
21
  expectedGrantor,
17
22
  expectedGrantee,
18
- permissionGrant,
23
+ permissionGrants,
19
24
  messageStore
20
25
  });
21
- const scope = permissionGrant.scope;
22
- await MessagesGrantAuthorization.verifyScope(expectedGrantor, messageToRead, scope, messageStore);
26
+ for (const permissionGrant of permissionGrants) {
27
+ const scope = permissionGrant.scope;
28
+ if (await MessagesGrantAuthorization.isScopeAuthorized(expectedGrantor, messageToRead, scope, messageStore)) {
29
+ return;
30
+ }
31
+ }
32
+ throw new DwnError(DwnErrorCode.MessagesReadVerifyScopeFailed, 'record message failed scope authorization');
23
33
  }
24
34
  /**
25
35
  * Authorizes the scope of a permission grant for MessagesSubscribe or MessagesSync.
26
36
  * @param messageStore Used to check if the grant has been revoked.
27
37
  */
28
38
  static async authorizeSubscribeOrSync(input) {
29
- const { incomingMessage, expectedGrantor, expectedGrantee, permissionGrant, messageStore } = input;
30
- await GrantAuthorization.performBaseValidation({
39
+ const { incomingMessage, expectedGrantor, expectedGrantee, permissionGrants, messageStore } = input;
40
+ await MessagesGrantAuthorization.performBaseValidationForGrantSet({
31
41
  incomingMessage,
32
42
  expectedGrantor,
33
43
  expectedGrantee,
34
- permissionGrant,
44
+ permissionGrants,
35
45
  messageStore
36
46
  });
37
- // if the grant is scoped to a specific protocol, ensure that the message targets that protocol
38
- if (PermissionsProtocol.hasProtocolScope(permissionGrant.scope)) {
39
- const scopedProtocol = permissionGrant.scope.protocol;
40
- // MessagesSync uses a direct `protocol` field on the descriptor
41
- if ('action' in incomingMessage.descriptor) {
42
- const syncMessage = incomingMessage;
43
- if (syncMessage.descriptor.protocol !== scopedProtocol) {
44
- throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol, `The protocol ${syncMessage.descriptor.protocol} does not match the scoped protocol ${scopedProtocol}`);
45
- }
47
+ const scopes = permissionGrants.map(permissionGrant => permissionGrant.scope);
48
+ if ('action' in incomingMessage.descriptor) {
49
+ MessagesGrantAuthorization.authorizeSyncScope(incomingMessage, scopes);
50
+ return;
51
+ }
52
+ MessagesGrantAuthorization.authorizeSubscribeScope(incomingMessage, scopes);
53
+ }
54
+ static authorizeSyncScope(syncMessage, scopes) {
55
+ const { projectionScopes, protocol } = syncMessage.descriptor;
56
+ if (projectionScopes === undefined) {
57
+ MessagesGrantAuthorization.authorizeProtocolSyncScope(scopes, protocol);
58
+ return;
59
+ }
60
+ MessagesGrantAuthorization.authorizeProjectionScopes(scopes, projectionScopes);
61
+ }
62
+ static authorizeProtocolSyncScope(scopes, protocol) {
63
+ if (isRecordsPrimaryProjectionExcludedProtocol(protocol)) {
64
+ throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationProtocolSyncInfrastructureProtocol, `Protocol-scoped MessagesSync cannot authorize infrastructure protocol ${protocol}`);
65
+ }
66
+ if (!MessagesGrantAuthorization.someScopeMatches(scopes, { protocol })) {
67
+ throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol, `No permission grant scope matches protocol ${protocol}`);
68
+ }
69
+ }
70
+ static authorizeProjectionScopes(scopes, projectionScopes) {
71
+ for (const projectionScope of projectionScopes) {
72
+ if (isRecordsPrimaryProjectionExcludedProtocol(projectionScope.protocol)) {
73
+ throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationProjectionInfrastructureProtocol, `Projected MessagesSync cannot authorize infrastructure protocol ${projectionScope.protocol}`);
74
+ }
75
+ if (MessagesGrantAuthorization.someScopeMatches(scopes, projectionScope)) {
76
+ continue;
46
77
  }
47
- else {
48
- // MessagesSubscribe uses filters
49
- const filteredMessage = incomingMessage;
50
- for (const filter of filteredMessage.descriptor.filters) {
51
- if (filter.protocol !== scopedProtocol) {
52
- throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationMismatchedProtocol, `The protocol ${filter.protocol} does not match the scoped protocol ${scopedProtocol}`);
53
- }
54
- }
78
+ throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationProjectionScopeMismatch, `No permission grant scope matches projection scope ${JSON.stringify(projectionScope)}`);
79
+ }
80
+ }
81
+ static authorizeSubscribeScope(subscribeMessage, scopes) {
82
+ const { filters } = subscribeMessage.descriptor;
83
+ if (filters.length === 0 && !MessagesGrantAuthorization.hasUnscopedGrant(scopes)) {
84
+ throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationUnfilteredSubscribeProtocolScope, `A protocol-scoped grant cannot authorize an unfiltered subscription`);
85
+ }
86
+ for (const filter of filters) {
87
+ if (MessagesGrantAuthorization.someScopeMatches(scopes, { protocol: filter.protocol })) {
88
+ continue;
55
89
  }
90
+ throw new DwnError(DwnErrorCode.MessagesGrantAuthorizationSubscribeProtocolMismatch, `No permission grant scope matches protocol ${filter.protocol}`);
91
+ }
92
+ }
93
+ static someScopeMatches(scopes, target) {
94
+ return scopes.some(scope => PermissionScopeMatcher.matches(scope, target));
95
+ }
96
+ static hasUnscopedGrant(scopes) {
97
+ return scopes.some(scope => scope.protocol === undefined);
98
+ }
99
+ /**
100
+ * Revalidates an already-open delegated MessagesSubscribe grant set at event
101
+ * delivery time. Subscription messages are signed at open time, but grant
102
+ * expiry and revocation must stop future delivery after the grant set becomes
103
+ * invalid.
104
+ */
105
+ static async authorizeSubscribeDelivery(input) {
106
+ const { messagesSubscribeMessage, expectedGrantor, expectedGrantee, permissionGrants, messageStore, deliveryTimestamp, } = input;
107
+ const deliveryMessage = {
108
+ ...messagesSubscribeMessage,
109
+ descriptor: {
110
+ ...messagesSubscribeMessage.descriptor,
111
+ messageTimestamp: deliveryTimestamp,
112
+ },
113
+ };
114
+ await MessagesGrantAuthorization.authorizeSubscribeOrSync({
115
+ incomingMessage: deliveryMessage,
116
+ expectedGrantor,
117
+ expectedGrantee,
118
+ permissionGrants,
119
+ messageStore,
120
+ });
121
+ }
122
+ /**
123
+ * Performs base validation on every invoked grant. The grant set is all-or-nothing:
124
+ * unresolved, revoked, expired, or interface/method-mismatched grants fail the request.
125
+ */
126
+ static async performBaseValidationForGrantSet(input) {
127
+ const { incomingMessage, expectedGrantor, expectedGrantee, permissionGrants, messageStore } = input;
128
+ for (const permissionGrant of permissionGrants) {
129
+ await GrantAuthorization.performBaseValidation({
130
+ incomingMessage,
131
+ expectedGrantor,
132
+ expectedGrantee,
133
+ permissionGrant,
134
+ messageStore
135
+ });
56
136
  }
57
137
  }
58
138
  /**
59
- * Verifies the given record against the scope of the given grant.
139
+ * Determines whether the given record is inside a grant scope.
60
140
  */
61
- static async verifyScope(tenant, messageToGet, incomingScope, messageStore) {
141
+ static async isScopeAuthorized(tenant, messageToGet, incomingScope, messageStore) {
62
142
  if (incomingScope.protocol === undefined) {
63
- // if no protocol is specified in the scope, then the grant is for all records
64
- return;
143
+ return true;
65
144
  }
66
145
  if (messageToGet.descriptor.interface === DwnInterfaceName.Records) {
67
- // if the message is a Records interface message, get the RecordsWrite message associated with the record
68
- const recordsMessage = messageToGet;
69
- const recordsWriteMessage = Records.isRecordsWrite(recordsMessage) ? recordsMessage :
70
- await RecordsWrite.fetchNewestRecordsWrite(messageStore, tenant, recordsMessage.descriptor.recordId);
71
- if (recordsWriteMessage.descriptor.protocol === incomingScope.protocol) {
72
- // the record protocol matches the incoming scope protocol
73
- return;
74
- }
75
- // we check if the protocol is the internal PermissionsProtocol for further validation
76
- if (recordsWriteMessage.descriptor.protocol === PermissionsProtocol.uri) {
77
- // get the permission scope from the permission message
78
- const permissionScope = await PermissionsProtocol.getScopeFromPermissionRecord(tenant, messageStore, recordsWriteMessage);
79
- if (PermissionsProtocol.hasProtocolScope(permissionScope) && permissionScope.protocol === incomingScope.protocol) {
80
- // the permissions record scoped protocol matches the incoming scope protocol
81
- return;
82
- }
83
- }
146
+ return MessagesGrantAuthorization.isRecordsMessageScopeAuthorized(tenant, messageToGet, incomingScope, messageStore);
84
147
  }
85
- else if (messageToGet.descriptor.interface === DwnInterfaceName.Protocols) {
86
- // if the message is a protocol message, it must be a `ProtocolConfigure` message
87
- const protocolsConfigureMessage = messageToGet;
88
- const configureProtocol = protocolsConfigureMessage.descriptor.definition.protocol;
89
- if (configureProtocol === incomingScope.protocol) {
90
- // the configured protocol matches the incoming scope protocol
91
- return;
92
- }
148
+ if (messageToGet.descriptor.interface === DwnInterfaceName.Protocols) {
149
+ return MessagesGrantAuthorization.isProtocolsConfigureScopeAuthorized(messageToGet, incomingScope);
93
150
  }
94
- throw new DwnError(DwnErrorCode.MessagesReadVerifyScopeFailed, 'record message failed scope authorization');
151
+ return false;
152
+ }
153
+ static async isRecordsMessageScopeAuthorized(tenant, recordsMessage, incomingScope, messageStore) {
154
+ const recordsWriteMessage = await MessagesGrantAuthorization.getAssociatedRecordsWrite(tenant, recordsMessage, messageStore);
155
+ if (recordsWriteMessage.descriptor.protocol === PermissionsProtocol.uri) {
156
+ return MessagesGrantAuthorization.isPermissionRecordScopeAuthorized(tenant, recordsWriteMessage, incomingScope, messageStore);
157
+ }
158
+ return PermissionScopeMatcher.matches(incomingScope, MessagesGrantAuthorization.getRecordsScopeTarget(recordsWriteMessage));
159
+ }
160
+ static async isPermissionRecordScopeAuthorized(tenant, recordsWriteMessage, incomingScope, messageStore) {
161
+ if (MessagesGrantAuthorization.isSubtreeScope(incomingScope)) {
162
+ return false;
163
+ }
164
+ const permissionScope = await PermissionsProtocol.getScopeFromPermissionRecord(tenant, messageStore, recordsWriteMessage);
165
+ return PermissionsProtocol.hasProtocolScope(permissionScope)
166
+ && PermissionScopeMatcher.matches(incomingScope, permissionScope);
167
+ }
168
+ static isProtocolsConfigureScopeAuthorized(protocolsConfigureMessage, incomingScope) {
169
+ // A delegate with any Messages.Read grant inside a protocol needs that
170
+ // protocol definition to interpret and validate the records it can read.
171
+ return incomingScope.protocol !== undefined &&
172
+ incomingScope.protocol === protocolsConfigureMessage.descriptor.definition.protocol;
173
+ }
174
+ static async getAssociatedRecordsWrite(tenant, recordsMessage, messageStore) {
175
+ if (Records.isRecordsWrite(recordsMessage)) {
176
+ return recordsMessage;
177
+ }
178
+ return RecordsWrite.fetchNewestRecordsWrite(messageStore, tenant, recordsMessage.descriptor.recordId);
179
+ }
180
+ static getRecordsScopeTarget(recordsWriteMessage) {
181
+ const { protocol, protocolPath } = recordsWriteMessage.descriptor;
182
+ const { contextId } = recordsWriteMessage;
183
+ return { protocol, protocolPath, contextId };
184
+ }
185
+ static isSubtreeScope(scope) {
186
+ return scope.protocolPath !== undefined || scope.contextId !== undefined;
95
187
  }
96
188
  }
97
189
  //# sourceMappingURL=messages-grant-authorization.js.map