@enbox/dwn-sdk-js 0.4.4 → 0.4.5

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 (197) 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 +5316 -2425
  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 +135 -187
  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 +125 -255
  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/grant-key.spec.js +63 -0
  96. package/dist/esm/tests/validation/json-schemas/encryption/grant-key.spec.js.map +1 -0
  97. package/dist/types/generated/precompiled-validators.d.ts +140 -92
  98. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  99. package/dist/types/src/core/constants.d.ts +2 -2
  100. package/dist/types/src/core/constants.d.ts.map +1 -1
  101. package/dist/types/src/core/core-protocol.d.ts +1 -1
  102. package/dist/types/src/core/core-protocol.d.ts.map +1 -1
  103. package/dist/types/src/core/dwn-error.d.ts +29 -1
  104. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  105. package/dist/types/src/core/messages-grant-authorization.d.ts +2 -0
  106. package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -1
  107. package/dist/types/src/core/protocol-authorization-validation.d.ts +2 -2
  108. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
  109. package/dist/types/src/core/recording-validation-state-reader.d.ts +9 -0
  110. package/dist/types/src/core/recording-validation-state-reader.d.ts.map +1 -1
  111. package/dist/types/src/core/replication-apply.d.ts +4 -3
  112. package/dist/types/src/core/replication-apply.d.ts.map +1 -1
  113. package/dist/types/src/core/validation-state-reader.d.ts +9 -0
  114. package/dist/types/src/core/validation-state-reader.d.ts.map +1 -1
  115. package/dist/types/src/dwn.d.ts +1 -0
  116. package/dist/types/src/dwn.d.ts.map +1 -1
  117. package/dist/types/src/handlers/messages-query.d.ts.map +1 -1
  118. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  119. package/dist/types/src/index.d.ts +6 -5
  120. package/dist/types/src/index.d.ts.map +1 -1
  121. package/dist/types/src/interfaces/protocols-configure.d.ts +1 -1
  122. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  123. package/dist/types/src/interfaces/records-write-signing.d.ts +4 -8
  124. package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -1
  125. package/dist/types/src/interfaces/records-write.d.ts +10 -26
  126. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  127. package/dist/types/src/protocols/encryption.d.ts +43 -0
  128. package/dist/types/src/protocols/encryption.d.ts.map +1 -0
  129. package/dist/types/src/protocols/permission-grant.d.ts +0 -7
  130. package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
  131. package/dist/types/src/types/encryption-types.d.ts +5 -38
  132. package/dist/types/src/types/encryption-types.d.ts.map +1 -1
  133. package/dist/types/src/types/message-types.d.ts +0 -13
  134. package/dist/types/src/types/message-types.d.ts.map +1 -1
  135. package/dist/types/src/types/permission-types.d.ts +0 -9
  136. package/dist/types/src/types/permission-types.d.ts.map +1 -1
  137. package/dist/types/src/types/protocols-types.d.ts +9 -14
  138. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  139. package/dist/types/src/types/records-types.d.ts +3 -3
  140. package/dist/types/src/types/records-types.d.ts.map +1 -1
  141. package/dist/types/src/types/validation-state-reader.d.ts +12 -0
  142. package/dist/types/src/types/validation-state-reader.d.ts.map +1 -1
  143. package/dist/types/src/utils/encryption.d.ts +54 -145
  144. package/dist/types/src/utils/encryption.d.ts.map +1 -1
  145. package/dist/types/src/utils/hd-key.d.ts +1 -1
  146. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  147. package/dist/types/src/utils/permission-scope.d.ts +4 -3
  148. package/dist/types/src/utils/permission-scope.d.ts.map +1 -1
  149. package/dist/types/src/utils/protocols.d.ts +3 -5
  150. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  151. package/dist/types/src/utils/records.d.ts +5 -13
  152. package/dist/types/src/utils/records.d.ts.map +1 -1
  153. package/dist/types/src/utils/replication.d.ts +3 -0
  154. package/dist/types/src/utils/replication.d.ts.map +1 -1
  155. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  156. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
  157. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  158. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  159. package/dist/types/tests/protocols/encryption.spec.d.ts +2 -0
  160. package/dist/types/tests/protocols/encryption.spec.d.ts.map +1 -0
  161. package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -1
  162. package/dist/types/tests/utils/test-data-generator.d.ts +0 -5
  163. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  164. package/dist/types/tests/validation/json-schemas/encryption/grant-key.spec.d.ts +2 -0
  165. package/dist/types/tests/validation/json-schemas/encryption/grant-key.spec.d.ts.map +1 -0
  166. package/package.json +3 -3
  167. package/src/core/constants.ts +3 -3
  168. package/src/core/core-protocol.ts +1 -1
  169. package/src/core/dwn-error.ts +29 -1
  170. package/src/core/messages-grant-authorization.ts +27 -0
  171. package/src/core/protocol-authorization-validation.ts +145 -6
  172. package/src/core/recording-validation-state-reader.ts +13 -0
  173. package/src/core/replication-apply.ts +222 -8
  174. package/src/core/validation-state-reader.ts +30 -0
  175. package/src/dwn.ts +24 -2
  176. package/src/handlers/messages-query.ts +6 -5
  177. package/src/handlers/protocols-configure.ts +19 -3
  178. package/src/handlers/records-write.ts +1 -1
  179. package/src/index.ts +15 -5
  180. package/src/interfaces/protocols-configure.ts +39 -12
  181. package/src/interfaces/records-write-signing.ts +5 -12
  182. package/src/interfaces/records-write.ts +75 -92
  183. package/src/protocols/encryption.ts +649 -0
  184. package/src/protocols/permission-grant.ts +0 -6
  185. package/src/types/encryption-types.ts +9 -38
  186. package/src/types/message-types.ts +0 -13
  187. package/src/types/permission-types.ts +0 -10
  188. package/src/types/protocols-types.ts +9 -16
  189. package/src/types/records-types.ts +3 -3
  190. package/src/types/validation-state-reader.ts +13 -0
  191. package/src/utils/encryption.ts +213 -283
  192. package/src/utils/hd-key.ts +1 -1
  193. package/src/utils/permission-scope.ts +10 -6
  194. package/src/utils/protocols.ts +16 -15
  195. package/src/utils/records.ts +86 -71
  196. package/src/utils/replication.ts +30 -4
  197. package/dist/esm/tests/vectors/protocol-definitions/chat.json +0 -70
