@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
@@ -1,225 +1,185 @@
1
1
  import { concatBytes } from '@noble/ciphers/utils';
2
+ import { AesCtr, AesKw, computeJwkThumbprint, Hkdf, X25519 } from '@enbox/crypto';
2
3
  import { Encoder } from './encoder.js';
3
4
  import { KeyDerivationScheme } from './hd-key.js';
4
- import { AesGcm, AesKw, ConcatKdf, X25519, XChaCha20Poly1305 } from '@enbox/crypto';
5
- /**
6
- * Content encryption algorithms supported by the DWN.
7
- * Both are AEAD (Authenticated Encryption with Associated Data) ciphers.
8
- */
5
+ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
9
6
  export var ContentEncryptionAlgorithm;
10
7
  (function (ContentEncryptionAlgorithm) {
11
- /** AES-256 in Galois/Counter Mode. NIST-approved, hardware-accelerated. 96-bit nonce. */
12
- ContentEncryptionAlgorithm["A256GCM"] = "A256GCM";
13
- /** XChaCha20-Poly1305. 192-bit nonce (safe to randomize). Constant-time. */
14
- ContentEncryptionAlgorithm["XC20P"] = "XC20P";
8
+ ContentEncryptionAlgorithm["A256CTR"] = "A256CTR";
15
9
  })(ContentEncryptionAlgorithm || (ContentEncryptionAlgorithm = {}));
16
- /**
17
- * Key agreement algorithm used by the DWN.
18
- * ECDH-ES with X25519 key agreement and AES-256 Key Wrap.
19
- */
20
10
  export var KeyAgreementAlgorithm;
21
11
  (function (KeyAgreementAlgorithm) {
22
- KeyAgreementAlgorithm["EcdhEsA256kw"] = "ECDH-ES+A256KW";
12
+ KeyAgreementAlgorithm["X25519HkdfSha256A256Kw"] = "X25519-HKDF-SHA256+A256KW";
23
13
  })(KeyAgreementAlgorithm || (KeyAgreementAlgorithm = {}));
