@enbox/dwn-sdk-js 0.0.4 → 0.0.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 (134) hide show
  1. package/dist/browser.mjs +135 -0
  2. package/dist/browser.mjs.map +7 -0
  3. package/dist/esm/generated/precompiled-validators.js +640 -510
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/src/core/auth.js +6 -1
  6. package/dist/esm/src/core/auth.js.map +1 -1
  7. package/dist/esm/src/core/dwn-error.js +3 -0
  8. package/dist/esm/src/core/dwn-error.js.map +1 -1
  9. package/dist/esm/src/core/protocol-authorization.js +4 -0
  10. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  11. package/dist/esm/src/dwn.js +14 -0
  12. package/dist/esm/src/dwn.js.map +1 -1
  13. package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
  14. package/dist/esm/src/handlers/records-delete.js +13 -0
  15. package/dist/esm/src/handlers/records-delete.js.map +1 -1
  16. package/dist/esm/src/handlers/records-subscribe.js +121 -66
  17. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  18. package/dist/esm/src/handlers/records-write.js +1 -1
  19. package/dist/esm/src/handlers/records-write.js.map +1 -1
  20. package/dist/esm/src/index.js +1 -1
  21. package/dist/esm/src/index.js.map +1 -1
  22. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  23. package/dist/esm/src/interfaces/records-delete.js +1 -0
  24. package/dist/esm/src/interfaces/records-delete.js.map +1 -1
  25. package/dist/esm/src/interfaces/records-subscribe.js +2 -0
  26. package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
  27. package/dist/esm/src/interfaces/records-write.js +28 -45
  28. package/dist/esm/src/interfaces/records-write.js.map +1 -1
  29. package/dist/esm/src/jose/jws/general/verifier.js +9 -1
  30. package/dist/esm/src/jose/jws/general/verifier.js.map +1 -1
  31. package/dist/esm/src/smt/smt-utils.js +1 -1
  32. package/dist/esm/src/smt/smt-utils.js.map +1 -1
  33. package/dist/esm/src/types/records-types.js.map +1 -1
  34. package/dist/esm/src/utils/encryption.js +221 -78
  35. package/dist/esm/src/utils/encryption.js.map +1 -1
  36. package/dist/esm/src/utils/hd-key.js +6 -7
  37. package/dist/esm/src/utils/hd-key.js.map +1 -1
  38. package/dist/esm/src/utils/protocols.js +12 -10
  39. package/dist/esm/src/utils/protocols.js.map +1 -1
  40. package/dist/esm/src/utils/records.js +33 -44
  41. package/dist/esm/src/utils/records.js.map +1 -1
  42. package/dist/esm/tests/features/protocol-composition.spec.js +26 -21
  43. package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
  44. package/dist/esm/tests/features/records-tags.spec.js +5 -5
  45. package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
  46. package/dist/esm/tests/handlers/records-delete.spec.js +120 -2
  47. package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
  48. package/dist/esm/tests/handlers/records-read.spec.js +25 -26
  49. package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
  50. package/dist/esm/tests/handlers/records-subscribe.spec.js +103 -0
  51. package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
  52. package/dist/esm/tests/handlers/records-write.spec.js +124 -10
  53. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  54. package/dist/esm/tests/interfaces/messages-get.spec.js +3 -2
  55. package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -1
  56. package/dist/esm/tests/interfaces/records-write.spec.js +43 -34
  57. package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
  58. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +4 -4
  59. package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
  60. package/dist/esm/tests/utils/encryption-callbacks.spec.js +21 -24
  61. package/dist/esm/tests/utils/encryption-callbacks.spec.js.map +1 -1
  62. package/dist/esm/tests/utils/encryption.spec.js +69 -66
  63. package/dist/esm/tests/utils/encryption.spec.js.map +1 -1
  64. package/dist/esm/tests/utils/filters.spec.js +1 -0
  65. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  66. package/dist/esm/tests/utils/test-data-generator.js +28 -7
  67. package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
  68. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +1 -1
  69. package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -1
  70. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  71. package/dist/types/src/core/auth.d.ts +3 -1
  72. package/dist/types/src/core/auth.d.ts.map +1 -1
  73. package/dist/types/src/core/dwn-error.d.ts +3 -0
  74. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  75. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  76. package/dist/types/src/dwn.d.ts +12 -0
  77. package/dist/types/src/dwn.d.ts.map +1 -1
  78. package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
  79. package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
  80. package/dist/types/src/handlers/records-subscribe.d.ts +17 -28
  81. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  82. package/dist/types/src/index.d.ts +4 -4
  83. package/dist/types/src/index.d.ts.map +1 -1
  84. package/dist/types/src/interfaces/records-delete.d.ts +4 -0
  85. package/dist/types/src/interfaces/records-delete.d.ts.map +1 -1
  86. package/dist/types/src/interfaces/records-subscribe.d.ts +4 -1
  87. package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
  88. package/dist/types/src/interfaces/records-write.d.ts +23 -53
  89. package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
  90. package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -1
  91. package/dist/types/src/types/encryption-types.d.ts +9 -8
  92. package/dist/types/src/types/encryption-types.d.ts.map +1 -1
  93. package/dist/types/src/types/protocols-types.d.ts +65 -16
  94. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  95. package/dist/types/src/types/records-types.d.ts +7 -26
  96. package/dist/types/src/types/records-types.d.ts.map +1 -1
  97. package/dist/types/src/utils/encryption.d.ts +157 -28
  98. package/dist/types/src/utils/encryption.d.ts.map +1 -1
  99. package/dist/types/src/utils/hd-key.d.ts +2 -3
  100. package/dist/types/src/utils/hd-key.d.ts.map +1 -1
  101. package/dist/types/src/utils/protocols.d.ts.map +1 -1
  102. package/dist/types/src/utils/records.d.ts +3 -4
  103. package/dist/types/src/utils/records.d.ts.map +1 -1
  104. package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
  105. package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
  106. package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
  107. package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
  108. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  109. package/dist/types/tests/utils/test-data-generator.d.ts +7 -0
  110. package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
  111. package/package.json +8 -19
  112. package/src/core/auth.ts +12 -1
  113. package/src/core/dwn-error.ts +3 -0
  114. package/src/core/protocol-authorization.ts +8 -0
  115. package/src/dwn.ts +15 -0
  116. package/src/handlers/protocols-configure.ts +4 -4
  117. package/src/handlers/records-delete.ts +12 -0
  118. package/src/handlers/records-subscribe.ts +174 -75
  119. package/src/handlers/records-write.ts +1 -1
  120. package/src/index.ts +4 -4
  121. package/src/interfaces/protocols-configure.ts +5 -5
  122. package/src/interfaces/records-delete.ts +9 -3
  123. package/src/interfaces/records-subscribe.ts +6 -1
  124. package/src/interfaces/records-write.ts +33 -105
  125. package/src/jose/jws/general/verifier.ts +11 -1
  126. package/src/smt/smt-utils.ts +1 -1
  127. package/src/types/encryption-types.ts +9 -8
  128. package/src/types/protocols-types.ts +72 -18
  129. package/src/types/records-types.ts +7 -29
  130. package/src/utils/encryption.ts +346 -88
  131. package/src/utils/hd-key.ts +9 -10
  132. package/src/utils/protocols.ts +15 -13
  133. package/src/utils/records.ts +47 -55
  134. package/dist/bundles/dwn.js +0 -151