@@ -1,4 +1,5 @@
1
1
  import { ArrayUtility } from '../../src/utils/array.js';
2
+ import { Cid } from '../../src/utils/cid.js';
2
3
  import { DataStream } from '../../src/index.js';
3
4
  import { DwnErrorCode } from '../../src/core/dwn-error.js';
4
5
  import { Encoder } from '../../src/utils/encoder.js';
@@ -6,341 +7,210 @@ import { KeyDerivationScheme } from '../../src/utils/hd-key.js';
6
7
  import { Records } from '../../src/utils/records.js';
7
8
  import { TestDataGenerator } from './test-data-generator.js';
8
9
  import { X25519 } from '@enbox/crypto';
9
- import { ContentEncryptionAlgorithm, Encryption } from '../../src/utils/encryption.js';
10
+ import { ContentEncryptionAlgorithm, Encryption, KeyAgreementAlgorithm } from '../../src/utils/encryption.js';
10
11
  import { describe, expect, it } from 'bun:test';
11
- /** Boundary sizes that exercise edge cases in AEAD ciphers. */
12
12
  const boundarySizes = [0, 1, 15, 16, 17, 32, 256];
13
13
  describe('Encryption', () => {
14
- describe('AEAD A256GCM', () => {
15
- it('should be able to encrypt and decrypt data correctly', async () => {
14
+ describe('A256CTR', () => {
15
+ it('should encrypt and decrypt bytes correctly', async () => {
16
16
  const key = TestDataGenerator.randomBytes(32);
17
- const iv = TestDataGenerator.randomBytes(12); // 96-bit nonce for AES-GCM
17
+ const iv = TestDataGenerator.randomBytes(16);
18
18
  const inputBytes = TestDataGenerator.randomBytes(1_000_000);
19
- const { ciphertext, tag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, inputBytes);
20
- const plaintext = await Encryption.aeadDecrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, ciphertext, tag);
19
+ const ciphertext = await Encryption.encrypt(ContentEncryptionAlgorithm.A256CTR, key, iv, inputBytes);
20
+ const plaintext = await Encryption.decrypt(ContentEncryptionAlgorithm.A256CTR, key, iv, ciphertext);
21
21
  expect(ArrayUtility.byteArraysEqual(inputBytes, plaintext)).toBe(true);
22
22
  });
23
- it('should be able to encrypt and decrypt a data stream correctly', async () => {
23
+ it('should encrypt and decrypt streams correctly', async () => {
24
24
  const key = TestDataGenerator.randomBytes(32);
25
- const iv = TestDataGenerator.randomBytes(12);
25
+ const iv = TestDataGenerator.randomBytes(16);
26
26
  const inputBytes = TestDataGenerator.randomBytes(1_000_000);
27
- const inputStream = DataStream.fromBytes(inputBytes);
28
- const { ciphertextStream, tag } = await Encryption.aeadEncryptStream(ContentEncryptionAlgorithm.A256GCM, key, iv, inputStream);
29
- const plaintextStream = await Encryption.aeadDecryptStream(ContentEncryptionAlgorithm.A256GCM, key, iv, ciphertextStream, tag);
27
+ const ciphertextStream = await Encryption.encryptStream(ContentEncryptionAlgorithm.A256CTR, key, iv, DataStream.fromBytes(inputBytes));
28
+ const plaintextStream = await Encryption.decryptStream(ContentEncryptionAlgorithm.A256CTR, key, iv, ciphertextStream);
30
29
  const plaintextBytes = await DataStream.toBytes(plaintextStream);
31
30
  expect(ArrayUtility.byteArraysEqual(inputBytes, plaintextBytes)).toBe(true);
32
31
  });
33
- it('should handle boundary plaintext sizes via byte API', async () => {
32
+ it('should handle boundary plaintext sizes', async () => {
34
33
  const key = TestDataGenerator.randomBytes(32);
35
- const iv = TestDataGenerator.randomBytes(12);
34
+ const iv = TestDataGenerator.randomBytes(16);
36
35
  for (const size of boundarySizes) {
37
36
  const inputBytes = size === 0 ? new Uint8Array(0) : TestDataGenerator.randomBytes(size);
38
- const { ciphertext, tag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, inputBytes);
39
- const plaintext = await Encryption.aeadDecrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, ciphertext, tag);
37
+ const ciphertext = await Encryption.encrypt(ContentEncryptionAlgorithm.A256CTR, key, iv, inputBytes);
38
+ const plaintext = await Encryption.decrypt(ContentEncryptionAlgorithm.A256CTR, key, iv, ciphertext);
40
39
  expect(plaintext.length).toBe(size);
41
40
  expect(ArrayUtility.byteArraysEqual(inputBytes, plaintext)).toBe(true);
42
41
  }
43
42
  });
44
- it('should handle boundary plaintext sizes via stream API', async () => {
45
- const key = TestDataGenerator.randomBytes(32);
46
- const iv = TestDataGenerator.randomBytes(12);
47
- for (const size of boundarySizes) {
48
- const inputBytes = size === 0 ? new Uint8Array(0) : TestDataGenerator.randomBytes(size);
49
- const inputStream = DataStream.fromBytes(inputBytes);
50
- const { ciphertextStream, tag } = await Encryption.aeadEncryptStream(ContentEncryptionAlgorithm.A256GCM, key, iv, inputStream);
51
- const plaintextStream = await Encryption.aeadDecryptStream(ContentEncryptionAlgorithm.A256GCM, key, iv, ciphertextStream, tag);
52
- const plaintextBytes = await DataStream.toBytes(plaintextStream);
53
- expect(plaintextBytes.length).toBe(size);
54
- expect(ArrayUtility.byteArraysEqual(inputBytes, plaintextBytes)).toBe(true);
55
- }
56
- });
57
43
  });
58
- describe('AEAD XC20P', () => {
59
- it('should be able to encrypt and decrypt data correctly', async () => {
60
- const key = TestDataGenerator.randomBytes(32);
61
- const nonce = TestDataGenerator.randomBytes(24); // 192-bit nonce for XChaCha20-Poly1305
62
- const inputBytes = TestDataGenerator.randomBytes(1_000_000);
63
- const { ciphertext, tag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.XC20P, key, nonce, inputBytes);
64
- const plaintext = await Encryption.aeadDecrypt(ContentEncryptionAlgorithm.XC20P, key, nonce, ciphertext, tag);
65
- expect(ArrayUtility.byteArraysEqual(inputBytes, plaintext)).toBe(true);
66
- });
67
- it('should be able to encrypt and decrypt a data stream correctly', async () => {
68
- const key = TestDataGenerator.randomBytes(32);
69
- const nonce = TestDataGenerator.randomBytes(24);
70
- const inputBytes = TestDataGenerator.randomBytes(1_000_000);
71
- const inputStream = DataStream.fromBytes(inputBytes);
72
- const { ciphertextStream, tag } = await Encryption.aeadEncryptStream(ContentEncryptionAlgorithm.XC20P, key, nonce, inputStream);
73
- const plaintextStream = await Encryption.aeadDecryptStream(ContentEncryptionAlgorithm.XC20P, key, nonce, ciphertextStream, tag);
74
- const plaintextBytes = await DataStream.toBytes(plaintextStream);
75
- expect(ArrayUtility.byteArraysEqual(inputBytes, plaintextBytes)).toBe(true);
76
- });
77
- it('should handle boundary plaintext sizes via byte API', async () => {
78
- const key = TestDataGenerator.randomBytes(32);
79
- const nonce = TestDataGenerator.randomBytes(24);
80
- for (const size of boundarySizes) {
81
- const inputBytes = size === 0 ? new Uint8Array(0) : TestDataGenerator.randomBytes(size);
82
- const { ciphertext, tag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.XC20P, key, nonce, inputBytes);
83
- const plaintext = await Encryption.aeadDecrypt(ContentEncryptionAlgorithm.XC20P, key, nonce, ciphertext, tag);
84
- expect(plaintext.length).toBe(size);
85
- expect(ArrayUtility.byteArraysEqual(inputBytes, plaintext)).toBe(true);
86
- }
87
- });
88
- it('should handle boundary plaintext sizes via stream API', async () => {
89
- const key = TestDataGenerator.randomBytes(32);
90
- const nonce = TestDataGenerator.randomBytes(24);
91
- for (const size of boundarySizes) {
92
- const inputBytes = size === 0 ? new Uint8Array(0) : TestDataGenerator.randomBytes(size);
93
- const inputStream = DataStream.fromBytes(inputBytes);
94
- const { ciphertextStream, tag } = await Encryption.aeadEncryptStream(ContentEncryptionAlgorithm.XC20P, key, nonce, inputStream);
95
- const plaintextStream = await Encryption.aeadDecryptStream(ContentEncryptionAlgorithm.XC20P, key, nonce, ciphertextStream, tag);
96
- const plaintextBytes = await DataStream.toBytes(plaintextStream);
97
- expect(plaintextBytes.length).toBe(size);
98
- expect(ArrayUtility.byteArraysEqual(inputBytes, plaintextBytes)).toBe(true);
99
- }
100
- });
101
- });
102
- describe('ECDH-ES+A256KW', () => {
103
- it('should be able to wrap and unwrap a CEK correctly', async () => {
44
+ describe('X25519-HKDF-SHA256+A256KW', () => {
45
+ it('should wrap and unwrap a CEK correctly', async () => {
104
46
  const recipientPrivateKey = await X25519.generateKey();
105
47
  const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
106
- const ephemeralPrivateKey = await X25519.generateKey();
107
48
  const cek = TestDataGenerator.randomBytes(32);
108
- const wrappedKey = await Encryption.ecdhEsWrapKey(ephemeralPrivateKey, recipientPublicKey, cek);
109
- const ephemeralPublicKey = await X25519.getPublicKey({ key: ephemeralPrivateKey });
110
- const unwrappedCek = await Encryption.ecdhEsUnwrapKey(recipientPrivateKey, ephemeralPublicKey, wrappedKey);
49
+ const keyId = await Encryption.getKeyId(recipientPublicKey);
50
+ const { encryptedKey, ephemeralPublicKey } = await Encryption.wrapKey(recipientPublicKey, cek, { derivationScheme: KeyDerivationScheme.ProtocolPath, keyId, publicKey: recipientPublicKey });
51
+ const unwrappedCek = await Encryption.unwrapKey(recipientPrivateKey, {
52
+ algorithm: KeyAgreementAlgorithm.X25519HkdfSha256A256Kw,
53
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
54
+ encryptedKey: Encoder.bytesToBase64Url(encryptedKey),
55
+ ephemeralPublicKey,
56
+ keyId,
57
+ });
111
58
  expect(ArrayUtility.byteArraysEqual(cek, unwrappedCek)).toBe(true);
112
59
  });
113
60
  it('should produce different wrapped keys for the same CEK and recipient', async () => {
114
61
  const recipientPrivateKey = await X25519.generateKey();
115
62
  const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
116
63
  const cek = TestDataGenerator.randomBytes(32);
117
- // Wrap the same CEK twice with different ephemeral keys
118
- const ephemeralKey1 = await X25519.generateKey();
119
- const ephemeralKey2 = await X25519.generateKey();
120
- const wrappedKey1 = await Encryption.ecdhEsWrapKey(ephemeralKey1, recipientPublicKey, cek);
121
- const wrappedKey2 = await Encryption.ecdhEsWrapKey(ephemeralKey2, recipientPublicKey, cek);
122
- // Different ephemeral keys must produce different wrapped keys
123
- expect(ArrayUtility.byteArraysEqual(wrappedKey1, wrappedKey2)).toBe(false);
124
- // Both must still unwrap to the same CEK
125
- const epk1 = await X25519.getPublicKey({ key: ephemeralKey1 });
126
- const epk2 = await X25519.getPublicKey({ key: ephemeralKey2 });
127
- const unwrapped1 = await Encryption.ecdhEsUnwrapKey(recipientPrivateKey, epk1, wrappedKey1);
128
- const unwrapped2 = await Encryption.ecdhEsUnwrapKey(recipientPrivateKey, epk2, wrappedKey2);
64
+ const keyId = await Encryption.getKeyId(recipientPublicKey);
65
+ const keyInput = { derivationScheme: KeyDerivationScheme.ProtocolPath, keyId, publicKey: recipientPublicKey };
66
+ const wrappedKey1 = await Encryption.wrapKey(recipientPublicKey, cek, keyInput);
67
+ const wrappedKey2 = await Encryption.wrapKey(recipientPublicKey, cek, keyInput);
68
+ expect(ArrayUtility.byteArraysEqual(wrappedKey1.encryptedKey, wrappedKey2.encryptedKey)).toBe(false);
69
+ const unwrapped1 = await Encryption.unwrapKey(recipientPrivateKey, {
70
+ algorithm: KeyAgreementAlgorithm.X25519HkdfSha256A256Kw,
71
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
72
+ encryptedKey: Encoder.bytesToBase64Url(wrappedKey1.encryptedKey),
73
+ ephemeralPublicKey: wrappedKey1.ephemeralPublicKey,
74
+ keyId,
75
+ });
76
+ const unwrapped2 = await Encryption.unwrapKey(recipientPrivateKey, {
77
+ algorithm: KeyAgreementAlgorithm.X25519HkdfSha256A256Kw,
78
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
79
+ encryptedKey: Encoder.bytesToBase64Url(wrappedKey2.encryptedKey),
80
+ ephemeralPublicKey: wrappedKey2.ephemeralPublicKey,
81
+ keyId,
82
+ });
129
83
  expect(ArrayUtility.byteArraysEqual(unwrapped1, cek)).toBe(true);
130
84
  expect(ArrayUtility.byteArraysEqual(unwrapped2, cek)).toBe(true);
131
85
  });
132
86
  });
133
- describe('buildJwe', () => {
134
- it('should build a valid JWE structure with recipients', async () => {
135
- const recipientPrivateKey = await X25519.generateKey();
136
- const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
137
- const cek = TestDataGenerator.randomBytes(32);
138
- const iv = TestDataGenerator.randomBytes(12);
139
- const tag = TestDataGenerator.randomBytes(16);
140
- const jwe = await Encryption.buildJwe({
141
- key: cek,
142
- initializationVector: iv,
143
- authenticationTag: tag,
144
- keyEncryptionInputs: [{
145
- publicKeyId: 'did:example:alice#enc',
146
- publicKey: recipientPublicKey,
147
- derivationScheme: 'protocolPath',
148
- }],
149
- }, tag);
150
- expect(jwe.protected).toBeDefined();
151
- expect(jwe.iv).toBeDefined();
152
- expect(jwe.tag).toBeDefined();
153
- expect(jwe.recipients).toHaveLength(1);
154
- expect(jwe.recipients[0].header.kid).toBe('did:example:alice#enc');
155
- expect(jwe.recipients[0].header.epk).toBeDefined();
156
- expect(jwe.recipients[0].encrypted_key).toBeDefined();
157
- // Verify protected header
158
- const protectedHeader = Encryption.parseProtectedHeader(jwe.protected);
159
- expect(protectedHeader.alg).toBe('ECDH-ES+A256KW');
160
- expect(protectedHeader.enc).toBe('A256GCM');
161
- });
162
- it('should produce different ephemeral keys and wrapped CEKs for identical inputs', async () => {
87
+ describe('buildEncryptionProperty', () => {
88
+ it('should build a valid RecordsWrite encryption object', async () => {
163
89
  const recipientPrivateKey = await X25519.generateKey();
164
90
  const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
165
91
  const cek = TestDataGenerator.randomBytes(32);
166
- const iv = TestDataGenerator.randomBytes(12);
167
- const tag = TestDataGenerator.randomBytes(16);
168
- const encryptionInput = {
169
- key: cek,
92
+ const iv = TestDataGenerator.randomBytes(16);
93
+ const keyId = await Encryption.getKeyId(recipientPublicKey);
94
+ const encryption = await Encryption.buildEncryptionProperty({
170
95
  initializationVector: iv,
171
- authenticationTag: tag,
172
- keyEncryptionInputs: [{
173
- publicKeyId: 'did:example:alice#enc',
174
- publicKey: recipientPublicKey,
175
- derivationScheme: 'protocolPath',
176
- }],
177
- };
178
- const jwe1 = await Encryption.buildJwe(encryptionInput, tag);
179
- const jwe2 = await Encryption.buildJwe(encryptionInput, tag);
180
- // Each call generates a fresh ephemeral key pair — epk values must differ
181
- const epk1 = jwe1.recipients[0].header.epk;
182
- const epk2 = jwe2.recipients[0].header.epk;
183
- expect(JSON.stringify(epk1)).not.toBe(JSON.stringify(epk2));
184
- // Different ephemeral keys produce different wrapped CEKs
185
- expect(jwe1.recipients[0].encrypted_key).not.toBe(jwe2.recipients[0].encrypted_key);
186
- // Both wrapped CEKs must still unwrap to the same original CEK
187
- const unwrapped1 = await Encryption.ecdhEsUnwrapKey(recipientPrivateKey, epk1, Encoder.base64UrlToBytes(jwe1.recipients[0].encrypted_key));
188
- const unwrapped2 = await Encryption.ecdhEsUnwrapKey(recipientPrivateKey, epk2, Encoder.base64UrlToBytes(jwe2.recipients[0].encrypted_key));
189
- expect(ArrayUtility.byteArraysEqual(unwrapped1, cek)).toBe(true);
190
- expect(ArrayUtility.byteArraysEqual(unwrapped2, cek)).toBe(true);
191
- });
192
- it('should attach derivedPublicKey for ProtocolContext scheme', async () => {
193
- const recipientPrivateKey = await X25519.generateKey();
194
- const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
195
- const cek = TestDataGenerator.randomBytes(32);
196
- const iv = TestDataGenerator.randomBytes(12);
197
- const tag = TestDataGenerator.randomBytes(16);
198
- const jwe = await Encryption.buildJwe({
199
96
  key: cek,
200
- initializationVector: iv,
201
- authenticationTag: tag,
202
97
  keyEncryptionInputs: [{
203
- publicKeyId: 'did:example:alice#enc',
204
- publicKey: recipientPublicKey,
205
- derivationScheme: KeyDerivationScheme.ProtocolContext,
206
- }],
207
- }, tag);
208
- // ProtocolContext recipients should have derivedPublicKey set to the input public key
209
- expect(jwe.recipients).toHaveLength(1);
210
- expect(jwe.recipients[0].header.derivedPublicKey).toBeDefined();
211
- expect(jwe.recipients[0].header.derivedPublicKey.kty).toBe(recipientPublicKey.kty);
212
- });
213
- it('should not attach derivedPublicKey for non-ProtocolContext schemes', async () => {
214
- const recipientPrivateKey = await X25519.generateKey();
215
- const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
216
- const cek = TestDataGenerator.randomBytes(32);
217
- const iv = TestDataGenerator.randomBytes(12);
218
- const tag = TestDataGenerator.randomBytes(16);
219
- const jwe = await Encryption.buildJwe({
220
- key: cek,
221
- initializationVector: iv,
222
- authenticationTag: tag,
223
- keyEncryptionInputs: [{
224
- publicKeyId: 'did:example:alice#enc',
225
- publicKey: recipientPublicKey,
226
98
  derivationScheme: KeyDerivationScheme.ProtocolPath,
99
+ keyId,
100
+ publicKey: recipientPublicKey,
227
101
  }],
228
- }, tag);
229
- // Non-ProtocolContext recipients should NOT have derivedPublicKey
230
- expect(jwe.recipients).toHaveLength(1);
231
- expect(jwe.recipients[0].header.derivedPublicKey).toBeUndefined();
232
- });
233
- });
234
- describe('error handling', () => {
235
- it('should throw on corrupted ciphertext (wrong tag)', async () => {
236
- const key = TestDataGenerator.randomBytes(32);
237
- const iv = TestDataGenerator.randomBytes(12);
238
- const plaintext = TestDataGenerator.randomBytes(64);
239
- const { ciphertext } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, plaintext);
240
- // Use a wrong tag
241
- const wrongTag = TestDataGenerator.randomBytes(16);
242
- await expect(Encryption.aeadDecrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, ciphertext, wrongTag)).rejects.toThrow();
243
- });
244
- it('should throw on corrupted ciphertext stream (wrong tag)', async () => {
245
- const key = TestDataGenerator.randomBytes(32);
246
- const iv = TestDataGenerator.randomBytes(12);
247
- const plaintext = TestDataGenerator.randomBytes(64);
248
- const plaintextStream = DataStream.fromBytes(plaintext);
249
- const { ciphertextStream } = await Encryption.aeadEncryptStream(ContentEncryptionAlgorithm.A256GCM, key, iv, plaintextStream);
250
- // Use a wrong tag to trigger decryption error
251
- const wrongTag = TestDataGenerator.randomBytes(16);
252
- await expect(Encryption.aeadDecryptStream(ContentEncryptionAlgorithm.A256GCM, key, iv, ciphertextStream, wrongTag)).rejects.toThrow();
253
- });
254
- it('should throw on decryption with wrong key', async () => {
255
- const key = TestDataGenerator.randomBytes(32);
256
- const wrongKey = TestDataGenerator.randomBytes(32);
257
- const iv = TestDataGenerator.randomBytes(12);
258
- const plaintext = TestDataGenerator.randomBytes(64);
259
- const { ciphertext, tag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, key, iv, plaintext);
260
- await expect(Encryption.aeadDecrypt(ContentEncryptionAlgorithm.A256GCM, wrongKey, iv, ciphertext, tag)).rejects.toThrow();
261
- });
262
- it('should throw for unsupported algorithm in aeadEncrypt', async () => {
263
- const key = TestDataGenerator.randomBytes(32);
264
- const iv = TestDataGenerator.randomBytes(12);
265
- const plaintext = TestDataGenerator.randomBytes(64);
266
- await expect(Encryption.aeadEncrypt('INVALID_ALG', key, iv, plaintext)).rejects.toThrow('Unsupported content encryption algorithm');
267
- });
268
- it('should throw for unsupported algorithm in aeadDecrypt', async () => {
269
- const key = TestDataGenerator.randomBytes(32);
270
- const iv = TestDataGenerator.randomBytes(12);
271
- const ciphertext = TestDataGenerator.randomBytes(64);
272
- const tag = TestDataGenerator.randomBytes(16);
273
- await expect(Encryption.aeadDecrypt('INVALID_ALG', key, iv, ciphertext, tag)).rejects.toThrow('Unsupported content encryption algorithm');
102
+ });
103
+ expect(encryption.algorithm).toBe(ContentEncryptionAlgorithm.A256CTR);
104
+ expect(encryption.initializationVector).toBe(Encoder.bytesToBase64Url(iv));
105
+ expect(encryption.keyEncryption).toHaveLength(1);
106
+ expect(encryption.keyEncryption[0].keyId).toBe(keyId);
107
+ expect(encryption.keyEncryption[0].derivationScheme).toBe(KeyDerivationScheme.ProtocolPath);
108
+ const unwrappedCek = await Encryption.unwrapKey(recipientPrivateKey, encryption.keyEncryption[0]);
109
+ expect(ArrayUtility.byteArraysEqual(unwrappedCek, cek)).toBe(true);
274
110
  });
275
111
  });
276
112
  describe('Records.decrypt', () => {
277
113
  it('should throw when message has no encryption property', async () => {
278
- // Create a minimal RecordsWriteMessage without encryption
279
114
  const messageWithoutEncryption = {
280
115
  descriptor: {
281
- interface: 'Records',
282
- method: 'Write',
283
116
  dataCid: 'bafyreib3e4uj32nq5ql3q',
117
+ dataFormat: 'application/json',
284
118
  dataSize: 100,
285
119
  dateCreated: '2024-01-01T00:00:00.000000Z',
120
+ interface: 'Records',
286
121
  messageTimestamp: '2024-01-01T00:00:00.000000Z',
287
- dataFormat: 'application/json',
122
+ method: 'Write',
123
+ protocol: 'https://example.com/protocol',
124
+ protocolPath: 'note',
288
125
  },
289
- // no encryption property
290
126
  };
291
127
  const dummyKey = await X25519.generateKey();
292
- const cipherStream = DataStream.fromBytes(TestDataGenerator.randomBytes(32));
293
128
  await expect(Records.decrypt(messageWithoutEncryption, {
129
+ derivedPrivateKey: dummyKey,
130
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
294
131
  rootKeyId: 'did:example:alice#enc',
132
+ }, DataStream.fromBytes(TestDataGenerator.randomBytes(32)))).rejects.toThrow(DwnErrorCode.RecordsDecryptNoMatchingKeyEncryptedFound);
133
+ });
134
+ it('should validate encrypted data CID before returning plaintext', async () => {
135
+ const recipientPrivateKey = await X25519.generateKey();
136
+ const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
137
+ const cek = TestDataGenerator.randomBytes(32);
138
+ const iv = TestDataGenerator.randomBytes(16);
139
+ const plaintext = Encoder.stringToBytes('secret');
140
+ const ciphertext = await Encryption.encrypt(ContentEncryptionAlgorithm.A256CTR, cek, iv, plaintext);
141
+ const keyId = await Encryption.getKeyId(recipientPublicKey);
142
+ const encryption = await Encryption.buildEncryptionProperty({
143
+ initializationVector: iv,
144
+ key: cek,
145
+ keyEncryptionInputs: [{
146
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
147
+ keyId,
148
+ publicKey: recipientPublicKey,
149
+ }],
150
+ });
151
+ const wrongCiphertext = TestDataGenerator.randomBytes(ciphertext.length);
152
+ const message = {
153
+ descriptor: {
154
+ dataCid: await Cid.computeDagPbCidFromBytes(ciphertext),
155
+ dataFormat: 'text/plain',
156
+ dataSize: ciphertext.byteLength,
157
+ dateCreated: '2024-01-01T00:00:00.000000Z',
158
+ interface: 'Records',
159
+ messageTimestamp: '2024-01-01T00:00:00.000000Z',
160
+ method: 'Write',
161
+ protocol: 'https://example.com/protocol',
162
+ protocolPath: 'note',
163
+ },
164
+ encryption,
165
+ recordId: 'test-record-id',
166
+ };
167
+ await expect(Records.decrypt(message, {
168
+ derivedPrivateKey: recipientPrivateKey,
295
169
  derivationScheme: KeyDerivationScheme.ProtocolPath,
296
- derivedPrivateKey: dummyKey,
297
- }, cipherStream)).rejects.toThrow(DwnErrorCode.RecordsDecryptNoMatchingKeyEncryptedFound);
170
+ rootKeyId: 'did:example:alice#enc',
171
+ }, DataStream.fromBytes(wrongCiphertext))).rejects.toThrow(DwnErrorCode.RecordsWriteDataCidMismatch);
298
172
  });
299
173
  it('should propagate errors thrown by KeyDecrypter.decrypt()', async () => {
300
- // Build a minimal encrypted message that has enough structure to reach the callback path
301
174
  const recipientPrivateKey = await X25519.generateKey();
302
175
  const recipientPublicKey = await X25519.getPublicKey({ key: recipientPrivateKey });
303
176
  const cek = TestDataGenerator.randomBytes(32);
304
- const iv = TestDataGenerator.randomBytes(12);
177
+ const iv = TestDataGenerator.randomBytes(16);
305
178
  const plaintext = TestDataGenerator.randomBytes(64);
306
- const { tag } = await Encryption.aeadEncrypt(ContentEncryptionAlgorithm.A256GCM, cek, iv, plaintext);
307
- const jwe = await Encryption.buildJwe({
308
- key: cek,
179
+ const ciphertext = await Encryption.encrypt(ContentEncryptionAlgorithm.A256CTR, cek, iv, plaintext);
180
+ const keyId = await Encryption.getKeyId(recipientPublicKey);
181
+ const encryption = await Encryption.buildEncryptionProperty({
309
182
  initializationVector: iv,
310
- authenticationTag: tag,
183
+ key: cek,
311
184
  keyEncryptionInputs: [{
312
- publicKeyId: 'did:example:alice#enc',
313
- publicKey: recipientPublicKey,
314
185
  derivationScheme: KeyDerivationScheme.ProtocolPath,
186
+ keyId,
187
+ publicKey: recipientPublicKey,
315
188
  }],
316
- }, tag);
317
- // Construct a minimal RecordsWriteMessage with the JWE encryption property
189
+ });
318
190
  const message = {
319
191
  descriptor: {
320
- interface: 'Records',
321
- method: 'Write',
322
- dataCid: 'bafyreib3e4uj32nq5ql3q',
323
- dataSize: 100,
192
+ dataCid: await Cid.computeDagPbCidFromBytes(ciphertext),
193
+ dataFormat: 'application/octet-stream',
194
+ dataSize: ciphertext.byteLength,
324
195
  dateCreated: '2024-01-01T00:00:00.000000Z',
196
+ interface: 'Records',
325
197
  messageTimestamp: '2024-01-01T00:00:00.000000Z',
326
- dataFormat: 'application/json',
198
+ method: 'Write',
327
199
  protocol: 'https://example.com/protocol',
328
- protocolPath: 'foo',
200
+ protocolPath: 'note',
329
201
  },
330
- encryption: jwe,
202
+ encryption,
331
203
  recordId: 'test-record-id',
332
204
  };
333
- // Create a KeyDecrypter that throws an error
334
205
  const failingDecrypter = {
335
- rootKeyId: 'did:example:alice#enc',
336
- derivationScheme: KeyDerivationScheme.ProtocolPath,
337
206
  decrypt: async () => {
338
207
  throw new Error('KeyDecrypter: key derivation failed');
339
208
  },
209
+ derivationScheme: KeyDerivationScheme.ProtocolPath,
210
+ derivePublicKey: async () => recipientPublicKey,
211
+ rootKeyId: 'did:example:alice#enc',
340
212
  };
341
- const cipherStream = DataStream.fromBytes(TestDataGenerator.randomBytes(64));
342
- // The error from KeyDecrypter.decrypt() should propagate directly
343
- await expect(Records.decrypt(message, failingDecrypter, cipherStream)).rejects.toThrow('KeyDecrypter: key derivation failed');
213
+ await expect(Records.decrypt(message, failingDecrypter, DataStream.fromBytes(ciphertext))).rejects.toThrow('KeyDecrypter: key derivation failed');
344
214
  });
345
215
  });
346
216
  });
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.spec.js","sourceRoot":"","sources":["../../../../tests/utils/encryption.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encryption.spec.js","sourceRoot":"","sources":["../../../../tests/utils/encryption.spec.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ describe('PermissionScopeMatcher', () => {
8
8
  expect(PermissionScopeMatcher.matches({ protocol: 'https://example.com/protocol' }, { protocol: 'https://example.com/protocol' })).toBe(true);
9
9
  expect(PermissionScopeMatcher.matches({ protocol: 'https://example.com/protocol' }, { protocol: 'https://example.com/protocol-sibling' })).toBe(false);
10
10
  });
11
- it('matches protocolPath scopes exactly', () => {
11
+ it('matches protocolPath scopes by subtree', () => {
12
12
  const scope = {
13
13
  protocol: 'https://example.com/protocol',
14
14
  protocolPath: 'thread/message',
@@ -20,6 +20,10 @@ describe('PermissionScopeMatcher', () => {
20
20
  expect(PermissionScopeMatcher.matches(scope, {
21
21
  protocol: 'https://example.com/protocol',
22
22
  protocolPath: 'thread/message/reaction',
23
+ })).toBe(true);
24
+ expect(PermissionScopeMatcher.matches(scope, {
25
+ protocol: 'https://example.com/protocol',
26
+ protocolPath: 'thread/messageEvil',
23
27
  })).toBe(false);
24
28
  });
25
29
  it('matches contextId scopes by context subtree', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"permission-scope.spec.js","sourceRoot":"","sources":["../../../../tests/utils/permission-scope.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-scope.spec.js","sourceRoot":"","sources":["../../../../tests/utils/permission-scope.spec.ts"],"names":[],"mappings":"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"}
@@ -31,11 +31,21 @@ describe('Records', () => {
31
31
  const path = Records.constructKeyDerivationPathUsingProtocolPathScheme(descriptor);
32
32
  expect(path).toEqual([KeyDerivationScheme.ProtocolPath, 'http://test-protocol.xyz', 'testRecord']);
33
33
  });
34
- });
35
- describe('constructKeyDerivationPathUsingProtocolContextScheme()', () => {
36
- it('should construct a valid key derivation path using protocol context scheme', async () => {
37
- const path = Records.constructKeyDerivationPathUsingProtocolContextScheme('rootId/childId');
38
- expect(path).toEqual([KeyDerivationScheme.ProtocolContext, 'rootId']);
34
+ it('should throw a scheme-specific error for unsupported derivation schemes', () => {
35
+ const message = {
36
+ descriptor: {
37
+ interface: DwnInterfaceName.Records,
38
+ method: DwnMethodName.Write,
39
+ dataCid: 'anyCid',
40
+ dataFormat: 'application/json',
41
+ dataSize: 123,
42
+ dateCreated: '2022-12-19T10:20:30.123456Z',
43
+ messageTimestamp: '2022-12-19T10:20:30.123456Z',
44
+ protocol: 'http://test-protocol.xyz',
45
+ protocolPath: 'testRecord',
46
+ },
47
+ };
48
+ expect(() => Records.constructKeyDerivationPath('unsupported', message)).toThrow(DwnErrorCode.RecordsDecryptUnsupportedKeyDerivationScheme);
39
49
  });
40
50
  });
41
51
  describe('convertDateSort()', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"records.spec.js","sourceRoot":"","sources":["../../../../tests/utils/records.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records.spec.js","sourceRoot":"","sources":["../../../../tests/utils/records.spec.ts"],"names":[],"mappings":"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"}