24
- /** Size of the AES-GCM authentication tag in bytes. */
25
- const AES_GCM_TAG_LENGTH_BYTES = 16;
26
- /** Size of the Poly1305 authentication tag in bytes. */
27
- const POLY1305_TAG_LENGTH_BYTES = 16;
28
- /**
29
- * Utility class for DWN encryption operations using JWE (RFC 7516).
30
- * Uses ECDH-ES+A256KW key agreement with X25519 and either AES-256-GCM or XChaCha20-Poly1305
31
- * for authenticated content encryption.
32
- */
14
+ export const ROLE_AUDIENCE_DERIVATION_SCHEME = 'roleAudience';
15
+ const AES_256_KEY_LENGTH_BYTES = 32;
16
+ const AES_CTR_COUNTER_LENGTH_BYTES = 16;
17
+ const AES_CTR_COUNTER_LENGTH_BITS = 128;
18
+ const KEK_INFO_PREFIX = KeyAgreementAlgorithm.X25519HkdfSha256A256Kw;
33
19
  export class Encryption {
34
- /**
35
- * Encrypts data using an AEAD cipher (A256GCM or XC20P).
36
- * Returns ciphertext with the authentication tag appended.
37
- */
38
- static async aeadEncrypt(algorithm, keyBytes, iv, plaintext) {
39
- if (algorithm === ContentEncryptionAlgorithm.A256GCM) {
40
- const keyJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(keyBytes), alg: 'A256GCM' };
41
- // Web Crypto AES-GCM returns ciphertext || tag
42
- const combined = await AesGcm.encrypt({ data: plaintext, iv, key: keyJwk });
43
- const ciphertext = combined.slice(0, combined.length - AES_GCM_TAG_LENGTH_BYTES);
44
- const tag = combined.slice(combined.length - AES_GCM_TAG_LENGTH_BYTES);
45
- return { ciphertext, tag };
46
- }
47
- else if (algorithm === ContentEncryptionAlgorithm.XC20P) {
48
- // @noble/ciphers XChaCha20-Poly1305 returns ciphertext || tag
49
- const combined = await XChaCha20Poly1305.encryptRaw({ data: plaintext, keyBytes, nonce: iv });
50
- const ciphertext = combined.slice(0, combined.length - POLY1305_TAG_LENGTH_BYTES);
51
- const tag = combined.slice(combined.length - POLY1305_TAG_LENGTH_BYTES);
52
- return { ciphertext, tag };
53
- }
54
- else {
55
- throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
56
- }
20
+ static async encrypt(algorithm, keyBytes, initializationVector, plaintext) {
21
+ Encryption.validateContentEncryptionParameters(algorithm, keyBytes, initializationVector);
22
+ return AesCtr.encrypt({
23
+ counter: initializationVector,
24
+ data: plaintext,
25
+ key: Encryption.toA256CtrJwk(keyBytes),
26
+ length: AES_CTR_COUNTER_LENGTH_BITS,
27
+ });
57
28
  }
58
- /**
59
- * Decrypts data using an AEAD cipher (A256GCM or XC20P).
60
- * Expects ciphertext and tag as separate inputs.
61
- */
62
- static async aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag) {
63
- // Both Web Crypto (AES-GCM) and @noble/ciphers (XChaCha20-Poly1305) expect ciphertext || tag
64
- const combined = concatBytes(ciphertext, tag);
65
- if (algorithm === ContentEncryptionAlgorithm.A256GCM) {
66
- const keyJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(keyBytes), alg: 'A256GCM' };
67
- return AesGcm.decrypt({ data: combined, iv, key: keyJwk });
68
- }
69
- else if (algorithm === ContentEncryptionAlgorithm.XC20P) {
70
- return XChaCha20Poly1305.decryptRaw({ data: combined, keyBytes, nonce: iv });
71
- }
72
- else {
73
- throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
74
- }
29
+ static async decrypt(algorithm, keyBytes, initializationVector, ciphertext) {
30
+ Encryption.validateContentEncryptionParameters(algorithm, keyBytes, initializationVector);
31
+ return AesCtr.decrypt({
32
+ counter: initializationVector,
33
+ data: ciphertext,
34
+ key: Encryption.toA256CtrJwk(keyBytes),
35
+ length: AES_CTR_COUNTER_LENGTH_BITS,
36
+ });
75
37
  }