@@ -7,113 +7,256 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import * as crypto from 'crypto';
11
- import * as eciesjs from 'eciesjs';
12
- // compress publicKey for message encryption
13
- eciesjs.ECIES_CONFIG.isEphemeralKeyCompressed = true;
10
+ import { concatBytes } from '@noble/ciphers/utils';
11
+ import { Encoder } from './encoder.js';
12
+ import { KeyDerivationScheme } from './hd-key.js';
13
+ import { AesGcm, AesKw, ConcatKdf, X25519, XChaCha20Poly1305 } from '@enbox/crypto';
14
14
  /**
15
- * Utility class for performing common, non-DWN specific encryption operations.
15
+ * Content encryption algorithms supported by the DWN.
16
+ * Both are AEAD (Authenticated Encryption with Associated Data) ciphers.
17
+ */
18
+ export var ContentEncryptionAlgorithm;
19
+ (function (ContentEncryptionAlgorithm) {
20
+ /** AES-256 in Galois/Counter Mode. NIST-approved, hardware-accelerated. 96-bit nonce. */
21
+ ContentEncryptionAlgorithm["A256GCM"] = "A256GCM";
22
+ /** XChaCha20-Poly1305. 192-bit nonce (safe to randomize). Constant-time. */
23
+ ContentEncryptionAlgorithm["XC20P"] = "XC20P";
24
+ })(ContentEncryptionAlgorithm || (ContentEncryptionAlgorithm = {}));
25
+ /**
26
+ * Key agreement algorithm used by the DWN.
27
+ * ECDH-ES with X25519 key agreement and AES-256 Key Wrap.
28
+ */
29
+ export var KeyAgreementAlgorithm;
30
+ (function (KeyAgreementAlgorithm) {
31
+ KeyAgreementAlgorithm["EcdhEsA256kw"] = "ECDH-ES+A256KW";
32
+ })(KeyAgreementAlgorithm || (KeyAgreementAlgorithm = {}));
33
+ /** Size of the AES-GCM authentication tag in bytes. */
34
+ const AES_GCM_TAG_LENGTH_BYTES = 16;
35
+ /** Size of the Poly1305 authentication tag in bytes. */
36
+ const POLY1305_TAG_LENGTH_BYTES = 16;
37
+ /**
38
+ * Utility class for DWN encryption operations using JWE (RFC 7516).
39
+ * Uses ECDH-ES+A256KW key agreement with X25519 and either AES-256-GCM or XChaCha20-Poly1305
40
+ * for authenticated content encryption.
16
41
  */