76
- /**
77
- * Encrypts data as a ReadableStream using an AEAD cipher.
78
- * Collects all chunks, encrypts, and returns a new stream of ciphertext || tag.
79
- * The iv and tag are NOT embedded in the stream — they are stored in the JWE structure.
80
- */
81
- static async aeadEncryptStream(algorithm, keyBytes, iv, plaintextStream) {
38
+ static async encryptStream(algorithm, keyBytes, initializationVector, plaintextStream) {
82
39
  const plaintext = await Encryption.readStream(plaintextStream);
83
- const { ciphertext, tag } = await Encryption.aeadEncrypt(algorithm, keyBytes, iv, plaintext);
84
- const ciphertextStream = new ReadableStream({
85
- start(controller) {
86
- controller.enqueue(ciphertext);
87
- controller.close();
88
- }
89
- });
90
- return { ciphertextStream, tag };
40
+ const ciphertext = await Encryption.encrypt(algorithm, keyBytes, initializationVector, plaintext);
41
+ return Encryption.toStream(ciphertext);
91
42
  }
92
- /**
93
- * Decrypts a ciphertext stream using an AEAD cipher.
94
- * Returns a ReadableStream of plaintext.
95
- */
96
- static async aeadDecryptStream(algorithm, keyBytes, iv, ciphertextStream, tag) {
43
+ static async decryptStream(algorithm, keyBytes, initializationVector, ciphertextStream) {
97
44
  const ciphertext = await Encryption.readStream(ciphertextStream);
98
- const plaintext = await Encryption.aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag);
99
- return new ReadableStream({
100
- start(controller) {
101
- controller.enqueue(plaintext);
102
- controller.close();
103
- }
104
- });
45
+ const plaintext = await Encryption.decrypt(algorithm, keyBytes, initializationVector, ciphertext);
46
+ return Encryption.toStream(plaintext);
105
47
  }
106
- /**
107
- * Performs ECDH-ES key agreement with X25519 and wraps the CEK using AES-256 Key Wrap.
108
- *
109
- * @param ephemeralPrivateKey - Ephemeral X25519 private key (JWK).
110
- * @param recipientPublicKey - Recipient's X25519 public key (JWK).
111
- * @param cek - The Content Encryption Key to wrap.
112
- * @returns The wrapped CEK bytes.
113
- */
114
- static async ecdhEsWrapKey(ephemeralPrivateKey, recipientPublicKey, cek) {
115
- // 1. ECDH shared secret
48
+ static async wrapKey(recipientPublicKey, cek, keyInput, ephemeralPrivateKey) {
49
+ return Encryption.wrapX25519Key(recipientPublicKey, cek, keyInput, ephemeralPrivateKey);
50
+ }
51
+ static async wrapX25519Key(recipientPublicKey, cek, keyInput, ephemeralPrivateKey) {
52
+ Encryption.validateContentEncryptionKey(cek);
53
+ const privateKey = ephemeralPrivateKey ?? await X25519.generateKey();
54
+ const publicKey = await X25519.getPublicKey({ key: privateKey });
116
55
  const sharedSecret = await X25519.sharedSecret({
117
- privateKeyA: ephemeralPrivateKey,
56
+ privateKeyA: privateKey,
118
57
  publicKeyB: recipientPublicKey,
119
58
  });
120
- // 2. Derive KEK via Concat KDF (RFC 7518 Section 4.6.2)
121
- const kek = await ConcatKdf.deriveKey({
122
- sharedSecret,
123
- keyDataLen: 256,
124
- fixedInfo: {
125
- algorithmId: 'A256KW',
126
- partyUInfo: '',
127
- partyVInfo: '',
128
- suppPubInfo: 256,
129
- },
130
- });
131
- // 3. AES-256 Key Wrap
132
- const cekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(cek), alg: 'A256GCM' };
133
- const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
134
- const wrappedKey = await AesKw.wrapKey({ unwrappedKey: cekJwk, encryptionKey: kekJwk });
135
- return wrappedKey;
136
- }
137
- /**
138
- * Performs ECDH-ES key agreement with X25519 and unwraps the CEK using AES-256 Key Unwrap.
139
- *
140
- * @param recipientPrivateKey - Recipient's X25519 private key (JWK).
141
- * @param ephemeralPublicKey - Ephemeral X25519 public key from the JWE recipient header (JWK).
142
- * @param wrappedKey - The wrapped CEK bytes.
143
- * @returns The unwrapped CEK bytes.
144
- */
145
- static async ecdhEsUnwrapKey(recipientPrivateKey, ephemeralPublicKey, wrappedKey) {
146
- // 1. ECDH shared secret
59
+ const kek = await Encryption.deriveKek(sharedSecret, keyInput);
60
+ const cekJwk = Encryption.toA256CtrJwk(cek);
61
+ const kekJwk = { alg: 'A256KW', k: Encoder.bytesToBase64Url(kek), kty: 'oct' };
62
+ const encryptedKey = await AesKw.wrapKey({ encryptionKey: kekJwk, unwrappedKey: cekJwk });
63
+ return { encryptedKey, ephemeralPublicKey: publicKey };
64
+ }
65
+ static async unwrapKey(recipientPrivateKey, keyEncryption) {
66
+ if (keyEncryption.algorithm === KeyAgreementAlgorithm.X25519HkdfSha256A256Kw) {
67
+ return Encryption.unwrapX25519Key(recipientPrivateKey, keyEncryption);
68
+ }
69
+ throw new Error(`Unsupported key agreement algorithm: ${keyEncryption.algorithm}`);
70
+ }
71
+ static async unwrapX25519Key(recipientPrivateKey, keyEncryption) {
147
72
  const sharedSecret = await X25519.sharedSecret({
148
73
  privateKeyA: recipientPrivateKey,
149
- publicKeyB: ephemeralPublicKey,
74
+ publicKeyB: keyEncryption.ephemeralPublicKey,
150
75
  });
151
- // 2. Derive KEK via Concat KDF
152
- const kek = await ConcatKdf.deriveKey({
153
- sharedSecret,
154
- keyDataLen: 256,
155
- fixedInfo: {
156
- algorithmId: 'A256KW',
157
- partyUInfo: '',
158
- partyVInfo: '',
159
- suppPubInfo: 256,
160
- },
161
- });
162
- // 3. AES-256 Key Unwrap
163
- const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
76
+ const kek = await Encryption.deriveKek(sharedSecret, keyEncryption);
77
+ const kekJwk = { alg: 'A256KW', k: Encoder.bytesToBase64Url(kek), kty: 'oct' };
164
78
  const unwrappedJwk = await AesKw.unwrapKey({
165
- wrappedKeyBytes: wrappedKey,
166
- wrappedKeyAlgorithm: 'A256GCM',
167
79
  decryptionKey: kekJwk,
80
+ wrappedKeyAlgorithm: ContentEncryptionAlgorithm.A256CTR,
81
+ wrappedKeyBytes: Encoder.base64UrlToBytes(keyEncryption.encryptedKey),
168
82
  });
169
83
  return Encoder.base64UrlToBytes(unwrappedJwk.k);
170
84
  }
171
- /**
172
- * Builds a JWE encryption property structure from encryption input.
173
- * The ciphertext (encrypted record data) is stored separately in the DataStore,
174
- * so only the key wrapping metadata, IV, and authentication tag are included here.
175
- *
176
- * @param encryptionInput - Describes the CEK, IV, and recipient key encryption inputs.
177
- * @param tag - The authentication tag produced by the AEAD cipher during data encryption.
178
- */
179
- static async buildJwe(encryptionInput, tag) {
180
- const enc = encryptionInput.algorithm ?? ContentEncryptionAlgorithm.A256GCM;
181
- const protectedHeader = {
182
- alg: KeyAgreementAlgorithm.EcdhEsA256kw,
183
- enc,
184
- };
185
- const protectedHeaderBase64url = Encoder.stringToBase64Url(JSON.stringify(protectedHeader));
186
- const recipients = [];
85
+ static async buildEncryptionProperty(encryptionInput) {
86
+ const algorithm = encryptionInput.algorithm ?? ContentEncryptionAlgorithm.A256CTR;
87
+ Encryption.validateContentEncryptionParameters(algorithm, encryptionInput.key, encryptionInput.initializationVector);
88
+ const keyEncryption = [];
187
89
  for (const keyInput of encryptionInput.keyEncryptionInputs) {
188
- // Generate ephemeral X25519 key pair for each recipient
189
- const ephemeralPrivateKey = await X25519.generateKey();
190
- const ephemeralPublicKey = await X25519.getPublicKey({ key: ephemeralPrivateKey });
191
- // Wrap the CEK
192
- const wrappedKey = await Encryption.ecdhEsWrapKey(ephemeralPrivateKey, keyInput.publicKey, encryptionInput.key);
193
- const recipientHeader = {
194
- kid: keyInput.publicKeyId,
195
- epk: ephemeralPublicKey,
196
- derivationScheme: keyInput.derivationScheme,
90
+ keyEncryption.push(await Encryption.buildKeyEncryptionEntry(encryptionInput.key, keyInput));
91
+ }
92
+ return {
93
+ algorithm,
94
+ initializationVector: Encoder.bytesToBase64Url(encryptionInput.initializationVector),
95
+ keyEncryption,
96
+ };
97
+ }
98
+ static async getKeyId(publicKeyJwk) {
99
+ return computeJwkThumbprint({ jwk: publicKeyJwk });
100
+ }
101
+ static validateEncryptionProperty(encryption) {
102
+ const initializationVector = Encoder.base64UrlToBytes(encryption.initializationVector);
103
+ if (initializationVector.byteLength !== AES_CTR_COUNTER_LENGTH_BYTES) {
104
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityEncryptionInitializationVectorInvalid, `A256CTR initializationVector must decode to ${AES_CTR_COUNTER_LENGTH_BYTES} bytes.`);
105
+ }
106
+ for (const entry of encryption.keyEncryption) {
107
+ Encryption.validateKeyEncryptionEntry(entry);
108
+ }
109
+ }
110
+ static async buildKeyEncryptionEntry(cek, keyInput) {
111
+ const { encryptedKey, ephemeralPublicKey } = await Encryption.wrapKey(keyInput.publicKey, cek, keyInput);
112
+ const common = {
113
+ algorithm: KeyAgreementAlgorithm.X25519HkdfSha256A256Kw,
114
+ encryptedKey: Encoder.bytesToBase64Url(encryptedKey),
115
+ ephemeralPublicKey,
116
+ keyId: keyInput.keyId,
117
+ };
118
+ if (keyInput.derivationScheme === KeyDerivationScheme.ProtocolPath) {
119
+ return {
120
+ ...common,
121
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
197
122
  };
198
- // Attach derived public key for protocolContext scheme
199
- if (keyInput.derivationScheme === KeyDerivationScheme.ProtocolContext) {
200
- recipientHeader.derivedPublicKey = keyInput.publicKey;
201
- }
202
- recipients.push({
203
- header: recipientHeader,
204
- encrypted_key: Encoder.bytesToBase64Url(wrappedKey),
205
- });
206
123
  }
207
124
  return {
208
- protected: protectedHeaderBase64url,
209
- iv: Encoder.bytesToBase64Url(encryptionInput.initializationVector),
210
- tag: Encoder.bytesToBase64Url(tag),
211
- recipients,
125
+ ...common,
126
+ derivationScheme: ROLE_AUDIENCE_DERIVATION_SCHEME,
127
+ epoch: keyInput.epoch,
128
+ protocol: keyInput.protocol,
129
+ role: keyInput.role,
212
130
  };
213
131
  }
214
- /**
215
- * Parses the JWE protected header from its base64url encoding.
216
- */
217
- static parseProtectedHeader(protectedBase64url) {
218
- return Encoder.base64UrlToObject(protectedBase64url);
132
+ static validateKeyEncryptionEntry(entry) {
133
+ if (entry.algorithm === KeyAgreementAlgorithm.X25519HkdfSha256A256Kw) {
134
+ Encryption.validateX25519KeyEncryptionEntry(entry);
135
+ return;
136
+ }
137
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityEncryptionEphemeralPublicKeyInvalid, `Unsupported key agreement algorithm: ${entry.algorithm}`);
138
+ }
139
+ static validateX25519KeyEncryptionEntry(entry) {
140
+ if (entry.ephemeralPublicKey.kty !== 'OKP' || entry.ephemeralPublicKey.crv !== 'X25519') {
141
+ throw new DwnError(DwnErrorCode.RecordsWriteValidateIntegrityEncryptionEphemeralPublicKeyInvalid, 'ephemeralPublicKey must be an OKP X25519 public key.');
142
+ }
143
+ }
144
+ static async deriveKek(sharedSecret, keyEncryption) {
145
+ Encryption.validateSharedSecret(sharedSecret);
146
+ const info = Encryption.getKekInfo(keyEncryption);
147
+ return Hkdf.deriveKeyBytes({
148
+ baseKeyBytes: sharedSecret,
149
+ hash: 'SHA-256',
150
+ info,
151
+ length: 256,
152
+ salt: new Uint8Array(),
153
+ });
154
+ }
155
+ static getKekInfo(keyEncryption) {
156
+ if (keyEncryption.derivationScheme === ROLE_AUDIENCE_DERIVATION_SCHEME) {
157
+ return `${KEK_INFO_PREFIX}|roleAudience|${keyEncryption.protocol}|${keyEncryption.role}|${keyEncryption.epoch}|${keyEncryption.keyId}`;
158
+ }
159
+ return `${KEK_INFO_PREFIX}|protocolPath|${keyEncryption.keyId}`;
160
+ }
161
+ static validateContentEncryptionParameters(algorithm, keyBytes, initializationVector) {
162
+ if (algorithm !== ContentEncryptionAlgorithm.A256CTR) {
163
+ throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
164
+ }
165
+ Encryption.validateContentEncryptionKey(keyBytes);
166
+ if (initializationVector.byteLength !== AES_CTR_COUNTER_LENGTH_BYTES) {
167
+ throw new Error(`A256CTR initializationVector must be ${AES_CTR_COUNTER_LENGTH_BYTES} bytes.`);
168
+ }
169
+ }
170
+ static validateContentEncryptionKey(keyBytes) {
171
+ if (keyBytes.byteLength !== AES_256_KEY_LENGTH_BYTES) {
172
+ throw new Error(`A256CTR content encryption key must be ${AES_256_KEY_LENGTH_BYTES} bytes.`);
173
+ }
174
+ }
175
+ static validateSharedSecret(sharedSecret) {
176
+ if (sharedSecret.every((byte) => byte === 0)) {
177
+ throw new Error('X25519 shared secret MUST NOT be all zeros.');
178
+ }
179
+ }
180
+ static toA256CtrJwk(keyBytes) {
181
+ return { alg: ContentEncryptionAlgorithm.A256CTR, k: Encoder.bytesToBase64Url(keyBytes), kty: 'oct' };
219
182
  }
220
- /**
221
- * Reads a ReadableStream to completion and returns all bytes concatenated.
222
- */
223
183
  static async readStream(stream) {
224
184
  const reader = stream.getReader();
225
185
  const chunks = [];
@@ -232,5 +192,13 @@ export class Encryption {
232
192
  }
233
193
  return concatBytes(...chunks);
234
194
  }
195
+ static toStream(data) {
196
+ return new ReadableStream({
197
+ start(controller) {
198
+ controller.enqueue(data);
199
+ controller.close();
200
+ }
201
+ });
202
+ }
235
203
  }
236
204
  //# sourceMappingURL=encryption.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/utils/encryption.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/utils/encryption.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import { X25519 } from '@enbox/crypto';
4
4
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
5
5
  export var KeyDerivationScheme;
6
6
  (function (KeyDerivationScheme) {
7
- KeyDerivationScheme["ProtocolContext"] = "protocolContext";
8
7
  KeyDerivationScheme["ProtocolPath"] = "protocolPath";
9
8
  })(KeyDerivationScheme || (KeyDerivationScheme = {}));
10
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hd-key.js","sourceRoot":"","sources":["../../../../src/utils/hd-key.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hd-key.js","sourceRoot":"","sources":["../../../../src/utils/hd-key.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAN,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,oDAA6B,CAAA;AAC/B,CAAC,EAFW,mBAAmB,KAAnB,mBAAmB,QAE9B;AAUD;;GAEG;AACH,MAAM,OAAO,KAAK;IAChB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAA8B,EAAE,iBAA2B;QAC9F,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzG,MAAM,gCAAgC,GAAG,WAAW,CAAC,cAAc,IAAI,EAAE,CAAC;QAC1E,MAAM,sBAAsB,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QACxG,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACzG,MAAM,2BAA2B,GAAsB;YACrD,SAAS,EAAW,WAAW,CAAC,SAAS;YACzC,gBAAgB,EAAI,WAAW,CAAC,gBAAgB;YAChD,cAAc,EAAM,CAAC,GAAG,gCAAgC,EAAE,GAAG,iBAAiB,CAAC;YAC/E,iBAAiB,EAAG,oBAAqC;SAC1D,CAAC;QAEF,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,WAA8B,EAAE,iBAA2B;QAC7F,MAAM,2BAA2B,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACjG,MAAM,0BAA0B,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,2BAA2B,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAErH,OAAO,0BAA0C,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,UAAsB,EAAE,YAAsB;QACtF,KAAK,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QAE9C,IAAI,iBAAiB,GAAG,UAAU,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpD,iBAAiB,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC;gBACjD,aAAa,EAAQ,SAAS;gBAC9B,kBAAkB,EAAG,iBAAiB;gBACtC,IAAI,EAAiB,YAAY,EAAE,sEAAsE;gBACzG,gBAAgB,EAAK,EAAE,CAAC,sBAAsB;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAKtC;QACC,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;QAE7E,MAAM,SAAS,GAAG,kBAAkB,EAAkB,CAAC;QAEvD,mGAAmG;QACnG,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnI,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CACrD;YACE,IAAI,EAAG,MAAM;YACb,IAAI,EAAG,aAAa;YACpB,IAAI,EAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,8CAA8C;YACxE,IAAI,EAAG,IAAoB;SAC5B,EACD,YAAY,EACZ,gBAAgB,GAAG,CAAC,CAAC,6BAA6B;SACnD,CAAC;QAEF,0CAA0C;QAC1C,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACzD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,yBAAyB,CAAC,YAAsB;QAC7D,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,0BAA0B,EAAE,gCAAgC,YAAY,EAAE,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;CACF"}
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Matching fails closed for invalid combinations: `protocolPath` and
5
5
  * `contextId` are mutually exclusive, and either field requires `protocol`.
6
- * `protocol` and `protocolPath` match by exact equality. `contextId` scopes
7
- * match a context subtree: the target context must equal the scoped context or
8
- * begin with the scoped context followed by `/`.
6
+ * `protocol` matches by exact equality. `protocolPath` and `contextId` scopes
7
+ * match subtrees: the target value must equal the scoped value or begin with the
8
+ * scoped value followed by `/`.
9
9
  */
10
10
  export class PermissionScopeMatcher {
11
11
  /**
@@ -22,7 +22,7 @@ export class PermissionScopeMatcher {
22
22
  return false;
23
23
  }
24
24
  if (scope.protocolPath !== undefined) {
25
- return scope.protocolPath === target.protocolPath;
25
+ return PermissionScopeMatcher.matchesSubtree(scope.protocolPath, target.protocolPath);
26
26
  }
27
27
  if (scope.contextId !== undefined) {
28
28
  return PermissionScopeMatcher.matchesContextId(scope.contextId, target.contextId);
@@ -30,8 +30,11 @@ export class PermissionScopeMatcher {
30
30
  return true;
31
31
  }
32
32
  static matchesContextId(scopeContextId, candidateContextId) {
33
- return typeof candidateContextId === 'string' &&
34
- (candidateContextId === scopeContextId || candidateContextId.startsWith(scopeContextId + '/'));
33
+ return PermissionScopeMatcher.matchesSubtree(scopeContextId, candidateContextId);
34
+ }
35
+ static matchesSubtree(scopeValue, candidateValue) {
36
+ return typeof candidateValue === 'string' &&
37
+ (candidateValue === scopeValue || candidateValue.startsWith(scopeValue + '/'));
35
38
  }
36
39
  }
37
40
  //# sourceMappingURL=permission-scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission-scope.js","sourceRoot":"","sources":["../../../../src/utils/permission-scope.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACI,MAAM,CAAC,OAAO,CAAC,KAAoB,EAAE,MAAqB;QAC/D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,CAAC;QACpD,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,sBAAsB,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,cAAsB,EAAE,kBAA2B;QACjF,OAAO,OAAO,kBAAkB,KAAK,QAAQ;YAC3C,CAAC,kBAAkB,KAAK,cAAc,IAAI,kBAAkB,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC;IACnG,CAAC;CACF"}
1
+ {"version":3,"file":"permission-scope.js","sourceRoot":"","sources":["../../../../src/utils/permission-scope.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACI,MAAM,CAAC,OAAO,CAAC,KAAoB,EAAE,MAAqB;QAC/D,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,sBAAsB,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,cAAsB,EAAE,kBAA2B;QACjF,OAAO,sBAAsB,CAAC,cAAc,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,UAAkB,EAAE,cAAuB;QACvE,OAAO,OAAO,cAAc,KAAK,QAAQ;YACvC,CAAC,cAAc,KAAK,UAAU,IAAI,cAAc,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IACnF,CAAC;CACF"}
@@ -52,7 +52,7 @@ export function getRuleSetAtPath(protocolPath, structure) {
52
52
  * Class containing Protocol related utility methods.
53
53
  */
54
54
  export class Protocols {
55
- // Implementation dispatches based on argument type
55
+ // Implementation dispatches based on argument type.
56
56
  static async deriveAndInjectPublicEncryptionKeys(protocolDefinition, rootKeyIdOrKeyDeriver, privateJwk) {
57
57
  // clone before modify
58
58
  const clone = JSON.parse(JSON.stringify(protocolDefinition));
@@ -60,6 +60,9 @@ export class Protocols {
60
60
  // Callback-based path
61
61
  const keyDeriver = rootKeyIdOrKeyDeriver;
62
62
  const basePath = [KeyDerivationScheme.ProtocolPath, protocolDefinition.protocol];
63
+ clone.$keyAgreement = {
64
+ publicKeyJwk: await keyDeriver.derivePublicKey(basePath),
65
+ };
63
66
  async function injectKeysViaCallback(ruleSet, parentPath) {
64
67
  for (const key in ruleSet) {
65
68
  if (!key.startsWith('$')) {
@@ -72,10 +75,7 @@ export class Protocols {
72
75
  continue;
73
76
  }
74
77
  const publicKeyJwk = await keyDeriver.derivePublicKey(currentPath);
75
- childRuleSet.$encryption = {
76
- rootKeyId: keyDeriver.rootKeyId,
77
- publicKeyJwk,
78
- };
78
+ childRuleSet.$keyAgreement = { publicKeyJwk };
79
79
  await injectKeysViaCallback(childRuleSet, currentPath);
80
80
  }
81
81
  }
@@ -83,12 +83,12 @@ export class Protocols {
83
83
  await injectKeysViaCallback(clone.structure, basePath);
84
84
  return clone;
85
85
  }
86
- // Raw-key path (existing logic, unchanged)
86
+ // Raw-key path
87
87
  const rootKeyId = rootKeyIdOrKeyDeriver;
88
- // a function that recursively creates and adds `$encryption` property to every rule set
88
+ // a function that recursively creates and adds `$keyAgreement` property to every rule set
89
89
  async function addEncryptionProperty(ruleSet, parentKey) {
90
90
  for (const key in ruleSet) {
91
- // if we encounter a nested rule set (a property name that doesn't begin with '$'), recursively inject the `$encryption` property
91
+ // if we encounter a nested rule set (a property name that doesn't begin with '$'), recursively inject the `$keyAgreement` property
92
92
  if (!key.startsWith('$')) {
93
93
  const derivedPrivateKey = await HdKey.derivePrivateKey(parentKey, [key]);
94
94
  const childRuleSet = ruleSet[key];
@@ -99,7 +99,7 @@ export class Protocols {
99
99
  continue;
100
100
  }
101
101
  const publicKeyJwk = await X25519.getPublicKey({ key: derivedPrivateKey.derivedPrivateKey });
102
- childRuleSet.$encryption = { rootKeyId, publicKeyJwk };
102
+ childRuleSet.$keyAgreement = { publicKeyJwk };
103
103
  await addEncryptionProperty(childRuleSet, derivedPrivateKey);
104
104
  }
105
105
  }
@@ -111,6 +111,9 @@ export class Protocols {
111
111
  rootKeyId
112
112
  };
113
113
  const protocolLevelDerivedKey = await HdKey.derivePrivateKey(rootKey, [KeyDerivationScheme.ProtocolPath, protocolDefinition.protocol]);
114
+ clone.$keyAgreement = {
115
+ publicKeyJwk: await X25519.getPublicKey({ key: protocolLevelDerivedKey.derivedPrivateKey }),
116
+ };
114
117
  await addEncryptionProperty(clone.structure, protocolLevelDerivedKey);
115
118
  return clone;
116
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../../src/utils/protocols.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocols.js","sourceRoot":"","sources":["../../../../src/utils/protocols.ts"],"names":[],"mappings":"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"}