17
42
  export class Encryption {
18
43
  /**
19
- * Encrypts the given plaintext stream using AES-256-CTR algorithm.
44
+ * Encrypts data using an AEAD cipher (A256GCM or XC20P).
45
+ * Returns ciphertext with the authentication tag appended.
20
46
  */
21
- static aes256CtrEncrypt(key, initializationVector, plaintextStream) {
47
+ static aeadEncrypt(algorithm, keyBytes, iv, plaintext) {
22
48
  return __awaiter(this, void 0, void 0, function* () {
23
- const cipher = crypto.createCipheriv('aes-256-ctr', key, initializationVector);
24
- const transform = new TransformStream({
25
- transform(chunk, controller) {
26
- controller.enqueue(new Uint8Array(cipher.update(chunk)));
27
- },
28
- flush(controller) {
29
- const finalChunk = cipher.final();
30
- if (finalChunk.length > 0) {
31
- controller.enqueue(new Uint8Array(finalChunk));
32
- }
49
+ if (algorithm === ContentEncryptionAlgorithm.A256GCM) {
50
+ const keyJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(keyBytes), alg: 'A256GCM' };
51
+ // Web Crypto AES-GCM returns ciphertext || tag
52
+ const combined = yield AesGcm.encrypt({ data: plaintext, iv, key: keyJwk });
53
+ const ciphertext = combined.slice(0, combined.length - AES_GCM_TAG_LENGTH_BYTES);
54
+ const tag = combined.slice(combined.length - AES_GCM_TAG_LENGTH_BYTES);
55
+ return { ciphertext, tag };
56
+ }
57
+ else if (algorithm === ContentEncryptionAlgorithm.XC20P) {
58
+ // @noble/ciphers XChaCha20-Poly1305 returns ciphertext || tag
59
+ const combined = yield XChaCha20Poly1305.encryptRaw({ data: plaintext, keyBytes, nonce: iv });
60
+ const ciphertext = combined.slice(0, combined.length - POLY1305_TAG_LENGTH_BYTES);
61
+ const tag = combined.slice(combined.length - POLY1305_TAG_LENGTH_BYTES);
62
+ return { ciphertext, tag };
63
+ }
64
+ else {
65
+ throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
66
+ }
67
+ });
68
+ }
69
+ /**
70
+ * Decrypts data using an AEAD cipher (A256GCM or XC20P).
71
+ * Expects ciphertext and tag as separate inputs.
72
+ */
73
+ static aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ // Both Web Crypto (AES-GCM) and @noble/ciphers (XChaCha20-Poly1305) expect ciphertext || tag
76
+ const combined = concatBytes(ciphertext, tag);
77
+ if (algorithm === ContentEncryptionAlgorithm.A256GCM) {
78
+ const keyJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(keyBytes), alg: 'A256GCM' };
79
+ return AesGcm.decrypt({ data: combined, iv, key: keyJwk });
80
+ }
81
+ else if (algorithm === ContentEncryptionAlgorithm.XC20P) {
82
+ return XChaCha20Poly1305.decryptRaw({ data: combined, keyBytes, nonce: iv });
83
+ }
84
+ else {
85
+ throw new Error(`Unsupported content encryption algorithm: ${algorithm}`);
86
+ }
87
+ });
88
+ }
89
+ /**
90
+ * Encrypts data as a ReadableStream using an AEAD cipher.
91
+ * Collects all chunks, encrypts, and returns a new stream of ciphertext || tag.
92
+ * The iv and tag are NOT embedded in the stream — they are stored in the JWE structure.
93
+ */
94
+ static aeadEncryptStream(algorithm, keyBytes, iv, plaintextStream) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const plaintext = yield Encryption.readStream(plaintextStream);
97
+ const { ciphertext, tag } = yield Encryption.aeadEncrypt(algorithm, keyBytes, iv, plaintext);
98
+ const ciphertextStream = new ReadableStream({
99
+ start(controller) {
100
+ controller.enqueue(ciphertext);
101
+ controller.close();
33
102
  }
34
103
  });
35
- return plaintextStream.pipeThrough(transform);
104
+ return { ciphertextStream, tag };
36
105
  });
37
106
  }
38
107
  /**
39
- * Decrypts the given cipher stream using AES-256-CTR algorithm.
108
+ * Decrypts a ciphertext stream using an AEAD cipher.
109
+ * Returns a ReadableStream of plaintext.
40
110
  */
41
- static aes256CtrDecrypt(key, initializationVector, cipherStream) {
111
+ static aeadDecryptStream(algorithm, keyBytes, iv, ciphertextStream, tag) {
42
112
  return __awaiter(this, void 0, void 0, function* () {
43
- const decipher = crypto.createDecipheriv('aes-256-ctr', key, initializationVector);
44
- const transform = new TransformStream({
45
- transform(chunk, controller) {
46
- controller.enqueue(new Uint8Array(decipher.update(chunk)));
47
- },
48
- flush(controller) {
49
- const finalChunk = decipher.final();
50
- if (finalChunk.length > 0) {
51
- controller.enqueue(new Uint8Array(finalChunk));
52
- }
113
+ const ciphertext = yield Encryption.readStream(ciphertextStream);
114
+ const plaintext = yield Encryption.aeadDecrypt(algorithm, keyBytes, iv, ciphertext, tag);
115
+ return new ReadableStream({
116
+ start(controller) {
117
+ controller.enqueue(plaintext);
118
+ controller.close();
53
119
  }
54
120
  });
55
- return cipherStream.pipeThrough(transform);
56
121
  });
57
122
  }
58
123
  /**
59
- * Encrypts the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme)
60
- * with SECP256K1 for the asymmetric calculations, HKDF as the key-derivation function,
61
- * and AES-GCM for the symmetric encryption and MAC algorithms.
124
+ * Performs ECDH-ES key agreement with X25519 and wraps the CEK using AES-256 Key Wrap.
125
+ *
126
+ * @param ephemeralPrivateKey - Ephemeral X25519 private key (JWK).
127
+ * @param recipientPublicKey - Recipient's X25519 public key (JWK).
128
+ * @param cek - The Content Encryption Key to wrap.
129
+ * @returns The wrapped CEK bytes.
62
130
  */
63
- static eciesSecp256k1Encrypt(publicKeyBytes, plaintext) {
131
+ static ecdhEsWrapKey(ephemeralPrivateKey, recipientPublicKey, cek) {
64
132
  return __awaiter(this, void 0, void 0, function* () {
65
- // underlying library requires Buffer as input
66
- const publicKey = Buffer.from(publicKeyBytes);
67
- const plaintextBuffer = Buffer.from(plaintext);
68
- const cryptogram = eciesjs.encrypt(publicKey, plaintextBuffer);
69
- // split cryptogram returned into constituent parts
70
- let start = 0;
71
- let end = Encryption.isEphemeralKeyCompressed ? 33 : 65;
72
- const ephemeralPublicKey = cryptogram.subarray(start, end);
73
- start = end;
74
- end += eciesjs.ECIES_CONFIG.symmetricNonceLength;
75
- const initializationVector = cryptogram.subarray(start, end);
76
- start = end;
77
- end += 16; // eciesjs.consts.AEAD_TAG_LENGTH
78
- const messageAuthenticationCode = cryptogram.subarray(start, end);
79
- const ciphertext = cryptogram.subarray(end);
80
- return {
81
- ciphertext,
82
- ephemeralPublicKey,
83
- initializationVector,
84
- messageAuthenticationCode
85
- };
133
+ // 1. ECDH shared secret
134
+ const sharedSecret = yield X25519.sharedSecret({
135
+ privateKeyA: ephemeralPrivateKey,
136
+ publicKeyB: recipientPublicKey,
137
+ });
138
+ // 2. Derive KEK via Concat KDF (RFC 7518 Section 4.6.2)
139
+ const kek = yield ConcatKdf.deriveKey({
140
+ sharedSecret,
141
+ keyDataLen: 256,
142
+ fixedInfo: {
143
+ algorithmId: 'A256KW',
144
+ partyUInfo: '',
145
+ partyVInfo: '',
146
+ suppPubInfo: 256,
147
+ },
148
+ });
149
+ // 3. AES-256 Key Wrap
150
+ const cekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(cek), alg: 'A256GCM' };
151
+ const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
152
+ const wrappedKey = yield AesKw.wrapKey({ unwrappedKey: cekJwk, encryptionKey: kekJwk });
153
+ return wrappedKey;
154
+ });
155
+ }
156
+ /**
157
+ * Performs ECDH-ES key agreement with X25519 and unwraps the CEK using AES-256 Key Unwrap.
158
+ *
159
+ * @param recipientPrivateKey - Recipient's X25519 private key (JWK).
160
+ * @param ephemeralPublicKey - Ephemeral X25519 public key from the JWE recipient header (JWK).
161
+ * @param wrappedKey - The wrapped CEK bytes.
162
+ * @returns The unwrapped CEK bytes.
163
+ */
164
+ static ecdhEsUnwrapKey(recipientPrivateKey, ephemeralPublicKey, wrappedKey) {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ // 1. ECDH shared secret
167
+ const sharedSecret = yield X25519.sharedSecret({
168
+ privateKeyA: recipientPrivateKey,
169
+ publicKeyB: ephemeralPublicKey,
170
+ });
171
+ // 2. Derive KEK via Concat KDF
172
+ const kek = yield ConcatKdf.deriveKey({
173
+ sharedSecret,
174
+ keyDataLen: 256,
175
+ fixedInfo: {
176
+ algorithmId: 'A256KW',
177
+ partyUInfo: '',
178
+ partyVInfo: '',
179
+ suppPubInfo: 256,
180
+ },
181
+ });
182
+ // 3. AES-256 Key Unwrap
183
+ const kekJwk = { kty: 'oct', k: Encoder.bytesToBase64Url(kek), alg: 'A256KW' };
184
+ const unwrappedJwk = yield AesKw.unwrapKey({
185
+ wrappedKeyBytes: wrappedKey,
186
+ wrappedKeyAlgorithm: 'A256GCM',
187
+ decryptionKey: kekJwk,
188
+ });
189
+ return Encoder.base64UrlToBytes(unwrappedJwk.k);
86
190
  });
87
191
  }
88
192
  /**
89
- * Decrypt the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme)
90
- * with SECP256K1 for the asymmetric calculations, HKDF as the key-derivation function,
91
- * and AES-GCM for the symmetric encryption and MAC algorithms.
193
+ * Builds a JWE encryption property structure from encryption input.
194
+ * The ciphertext (encrypted record data) is stored separately in the DataStore,
195
+ * so only the key wrapping metadata, IV, and authentication tag are included here.
196
+ *
197
+ * @param encryptionInput - Describes the CEK, IV, and recipient key encryption inputs.
198
+ * @param tag - The authentication tag produced by the AEAD cipher during data encryption.
92
199
  */
93
- static eciesSecp256k1Decrypt(input) {
200
+ static buildJwe(encryptionInput, tag) {
94
201
  return __awaiter(this, void 0, void 0, function* () {
95
- // underlying library requires Buffer as input
96
- const privateKeyBuffer = Buffer.from(input.privateKey);
97
- const eciesEncryptionOutput = Buffer.concat([
98
- input.ephemeralPublicKey,
99
- input.initializationVector,
100
- input.messageAuthenticationCode,
101
- input.ciphertext
102
- ]);
103
- const plaintext = eciesjs.decrypt(privateKeyBuffer, eciesEncryptionOutput);
104
- return plaintext;
202
+ var _a;
203
+ const enc = (_a = encryptionInput.algorithm) !== null && _a !== void 0 ? _a : ContentEncryptionAlgorithm.A256GCM;
204
+ const protectedHeader = {
205
+ alg: KeyAgreementAlgorithm.EcdhEsA256kw,
206
+ enc,
207
+ };
208
+ const protectedHeaderBase64url = Encoder.stringToBase64Url(JSON.stringify(protectedHeader));
209
+ const recipients = [];
210
+ for (const keyInput of encryptionInput.keyEncryptionInputs) {
211
+ // Generate ephemeral X25519 key pair for each recipient
212
+ const ephemeralPrivateKey = yield X25519.generateKey();
213
+ const ephemeralPublicKey = yield X25519.getPublicKey({ key: ephemeralPrivateKey });
214
+ // Wrap the CEK
215
+ const wrappedKey = yield Encryption.ecdhEsWrapKey(ephemeralPrivateKey, keyInput.publicKey, encryptionInput.key);
216
+ const recipientHeader = {
217
+ kid: keyInput.publicKeyId,
218
+ epk: ephemeralPublicKey,
219
+ derivationScheme: keyInput.derivationScheme,
220
+ };
221
+ // Attach derived public key for protocolContext scheme
222
+ if (keyInput.derivationScheme === KeyDerivationScheme.ProtocolContext) {
223
+ recipientHeader.derivedPublicKey = keyInput.publicKey;
224
+ }
225
+ recipients.push({
226
+ header: recipientHeader,
227
+ encrypted_key: Encoder.bytesToBase64Url(wrappedKey),
228
+ });
229
+ }
230
+ return {
231
+ protected: protectedHeaderBase64url,
232
+ iv: Encoder.bytesToBase64Url(encryptionInput.initializationVector),
233
+ tag: Encoder.bytesToBase64Url(tag),
234
+ recipients,
235
+ };
105
236
  });
106
237
  }
107
238
  /**
108
- * Expose eciesjs library configuration
239
+ * Parses the JWE protected header from its base64url encoding.
240
+ */
241
+ static parseProtectedHeader(protectedBase64url) {
242
+ return Encoder.base64UrlToObject(protectedBase64url);
243
+ }
244
+ /**
245
+ * Reads a ReadableStream to completion and returns all bytes concatenated.
109
246
  */
110
- static get isEphemeralKeyCompressed() {
111
- return eciesjs.ECIES_CONFIG.isEphemeralKeyCompressed;
247
+ static readStream(stream) {
248
+ return __awaiter(this, void 0, void 0, function* () {
249
+ const reader = stream.getReader();
250
+ const chunks = [];
251
+ for (;;) {
252
+ const { done, value } = yield reader.read();
253
+ if (done) {
254
+ break;
255
+ }
256
+ chunks.push(value);
257
+ }
258
+ return concatBytes(...chunks);
259
+ });
112
260
  }
113
261
  }
114
- export var EncryptionAlgorithm;
115
- (function (EncryptionAlgorithm) {
116
- EncryptionAlgorithm["Aes256Ctr"] = "A256CTR";
117
- EncryptionAlgorithm["EciesSecp256k1"] = "ECIES-ES256K";
118
- })(EncryptionAlgorithm || (EncryptionAlgorithm = {}));
119
262
  //# sourceMappingURL=encryption.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/utils/encryption.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,4CAA4C;AAC5C,OAAO,CAAC,YAAY,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB;;OAEG;IACI,MAAM,CAAO,gBAAgB,CAClC,GAAe,EAAE,oBAAgC,EAAE,eAA2C;;YAE9F,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAE/E,MAAM,SAAS,GAAG,IAAI,eAAe,CAAyB;gBAC5D,SAAS,CAAC,KAAK,EAAE,UAAU;oBACzB,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,KAAK,CAAC,UAAU;oBACd,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;oBAClC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAAC,CAAC;gBAChF,CAAC;aACF,CAAC,CAAC;YAEH,OAAO,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;KAAA;IAED;;OAEG;IACI,MAAM,CAAO,gBAAgB,CAClC,GAAe,EAAE,oBAAgC,EAAE,YAAwC;;YAE3F,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAEnF,MAAM,SAAS,GAAG,IAAI,eAAe,CAAyB;gBAC5D,SAAS,CAAC,KAAK,EAAE,UAAU;oBACzB,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBACD,KAAK,CAAC,UAAU;oBACd,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACpC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAAC,CAAC;gBAChF,CAAC;aACF,CAAC,CAAC;YAEH,OAAO,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;KAAA;IAED;;;;OAIG;IACI,MAAM,CAAO,qBAAqB,CAAC,cAA0B,EAAE,SAAqB;;YACzF,8CAA8C;YAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAE/D,mDAAmD;YACnD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,GAAG,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE3D,KAAK,GAAG,GAAG,CAAC;YACZ,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC;YACjD,MAAM,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAE7D,KAAK,GAAG,GAAG,CAAC;YACZ,GAAG,IAAI,EAAE,CAAC,CAAC,iCAAiC;YAC5C,MAAM,yBAAyB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAElE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE5C,OAAO;gBACL,UAAU;gBACV,kBAAkB;gBAClB,oBAAoB;gBACpB,yBAAyB;aAC1B,CAAC;QACJ,CAAC;KAAA;IAED;;;;OAIG;IACI,MAAM,CAAO,qBAAqB,CAAC,KAA2B;;YACnE,8CAA8C;YAC9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC1C,KAAK,CAAC,kBAAkB;gBACxB,KAAK,CAAC,oBAAoB;gBAC1B,KAAK,CAAC,yBAAyB;gBAC/B,KAAK,CAAC,UAAU;aACjB,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;YAE3E,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IAED;;OAEG;IACH,MAAM,KAAK,wBAAwB;QACjC,OAAO,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC;IACvD,CAAC;CACF;AAaD,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,sDAA+B,CAAA;AACjC,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B"}
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../src/utils/encryption.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { Encoder } from './encoder.js';
11
11
  import { getWebcryptoSubtle } from '@noble/ciphers/webcrypto';
12
- import { Secp256k1 } from './secp256k1.js';
12
+ import { X25519 } from '@enbox/crypto';
13
13
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
14
14
  export var KeyDerivationScheme;
15
15
  (function (KeyDerivationScheme) {
@@ -30,15 +30,15 @@ export var KeyDerivationScheme;
30
30
  export class HdKey {
31
31
  /**
32
32
  * Derives a descendant private key.
33
- * NOTE: currently only supports SECP256K1 keys.
33
+ * Uses X25519 keys for encryption key derivation.
34
34
  */
35
35
  static derivePrivateKey(ancestorKey, subDerivationPath) {
36
36
  return __awaiter(this, void 0, void 0, function* () {
37
37
  var _a;
38
- const ancestorPrivateKey = Secp256k1.privateJwkToBytes(ancestorKey.derivedPrivateKey);
38
+ const ancestorPrivateKey = yield X25519.privateKeyToBytes({ privateKey: ancestorKey.derivedPrivateKey });
39
39
  const ancestorPrivateKeyDerivationPath = (_a = ancestorKey.derivationPath) !== null && _a !== void 0 ? _a : [];
40
40
  const derivedPrivateKeyBytes = yield HdKey.derivePrivateKeyBytes(ancestorPrivateKey, subDerivationPath);
41
- const derivedPrivateKeyJwk = yield Secp256k1.privateKeyToJwk(derivedPrivateKeyBytes);
41
+ const derivedPrivateKeyJwk = yield X25519.bytesToPrivateKey({ privateKeyBytes: derivedPrivateKeyBytes });
42
42
  const derivedDescendantPrivateKey = {
43
43
  rootKeyId: ancestorKey.rootKeyId,
44
44
  derivationScheme: ancestorKey.derivationScheme,
@@ -50,12 +50,12 @@ export class HdKey {
50
50
  }
51
51
  /**
52
52
  * Derives a descendant public key from an ancestor private key.
53
- * NOTE: currently only supports SECP256K1 keys.
53
+ * Uses X25519 keys for encryption key derivation.
54
54
  */
55
55
  static derivePublicKey(ancestorKey, subDerivationPath) {
56
56
  return __awaiter(this, void 0, void 0, function* () {
57
57
  const derivedDescendantPrivateKey = yield HdKey.derivePrivateKey(ancestorKey, subDerivationPath);
58
- const derivedDescendantPublicKey = yield Secp256k1.getPublicJwk(derivedDescendantPrivateKey.derivedPrivateKey);
58
+ const derivedDescendantPublicKey = yield X25519.getPublicKey({ key: derivedDescendantPrivateKey.derivedPrivateKey });
59
59
  return derivedDescendantPublicKey;
60
60
  });
61
61
  }
@@ -80,7 +80,6 @@ export class HdKey {
80
80
  }
81
81
  /**
82
82
  * Derives a key using HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as defined in RFC 5869.
83
- * TODO: Consolidate HKDF implementation and usage with web5-js - https://github.com/enboxorg/enbox/issues/742
84
83
  */
85
84
  static deriveKeyUsingHkdf(params) {
86
85
  return __awaiter(this, void 0, void 0, function* () {
@@ -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":"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"}
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { Secp256k1 } from './secp256k1.js';
10
+ import { X25519 } from '@enbox/crypto';
11
11
  import { HdKey, KeyDerivationScheme } from '../utils/hd-key.js';
12
12
  /**
13
13
  * Parses a string that may be a cross-protocol reference in `alias:path` format.
@@ -68,18 +68,19 @@ export class Protocols {
68
68
  for (const key in ruleSet) {
69
69
  if (!key.startsWith('$')) {
70
70
  const currentPath = [...parentPath, key];
71
+ const childRuleSet = ruleSet[key];
71
72
  // Skip $ref nodes — they are governed by the referenced protocol's encryption keys.
72
73
  // Still recurse into children, which belong to the composing protocol.
73
- if (ruleSet[key].$ref !== undefined) {
74
- yield injectKeysViaCallback(ruleSet[key], currentPath);
74
+ if (childRuleSet.$ref !== undefined) {
75
+ yield injectKeysViaCallback(childRuleSet, currentPath);
75
76
  continue;
76
77
  }
77
78
  const publicKeyJwk = yield keyDeriver.derivePublicKey(currentPath);
78
- ruleSet[key].$encryption = {
79
+ childRuleSet.$encryption = {
79
80
  rootKeyId: keyDeriver.rootKeyId,
80
81
  publicKeyJwk,
81
82
  };
82
- yield injectKeysViaCallback(ruleSet[key], currentPath);
83
+ yield injectKeysViaCallback(childRuleSet, currentPath);
83
84
  }
84
85
  }
85
86
  });
@@ -96,15 +97,16 @@ export class Protocols {
96
97
  // if we encounter a nested rule set (a property name that doesn't begin with '$'), recursively inject the `$encryption` property
97
98
  if (!key.startsWith('$')) {
98
99
  const derivedPrivateKey = yield HdKey.derivePrivateKey(parentKey, [key]);
100
+ const childRuleSet = ruleSet[key];
99
101
  // Skip $ref nodes — they are governed by the referenced protocol's encryption keys.
100
102
  // Still recurse into children, which belong to the composing protocol.
101
- if (ruleSet[key].$ref !== undefined) {
102
- yield addEncryptionProperty(ruleSet[key], derivedPrivateKey);
103
+ if (childRuleSet.$ref !== undefined) {
104
+ yield addEncryptionProperty(childRuleSet, derivedPrivateKey);
103
105
  continue;
104
106
  }
105
- const publicKeyJwk = yield Secp256k1.getPublicJwk(derivedPrivateKey.derivedPrivateKey);
106
- ruleSet[key].$encryption = { rootKeyId, publicKeyJwk };
107
- yield addEncryptionProperty(ruleSet[key], derivedPrivateKey);
107
+ const publicKeyJwk = yield X25519.getPublicKey({ key: derivedPrivateKey.derivedPrivateKey });
108
+ childRuleSet.$encryption = { rootKeyId, publicKeyJwk };
109
+ yield addEncryptionProperty(childRuleSet, derivedPrivateKey);
108
110
  }
109
111
  }
110
112
  });
@@ -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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"}