@hg-ts/rsa 0.7.27 → 0.8.0

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 (177) hide show
  1. package/README.md +91 -0
  2. package/dist/X25519/key-pair.d.ts +4 -4
  3. package/dist/X25519/key-pair.d.ts.map +1 -1
  4. package/dist/X25519/key-pair.js +3 -5
  5. package/dist/X25519/key-pair.js.map +1 -1
  6. package/dist/X25519/private-key.d.ts +5 -4
  7. package/dist/X25519/private-key.d.ts.map +1 -1
  8. package/dist/X25519/private-key.js +8 -21
  9. package/dist/X25519/private-key.js.map +1 -1
  10. package/dist/X25519/public-key.d.ts +4 -6
  11. package/dist/X25519/public-key.d.ts.map +1 -1
  12. package/dist/X25519/public-key.js +8 -19
  13. package/dist/X25519/public-key.js.map +1 -1
  14. package/dist/X25519/x25519.test.d.ts +7 -6
  15. package/dist/X25519/x25519.test.d.ts.map +1 -1
  16. package/dist/X25519/x25519.test.js +70 -58
  17. package/dist/X25519/x25519.test.js.map +1 -1
  18. package/dist/aead/index.d.ts +2 -0
  19. package/dist/aead/index.d.ts.map +1 -0
  20. package/dist/aead/index.js +2 -0
  21. package/dist/aead/index.js.map +1 -0
  22. package/dist/aead/xchacha20-poly1305.d.ts +10 -0
  23. package/dist/aead/xchacha20-poly1305.d.ts.map +1 -0
  24. package/dist/aead/xchacha20-poly1305.js +48 -0
  25. package/dist/aead/xchacha20-poly1305.js.map +1 -0
  26. package/dist/aead/xchacha20-poly1305.test.d.ts +14 -0
  27. package/dist/aead/xchacha20-poly1305.test.d.ts.map +1 -0
  28. package/dist/aead/xchacha20-poly1305.test.js +140 -0
  29. package/dist/aead/xchacha20-poly1305.test.js.map +1 -0
  30. package/dist/base/index.d.ts +1 -0
  31. package/dist/base/index.d.ts.map +1 -1
  32. package/dist/base/index.js +1 -0
  33. package/dist/base/index.js.map +1 -1
  34. package/dist/base/key-capabilities.d.ts +36 -0
  35. package/dist/base/key-capabilities.d.ts.map +1 -0
  36. package/dist/base/key-capabilities.js +2 -0
  37. package/dist/base/key-capabilities.js.map +1 -0
  38. package/dist/base/key-pair.d.ts +3 -7
  39. package/dist/base/key-pair.d.ts.map +1 -1
  40. package/dist/base/key-pair.js.map +1 -1
  41. package/dist/base/key.d.ts +2 -1
  42. package/dist/base/key.d.ts.map +1 -1
  43. package/dist/base/key.js.map +1 -1
  44. package/dist/base/private-key.d.ts +2 -3
  45. package/dist/base/private-key.d.ts.map +1 -1
  46. package/dist/base/private-key.js.map +1 -1
  47. package/dist/base/public-key.d.ts +2 -3
  48. package/dist/base/public-key.d.ts.map +1 -1
  49. package/dist/base/public-key.js.map +1 -1
  50. package/dist/exceptions/hkdf-output-length.exception.d.ts +5 -0
  51. package/dist/exceptions/hkdf-output-length.exception.d.ts.map +1 -0
  52. package/dist/exceptions/hkdf-output-length.exception.js +7 -0
  53. package/dist/exceptions/hkdf-output-length.exception.js.map +1 -0
  54. package/dist/exceptions/index.d.ts +4 -0
  55. package/dist/exceptions/index.d.ts.map +1 -1
  56. package/dist/exceptions/index.js +4 -0
  57. package/dist/exceptions/index.js.map +1 -1
  58. package/dist/exceptions/invalid-encryption-key.exception.d.ts +5 -0
  59. package/dist/exceptions/invalid-encryption-key.exception.d.ts.map +1 -0
  60. package/dist/exceptions/invalid-encryption-key.exception.js +7 -0
  61. package/dist/exceptions/invalid-encryption-key.exception.js.map +1 -0
  62. package/dist/exceptions/invalid-pq-kem-key-length.exception.d.ts +5 -0
  63. package/dist/exceptions/invalid-pq-kem-key-length.exception.d.ts.map +1 -0
  64. package/dist/exceptions/invalid-pq-kem-key-length.exception.js +7 -0
  65. package/dist/exceptions/invalid-pq-kem-key-length.exception.js.map +1 -0
  66. package/dist/exceptions/invalid-pq-kem-message-length.exception.d.ts +5 -0
  67. package/dist/exceptions/invalid-pq-kem-message-length.exception.d.ts.map +1 -0
  68. package/dist/exceptions/invalid-pq-kem-message-length.exception.js +7 -0
  69. package/dist/exceptions/invalid-pq-kem-message-length.exception.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +3 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/pq-kem/algorithm.d.ts +16 -0
  75. package/dist/pq-kem/algorithm.d.ts.map +1 -0
  76. package/dist/pq-kem/algorithm.js +25 -0
  77. package/dist/pq-kem/algorithm.js.map +1 -0
  78. package/dist/pq-kem/index.d.ts +5 -0
  79. package/dist/pq-kem/index.d.ts.map +1 -0
  80. package/dist/pq-kem/index.js +5 -0
  81. package/dist/pq-kem/index.js.map +1 -0
  82. package/dist/pq-kem/key-pair.d.ts +15 -0
  83. package/dist/pq-kem/key-pair.d.ts.map +1 -0
  84. package/dist/pq-kem/key-pair.js +44 -0
  85. package/dist/pq-kem/key-pair.js.map +1 -0
  86. package/dist/pq-kem/pq-kem.test.d.ts +18 -0
  87. package/dist/pq-kem/pq-kem.test.d.ts.map +1 -0
  88. package/dist/pq-kem/pq-kem.test.js +173 -0
  89. package/dist/pq-kem/pq-kem.test.js.map +1 -0
  90. package/dist/pq-kem/private-key.d.ts +16 -0
  91. package/dist/pq-kem/private-key.d.ts.map +1 -0
  92. package/dist/pq-kem/private-key.js +43 -0
  93. package/dist/pq-kem/private-key.js.map +1 -0
  94. package/dist/pq-kem/public-key.d.ts +18 -0
  95. package/dist/pq-kem/public-key.d.ts.map +1 -0
  96. package/dist/pq-kem/public-key.js +70 -0
  97. package/dist/pq-kem/public-key.js.map +1 -0
  98. package/dist/rsa/key-pair.d.ts +2 -2
  99. package/dist/rsa/key-pair.d.ts.map +1 -1
  100. package/dist/rsa/key-pair.js.map +1 -1
  101. package/dist/rsa/private-key.d.ts +3 -2
  102. package/dist/rsa/private-key.d.ts.map +1 -1
  103. package/dist/rsa/private-key.js +2 -1
  104. package/dist/rsa/private-key.js.map +1 -1
  105. package/dist/rsa/public-key.d.ts +3 -2
  106. package/dist/rsa/public-key.d.ts.map +1 -1
  107. package/dist/rsa/public-key.js +2 -1
  108. package/dist/rsa/public-key.js.map +1 -1
  109. package/dist/rsa/rsa.test.d.ts.map +1 -1
  110. package/dist/rsa/rsa.test.js +1 -0
  111. package/dist/rsa/rsa.test.js.map +1 -1
  112. package/dist/utils/hkdf.d.ts +26 -0
  113. package/dist/utils/hkdf.d.ts.map +1 -0
  114. package/dist/utils/hkdf.js +43 -0
  115. package/dist/utils/hkdf.js.map +1 -0
  116. package/dist/utils/hkdf.test.d.ts +7 -0
  117. package/dist/utils/hkdf.test.d.ts.map +1 -0
  118. package/dist/utils/hkdf.test.js +79 -0
  119. package/dist/utils/hkdf.test.js.map +1 -0
  120. package/dist/utils/hmac.d.ts +5 -0
  121. package/dist/utils/hmac.d.ts.map +1 -0
  122. package/dist/utils/hmac.js +16 -0
  123. package/dist/utils/hmac.js.map +1 -0
  124. package/dist/utils/hmac.test.d.ts +6 -0
  125. package/dist/utils/hmac.test.d.ts.map +1 -0
  126. package/dist/utils/hmac.test.js +33 -0
  127. package/dist/utils/hmac.test.js.map +1 -0
  128. package/dist/utils/index.d.ts +4 -0
  129. package/dist/utils/index.d.ts.map +1 -0
  130. package/dist/utils/index.js +4 -0
  131. package/dist/utils/index.js.map +1 -0
  132. package/dist/utils/kdf.d.ts +3 -0
  133. package/dist/utils/kdf.d.ts.map +1 -0
  134. package/dist/utils/kdf.js +10 -0
  135. package/dist/utils/kdf.js.map +1 -0
  136. package/package.json +16 -10
  137. package/src/X25519/key-pair.ts +9 -9
  138. package/src/X25519/private-key.ts +15 -30
  139. package/src/X25519/public-key.ts +15 -31
  140. package/src/X25519/x25519.test.ts +81 -68
  141. package/src/aead/index.ts +1 -0
  142. package/src/aead/xchacha20-poly1305.test.ts +147 -0
  143. package/src/aead/xchacha20-poly1305.ts +80 -0
  144. package/src/base/index.ts +1 -0
  145. package/src/base/key-capabilities.ts +54 -0
  146. package/src/base/key-pair.ts +6 -11
  147. package/src/base/key.ts +3 -1
  148. package/src/base/private-key.ts +2 -5
  149. package/src/base/public-key.ts +4 -5
  150. package/src/exceptions/hkdf-output-length.exception.ts +7 -0
  151. package/src/exceptions/index.ts +4 -0
  152. package/src/exceptions/invalid-encryption-key.exception.ts +7 -0
  153. package/src/exceptions/invalid-pq-kem-key-length.exception.ts +7 -0
  154. package/src/exceptions/invalid-pq-kem-message-length.exception.ts +7 -0
  155. package/src/index.ts +3 -0
  156. package/src/pq-kem/algorithm.ts +51 -0
  157. package/src/pq-kem/index.ts +4 -0
  158. package/src/pq-kem/key-pair.ts +76 -0
  159. package/src/pq-kem/pq-kem.test.ts +144 -0
  160. package/src/pq-kem/private-key.ts +67 -0
  161. package/src/pq-kem/public-key.ts +99 -0
  162. package/src/rsa/key-pair.ts +11 -5
  163. package/src/rsa/private-key.ts +9 -2
  164. package/src/rsa/public-key.ts +9 -2
  165. package/src/rsa/rsa.test.ts +1 -0
  166. package/src/utils/hkdf.test.ts +77 -0
  167. package/src/utils/hkdf.ts +89 -0
  168. package/src/utils/hmac.test.ts +43 -0
  169. package/src/utils/hmac.ts +21 -0
  170. package/src/utils/index.ts +3 -0
  171. package/src/utils/kdf.ts +17 -0
  172. package/tsconfig.json +3 -1
  173. package/dist/X25519/utils.d.ts +0 -2
  174. package/dist/X25519/utils.d.ts.map +0 -1
  175. package/dist/X25519/utils.js +0 -12
  176. package/dist/X25519/utils.js.map +0 -1
  177. package/src/X25519/utils.ts +0 -22
@@ -0,0 +1,10 @@
1
+ import Buffer from '@hg-ts/buffer';
2
+ export declare class XChaCha20Poly1305Aead {
3
+ deriveKey(...values: Buffer[]): Buffer;
4
+ encrypt(value: string | Buffer, key: Buffer, associatedData?: string | Buffer): Buffer;
5
+ decrypt(value: string | Buffer, key: Buffer, associatedData?: string | Buffer): Buffer;
6
+ private validateKey;
7
+ private toBuffer;
8
+ private toOptionalBuffer;
9
+ }
10
+ //# sourceMappingURL=xchacha20-poly1305.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xchacha20-poly1305.d.ts","sourceRoot":"","sources":["../../src/aead/xchacha20-poly1305.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AAanC,qBAAa,qBAAqB;IAC1B,SAAS,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;IAQtC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAgBtF,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAsB7F,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,gBAAgB;CAOxB"}
@@ -0,0 +1,48 @@
1
+ import Buffer from '@hg-ts/buffer';
2
+ import sodium from 'libsodium-wrappers';
3
+ import { InvalidDecryptionKeyExpection, InvalidEncryptionKeyException, } from '../exceptions/index.js';
4
+ import { deriveKey } from '../utils/index.js';
5
+ const ALGORITHM = Buffer.from('X25519-XChaCha20-Poly1305', 'utf8');
6
+ sodium.ready.catch(() => { });
7
+ export class XChaCha20Poly1305Aead {
8
+ deriveKey(...values) {
9
+ return deriveKey(sodium.crypto_aead_xchacha20poly1305_ietf_KEYBYTES, ALGORITHM, ...values);
10
+ }
11
+ encrypt(value, key, associatedData) {
12
+ this.validateKey(key);
13
+ const nonce = Buffer.from(sodium.randombytes_buf(sodium.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES));
14
+ const ciphertext = Buffer.from(sodium.crypto_aead_xchacha20poly1305_ietf_encrypt(this.toBuffer(value), this.toOptionalBuffer(associatedData), null, nonce, key));
15
+ return Buffer.concat([nonce, ciphertext]);
16
+ }
17
+ decrypt(value, key, associatedData) {
18
+ this.validateKey(key);
19
+ const encrypted = typeof value === 'string'
20
+ ? Buffer.from(value, 'base64')
21
+ : value;
22
+ try {
23
+ const nonce = encrypted.subarray(0, sodium.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES);
24
+ const ciphertext = encrypted.subarray(sodium.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES);
25
+ return Buffer.from(sodium.crypto_aead_xchacha20poly1305_ietf_decrypt(null, ciphertext, this.toOptionalBuffer(associatedData), nonce, key));
26
+ }
27
+ catch {
28
+ throw new InvalidDecryptionKeyExpection();
29
+ }
30
+ }
31
+ validateKey(key) {
32
+ if (key.length !== sodium.crypto_aead_xchacha20poly1305_ietf_KEYBYTES) {
33
+ throw new InvalidEncryptionKeyException();
34
+ }
35
+ }
36
+ toBuffer(value) {
37
+ return typeof value === 'string'
38
+ ? Buffer.from(value, 'utf8')
39
+ : value;
40
+ }
41
+ toOptionalBuffer(value) {
42
+ if (!value) {
43
+ return null;
44
+ }
45
+ return this.toBuffer(value);
46
+ }
47
+ }
48
+ //# sourceMappingURL=xchacha20-poly1305.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xchacha20-poly1305.js","sourceRoot":"","sources":["../../src/aead/xchacha20-poly1305.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EACN,6BAA6B,EAC7B,6BAA6B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAE7B,MAAM,OAAO,qBAAqB;IAC1B,SAAS,CAAC,GAAG,MAAgB;QACnC,OAAO,SAAS,CACf,MAAM,CAAC,2CAA2C,EAClD,SAAS,EACT,GAAG,MAAM,CACT,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,KAAsB,EAAE,GAAW,EAAE,cAAgC;QACnF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACxB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAC3E,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EACpB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EACrC,IAAI,EACJ,KAAK,EACL,GAAG,CACH,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAC,KAAsB,EAAE,GAAW,EAAE,cAAgC;QACnF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ;YAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC9B,CAAC,CAAC,KAAK,CAAC;QAET,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,4CAA4C,CAAC,CAAC;YACzF,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC;YAE3F,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,0CAA0C,CACnE,IAAI,EACJ,UAAU,EACV,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EACrC,KAAK,EACL,GAAG,CACH,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,IAAI,6BAA6B,EAAE,CAAC;QAC3C,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,GAAW;QAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,2CAA2C,EAAE,CAAC;YACvE,MAAM,IAAI,6BAA6B,EAAE,CAAC;QAC3C,CAAC;IACF,CAAC;IAEO,QAAQ,CAAC,KAAsB;QACtC,OAAO,OAAO,KAAK,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YAC5B,CAAC,CAAC,KAAK,CAAC;IACV,CAAC;IAEO,gBAAgB,CAAC,KAAuB;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;CACD"}
@@ -0,0 +1,14 @@
1
+ import { Suite } from '@hg-ts/tests';
2
+ export declare class XChaCha20Poly1305AeadTest extends Suite {
3
+ encryption(): Promise<void>;
4
+ encryptionBuffer(): Promise<void>;
5
+ duplicateEncryptionDifferences(): Promise<void>;
6
+ associatedData(): Promise<void>;
7
+ decryptFailsForAnotherAssociatedData(): Promise<void>;
8
+ decryptFailsForAnotherKey(): Promise<void>;
9
+ encryptionFailsForInvalidKeyLength(): Promise<void>;
10
+ deriveKeyDependsOnPublicKeyOrder(): Promise<void>;
11
+ setUp(): Promise<void>;
12
+ private deriveAliceBobKeys;
13
+ }
14
+ //# sourceMappingURL=xchacha20-poly1305.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xchacha20-poly1305.test.d.ts","sourceRoot":"","sources":["../../src/aead/xchacha20-poly1305.test.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,KAAK,EAEL,MAAM,cAAc,CAAC;AAUtB,qBACa,yBAA0B,SAAQ,KAAK;IAEtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrD,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAY1C,kCAAkC,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnD,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C,OAAO,CAAC,kBAAkB;CAoB1B"}
@@ -0,0 +1,140 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import Buffer from '@hg-ts/buffer';
3
+ import { Describe, expect, ExpectException, Suite, Test, } from '@hg-ts/tests';
4
+ import sodium from 'libsodium-wrappers';
5
+ import { InvalidDecryptionKeyExpection, InvalidEncryptionKeyException, } from '../exceptions/index.js';
6
+ import { X25519KeyPair } from '../X25519/index.js';
7
+ import { XChaCha20Poly1305Aead } from './xchacha20-poly1305.js';
8
+ let XChaCha20Poly1305AeadTest = class XChaCha20Poly1305AeadTest extends Suite {
9
+ async encryption() {
10
+ const { aliceKey, bobKey } = this.deriveAliceBobKeys();
11
+ const value = Math.random().toString();
12
+ const aead = new XChaCha20Poly1305Aead();
13
+ const encrypted = aead.encrypt(value, aliceKey);
14
+ const decrypted = aead.decrypt(encrypted.toString('base64'), bobKey);
15
+ expect(decrypted.toString('utf8')).toBe(value);
16
+ }
17
+ async encryptionBuffer() {
18
+ const { aliceKey, bobKey } = this.deriveAliceBobKeys();
19
+ const value = Buffer.from(Math.random().toString(), 'utf8');
20
+ const aead = new XChaCha20Poly1305Aead();
21
+ const encrypted = aead.encrypt(value, aliceKey);
22
+ const decrypted = aead.decrypt(encrypted, bobKey);
23
+ expect(decrypted).toMatchObject(value);
24
+ }
25
+ async duplicateEncryptionDifferences() {
26
+ const { aliceKey, bobKey } = this.deriveAliceBobKeys();
27
+ const value = Math.random().toString();
28
+ const aead = new XChaCha20Poly1305Aead();
29
+ const encryptedA = aead.encrypt(value, aliceKey);
30
+ const encryptedB = aead.encrypt(value, aliceKey);
31
+ expect(encryptedA).not.toMatchObject(encryptedB);
32
+ expect(aead.decrypt(encryptedA, bobKey).toString('utf8')).toBe(value);
33
+ expect(aead.decrypt(encryptedB, bobKey).toString('utf8')).toBe(value);
34
+ }
35
+ async associatedData() {
36
+ const { aliceKey, bobKey } = this.deriveAliceBobKeys();
37
+ const value = Math.random().toString();
38
+ const associatedData = Buffer.from('message-header', 'utf8');
39
+ const aead = new XChaCha20Poly1305Aead();
40
+ const encrypted = aead.encrypt(value, aliceKey, associatedData);
41
+ const decrypted = aead.decrypt(encrypted, bobKey, associatedData);
42
+ expect(decrypted.toString('utf8')).toBe(value);
43
+ }
44
+ async decryptFailsForAnotherAssociatedData() {
45
+ const { aliceKey, bobKey } = this.deriveAliceBobKeys();
46
+ const aead = new XChaCha20Poly1305Aead();
47
+ const encrypted = aead.encrypt(Math.random().toString(), aliceKey, 'message-header');
48
+ aead.decrypt(encrypted, bobKey, 'another-message-header');
49
+ }
50
+ async decryptFailsForAnotherKey() {
51
+ const { aliceKey } = this.deriveAliceBobKeys();
52
+ const anotherKey = new X25519KeyPair().privateKeyInstance.nativeKey;
53
+ const aead = new XChaCha20Poly1305Aead();
54
+ const encrypted = aead.encrypt(Math.random().toString(), aliceKey);
55
+ aead.decrypt(encrypted, anotherKey);
56
+ }
57
+ async encryptionFailsForInvalidKeyLength() {
58
+ const aead = new XChaCha20Poly1305Aead();
59
+ aead.encrypt(Math.random().toString(), Buffer.from('invalid-key', 'utf8'));
60
+ }
61
+ async deriveKeyDependsOnPublicKeyOrder() {
62
+ const alice = new X25519KeyPair();
63
+ const bob = new X25519KeyPair();
64
+ const sharedSecret = alice.deriveSharedSecret(bob.publicKeyInstance);
65
+ const aead = new XChaCha20Poly1305Aead();
66
+ const keyA = aead.deriveKey(sharedSecret, alice.publicKeyInstance.nativeKey, bob.publicKeyInstance.nativeKey);
67
+ const keyB = aead.deriveKey(sharedSecret, bob.publicKeyInstance.nativeKey, alice.publicKeyInstance.nativeKey);
68
+ expect(keyA).not.toMatchObject(keyB);
69
+ }
70
+ async setUp() {
71
+ await sodium.ready;
72
+ }
73
+ deriveAliceBobKeys() {
74
+ const alice = new X25519KeyPair();
75
+ const bob = new X25519KeyPair();
76
+ const aliceSecret = alice.deriveSharedSecret(bob.publicKeyInstance);
77
+ const bobSecret = bob.deriveSharedSecret(alice.publicKeyInstance);
78
+ const aead = new XChaCha20Poly1305Aead();
79
+ return {
80
+ aliceKey: aead.deriveKey(aliceSecret, alice.publicKeyInstance.nativeKey, bob.publicKeyInstance.nativeKey),
81
+ bobKey: aead.deriveKey(bobSecret, alice.publicKeyInstance.nativeKey, bob.publicKeyInstance.nativeKey),
82
+ };
83
+ }
84
+ };
85
+ __decorate([
86
+ Test(),
87
+ __metadata("design:type", Function),
88
+ __metadata("design:paramtypes", []),
89
+ __metadata("design:returntype", Promise)
90
+ ], XChaCha20Poly1305AeadTest.prototype, "encryption", null);
91
+ __decorate([
92
+ Test(),
93
+ __metadata("design:type", Function),
94
+ __metadata("design:paramtypes", []),
95
+ __metadata("design:returntype", Promise)
96
+ ], XChaCha20Poly1305AeadTest.prototype, "encryptionBuffer", null);
97
+ __decorate([
98
+ Test(),
99
+ __metadata("design:type", Function),
100
+ __metadata("design:paramtypes", []),
101
+ __metadata("design:returntype", Promise)
102
+ ], XChaCha20Poly1305AeadTest.prototype, "duplicateEncryptionDifferences", null);
103
+ __decorate([
104
+ Test(),
105
+ __metadata("design:type", Function),
106
+ __metadata("design:paramtypes", []),
107
+ __metadata("design:returntype", Promise)
108
+ ], XChaCha20Poly1305AeadTest.prototype, "associatedData", null);
109
+ __decorate([
110
+ Test(),
111
+ ExpectException(InvalidDecryptionKeyExpection),
112
+ __metadata("design:type", Function),
113
+ __metadata("design:paramtypes", []),
114
+ __metadata("design:returntype", Promise)
115
+ ], XChaCha20Poly1305AeadTest.prototype, "decryptFailsForAnotherAssociatedData", null);
116
+ __decorate([
117
+ Test(),
118
+ ExpectException(InvalidDecryptionKeyExpection),
119
+ __metadata("design:type", Function),
120
+ __metadata("design:paramtypes", []),
121
+ __metadata("design:returntype", Promise)
122
+ ], XChaCha20Poly1305AeadTest.prototype, "decryptFailsForAnotherKey", null);
123
+ __decorate([
124
+ Test(),
125
+ ExpectException(InvalidEncryptionKeyException),
126
+ __metadata("design:type", Function),
127
+ __metadata("design:paramtypes", []),
128
+ __metadata("design:returntype", Promise)
129
+ ], XChaCha20Poly1305AeadTest.prototype, "encryptionFailsForInvalidKeyLength", null);
130
+ __decorate([
131
+ Test(),
132
+ __metadata("design:type", Function),
133
+ __metadata("design:paramtypes", []),
134
+ __metadata("design:returntype", Promise)
135
+ ], XChaCha20Poly1305AeadTest.prototype, "deriveKeyDependsOnPublicKeyOrder", null);
136
+ XChaCha20Poly1305AeadTest = __decorate([
137
+ Describe()
138
+ ], XChaCha20Poly1305AeadTest);
139
+ export { XChaCha20Poly1305AeadTest };
140
+ //# sourceMappingURL=xchacha20-poly1305.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xchacha20-poly1305.test.js","sourceRoot":"","sources":["../../src/aead/xchacha20-poly1305.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from './key-capabilities.js';
1
2
  export * from './key.js';
2
3
  export * from './private-key.js';
3
4
  export * from './public-key.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from './key-capabilities.js';
1
2
  export * from './key.js';
2
3
  export * from './private-key.js';
3
4
  export * from './public-key.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,36 @@
1
+ export type SerializableKey<TKey = unknown> = {
2
+ readonly nativeKey: TKey;
3
+ toString(): string;
4
+ };
5
+ export type PublicKey<TKey = unknown> = SerializableKey<TKey>;
6
+ export type PrivateKey<TNativeKey = unknown, TPublicKey extends PublicKey = PublicKey> = SerializableKey<TNativeKey> & {
7
+ toPublicKey(): TPublicKey;
8
+ };
9
+ export type EncryptingPublicKey = {
10
+ encrypt(value: string | Buffer): Buffer;
11
+ };
12
+ export type DecryptingPrivateKey = {
13
+ decrypt(value: string | Buffer): string;
14
+ };
15
+ export type SigningPrivateKey = {
16
+ sign(value: string): Buffer;
17
+ };
18
+ export type VerifyingPublicKey = {
19
+ verify(signature: string | Buffer, value: string): boolean;
20
+ };
21
+ export type KemEncapsulation = {
22
+ cipherText: Buffer;
23
+ sharedSecret: Buffer;
24
+ };
25
+ export type EncapsulatingPublicKey = {
26
+ encapsulate(message?: string | Buffer): KemEncapsulation;
27
+ };
28
+ export type DecapsulatingPrivateKey = {
29
+ decapsulate(cipherText: string | Buffer): Buffer;
30
+ };
31
+ export type KeyAgreementPublicKey<TKey = unknown> = PublicKey<TKey>;
32
+ export type KeyAgreementPrivateKey<TPublicKey extends KeyAgreementPublicKey, TNativeKey = unknown> = PrivateKey<TNativeKey, TPublicKey> & KeyAgreement<TPublicKey>;
33
+ export type KeyAgreement<TPublicKey extends KeyAgreementPublicKey> = {
34
+ deriveSharedSecret(peerPublicKey: TPublicKey): Buffer;
35
+ };
36
+ //# sourceMappingURL=key-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-capabilities.d.ts","sourceRoot":"","sources":["../../src/base/key-capabilities.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,IAAI,GAAG,OAAO,IAAI;IAC7C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAEzB,QAAQ,IAAI,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,IAAI,GAAG,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAE9D,MAAM,MAAM,UAAU,CACrB,UAAU,GAAG,OAAO,EACpB,UAAU,SAAS,SAAS,GAAG,SAAS,IACrC,eAAe,CAAC,UAAU,CAAC,GAAG;IACjC,WAAW,IAAI,UAAU,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,IAAI,GAAG,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,MAAM,sBAAsB,CACjC,UAAU,SAAS,qBAAqB,EACxC,UAAU,GAAG,OAAO,IACjB,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AAElE,MAAM,MAAM,YAAY,CAAC,UAAU,SAAS,qBAAqB,IAAI;IACpE,kBAAkB,CAAC,aAAa,EAAE,UAAU,GAAG,MAAM,CAAC;CACtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=key-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-capabilities.js","sourceRoot":"","sources":["../../src/base/key-capabilities.ts"],"names":[],"mappings":""}
@@ -1,10 +1,10 @@
1
1
  import { BasePrivateKey, StaticPrivateKey } from './private-key.js';
2
2
  import { BasePublicKey } from './public-key.js';
3
- export type NewKeyPairOptions = {
3
+ export type NewKeyPairOptions<TBits extends number = number> = {
4
4
  seed?: string;
5
- bits?: number;
5
+ bits?: TBits;
6
6
  };
7
- export type KeyPairOptions<TPrivateKey extends BasePrivateKey> = NewKeyPairOptions & {
7
+ export type KeyPairOptions<TPrivateKey extends BasePrivateKey, TBits extends number = number> = NewKeyPairOptions<TBits> & {
8
8
  privateKey?: TPrivateKey | string;
9
9
  };
10
10
  export type KeyPairResult<TPrivateKey extends BasePrivateKey<unknown, TPublicKey>, TPublicKey extends BasePublicKey> = {
@@ -15,10 +15,6 @@ export declare abstract class BaseKeyPair<TPrivateKey extends BasePrivateKey<unk
15
15
  readonly privateKeyInstance: TPrivateKey;
16
16
  readonly publicKeyInstance: TPublicKey;
17
17
  protected constructor(options: TOptions, privateKeyCtor: StaticPrivateKey<TPrivateKey>);
18
- abstract encrypt(value: string | Buffer, ...additionalArguments: unknown[]): Buffer;
19
- abstract decrypt(value: string | Buffer, ...additionalArguments: unknown[]): string;
20
- abstract sign(value: string): Buffer;
21
- abstract verify(signature: string | Buffer, value: string): boolean;
22
18
  get publicKey(): string;
23
19
  get privateKey(): string;
24
20
  protected generateKeys(options: TOptions, privateKeyCtor: StaticPrivateKey<TPrivateKey>): KeyPairResult<TPrivateKey, TPublicKey>;
@@ -1 +1 @@
1
- {"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/base/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,WAAW,SAAS,cAAc,IAAI,iBAAiB,GAAG;IACpF,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,CACxB,WAAW,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EACvD,UAAU,SAAS,aAAa,IAC7B;IACH,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,8BAAsB,WAAW,CAChC,WAAW,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EACvD,UAAU,SAAS,aAAa,EAChC,QAAQ,SAAS,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;IAE1E,SAAgB,kBAAkB,EAAE,WAAW,CAAC;IAChD,SAAgB,iBAAiB,EAAE,UAAU,CAAC;IAE9C,SAAS,aAAa,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC;aAOtE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE1E,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE1E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;aAE3B,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAE1E,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,YAAY,CACrB,OAAO,EAAE,QAAQ,EACjB,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAC3C,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;IAgBzC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;CACtG"}
1
+ {"version":3,"file":"key-pair.d.ts","sourceRoot":"","sources":["../../src/base/key-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,CACzB,WAAW,SAAS,cAAc,EAClC,KAAK,SAAS,MAAM,GAAG,MAAM,IAC1B,iBAAiB,CAAC,KAAK,CAAC,GAAG;IAC9B,UAAU,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,CACxB,WAAW,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EACvD,UAAU,SAAS,aAAa,IAC7B;IACH,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF,8BAAsB,WAAW,CAChC,WAAW,SAAS,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,EACvD,UAAU,SAAS,aAAa,EAChC,QAAQ,SAAS,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;IAE1E,SAAgB,kBAAkB,EAAE,WAAW,CAAC;IAChD,SAAgB,iBAAiB,EAAE,UAAU,CAAC;IAE9C,SAAS,aAAa,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC;IAOtF,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,SAAS,CAAC,YAAY,CACrB,OAAO,EAAE,QAAQ,EACjB,cAAc,EAAE,gBAAgB,CAAC,WAAW,CAAC,GAC3C,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;IAgBzC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC;CACtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/base/key-pair.ts"],"names":[],"mappings":"AAuBA,MAAM,OAAgB,WAAW;IAKhB,kBAAkB,CAAc;IAChC,iBAAiB,CAAa;IAE9C,YAAsB,OAAiB,EAAE,cAA6C;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAE3D,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5C,CAAC;IAUD,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAES,YAAY,CACrB,OAAiB,EACjB,cAA6C;QAE7C,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;QAEjD,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,OAAO,UAAU,KAAK,QAAQ;gBACpD,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;gBACvC,CAAC,CAAC,UAAU,CAAC;YAEd,OAAO;gBACN,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,cAAc,CAAC,WAAW,EAAE;aACvC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,aAAkC,CAAC,CAAC;IACjE,CAAC;CAED"}
1
+ {"version":3,"file":"key-pair.js","sourceRoot":"","sources":["../../src/base/key-pair.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAgB,WAAW;IAKhB,kBAAkB,CAAc;IAChC,iBAAiB,CAAa;IAE9C,YAAsB,OAAiB,EAAE,cAA6C;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAE3D,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAES,YAAY,CACrB,OAAiB,EACjB,cAA6C;QAE7C,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;QAEjD,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,OAAO,UAAU,KAAK,QAAQ;gBACpD,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;gBACvC,CAAC,CAAC,UAAU,CAAC;YAEd,OAAO;gBACN,UAAU,EAAE,cAAc;gBAC1B,SAAS,EAAE,cAAc,CAAC,WAAW,EAAE;aACvC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,aAAkC,CAAC,CAAC;IACjE,CAAC;CAED"}
@@ -1,4 +1,5 @@
1
- export declare abstract class BaseKey<TKey = unknown> {
1
+ import { SerializableKey } from './key-capabilities.js';
2
+ export declare abstract class BaseKey<TKey = unknown> implements SerializableKey<TKey> {
2
3
  protected readonly key: TKey;
3
4
  constructor(key: TKey);
4
5
  get nativeKey(): TKey;
@@ -1 +1 @@
1
- {"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/base/key.ts"],"names":[],"mappings":"AAAA,8BAAsB,OAAO,CAAC,IAAI,GAAG,OAAO;IAC3C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;gBAEV,GAAG,EAAE,IAAI;IAI5B,IAAW,SAAS,IAAI,IAAI,CAE3B;aAEe,QAAQ,IAAI,MAAM;CAClC"}
1
+ {"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/base/key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,8BAAsB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAE,YAAW,eAAe,CAAC,IAAI,CAAC;IAC7E,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;gBAEV,GAAG,EAAE,IAAI;IAI5B,IAAW,SAAS,IAAI,IAAI,CAE3B;aAEe,QAAQ,IAAI,MAAM;CAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/base/key.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,OAAO;IACT,GAAG,CAAO;IAE7B,YAAmB,GAAS;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;CAGD"}
1
+ {"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/base/key.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,OAAO;IACT,GAAG,CAAO;IAE7B,YAAmB,GAAS;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC;IAED,IAAW,SAAS;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;CAGD"}
@@ -1,11 +1,10 @@
1
1
  import { BaseKey } from './key.js';
2
+ import { PrivateKey } from './key-capabilities.js';
2
3
  import { BasePublicKey } from './public-key.js';
3
4
  export type StaticPrivateKey<T extends BasePrivateKey> = Class<T, any[]> & {
4
5
  fromString(privateKey: string): T;
5
6
  };
6
- export declare abstract class BasePrivateKey<TNativeKey = unknown, TPublicKey extends BasePublicKey = BasePublicKey> extends BaseKey<TNativeKey> {
7
- abstract decrypt(encrypted: string | Buffer, ...additionalArguments: unknown[]): string;
8
- abstract sign(value: string): Buffer;
7
+ export declare abstract class BasePrivateKey<TNativeKey = unknown, TPublicKey extends BasePublicKey = BasePublicKey> extends BaseKey<TNativeKey> implements PrivateKey<TNativeKey, TPublicKey> {
9
8
  abstract toPublicKey(): TPublicKey;
10
9
  }
11
10
  //# sourceMappingURL=private-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/base/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG;IAC1E,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC;CAClC,CAAA;AAED,8BAAsB,cAAc,CACnC,UAAU,GAAG,OAAO,EACpB,UAAU,SAAS,aAAa,GAAG,aAAa,CAC/C,SAAQ,OAAO,CAAC,UAAU,CAAC;aACZ,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;aAE3B,WAAW,IAAI,UAAU;CACzC"}
1
+ {"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../src/base/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,cAAc,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG;IAC1E,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC;CAClC,CAAA;AAED,8BAAsB,cAAc,CACnC,UAAU,GAAG,OAAO,EACpB,UAAU,SAAS,aAAa,GAAG,aAAa,CAC/C,SAAQ,OAAO,CAAC,UAAU,CAAE,YAAW,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;aAC1D,WAAW,IAAI,UAAU;CACzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/base/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAOnC,MAAM,OAAgB,cAGpB,SAAQ,OAAmB;CAM5B"}
1
+ {"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../src/base/private-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAQnC,MAAM,OAAgB,cAGpB,SAAQ,OAAmB;CAE5B"}
@@ -1,6 +1,5 @@
1
1
  import { BaseKey } from './key.js';
2
- export declare abstract class BasePublicKey<TNativeKey = unknown> extends BaseKey<TNativeKey> {
3
- abstract encrypt(value: string | Buffer, ...additionalArguments: unknown[]): Buffer;
4
- abstract verify(signature: string | Buffer, value: string): boolean;
2
+ import { PublicKey } from './key-capabilities.js';
3
+ export declare abstract class BasePublicKey<TNativeKey = unknown> extends BaseKey<TNativeKey> implements PublicKey<TNativeKey> {
5
4
  }
6
5
  //# sourceMappingURL=public-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-key.d.ts","sourceRoot":"","sources":["../../src/base/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,8BAAsB,aAAa,CAAC,UAAU,GAAG,OAAO,CAAE,SAAQ,OAAO,CAAC,UAAU,CAAC;aACpE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,mBAAmB,EAAE,OAAO,EAAE,GAAG,MAAM;aAE1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAC1E"}
1
+ {"version":3,"file":"public-key.d.ts","sourceRoot":"","sources":["../../src/base/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,8BAAsB,aAAa,CAAC,UAAU,GAAG,OAAO,CACvD,SAAQ,OAAO,CAAC,UAAU,CAC1B,YAAW,SAAS,CAAC,UAAU,CAAC;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"public-key.js","sourceRoot":"","sources":["../../src/base/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,OAAgB,aAAoC,SAAQ,OAAmB;CAIpF"}
1
+ {"version":3,"file":"public-key.js","sourceRoot":"","sources":["../../src/base/public-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,MAAM,OAAgB,aACrB,SAAQ,OAAmB;CACQ"}
@@ -0,0 +1,5 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export declare class HkdfOutputLengthException extends BaseException {
3
+ constructor(maxLength: number);
4
+ }
5
+ //# sourceMappingURL=hkdf-output-length.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hkdf-output-length.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/hkdf-output-length.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,yBAA0B,SAAQ,aAAa;gBACxC,SAAS,EAAE,MAAM;CAGpC"}
@@ -0,0 +1,7 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export class HkdfOutputLengthException extends BaseException {
3
+ constructor(maxLength) {
4
+ super(`HKDF output length must not exceed ${maxLength} bytes`);
5
+ }
6
+ }
7
+ //# sourceMappingURL=hkdf-output-length.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hkdf-output-length.exception.js","sourceRoot":"","sources":["../../src/exceptions/hkdf-output-length.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,yBAA0B,SAAQ,aAAa;IAC3D,YAAmB,SAAiB;QACnC,KAAK,CAAC,sCAAsC,SAAS,QAAQ,CAAC,CAAC;IAChE,CAAC;CACD"}
@@ -1,2 +1,6 @@
1
+ export * from './hkdf-output-length.exception.js';
1
2
  export * from './invalid-decryption-key.expection.js';
3
+ export * from './invalid-encryption-key.exception.js';
4
+ export * from './invalid-pq-kem-key-length.exception.js';
5
+ export * from './invalid-pq-kem-message-length.exception.js';
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC"}
@@ -1,2 +1,6 @@
1
+ export * from './hkdf-output-length.exception.js';
1
2
  export * from './invalid-decryption-key.expection.js';
3
+ export * from './invalid-encryption-key.exception.js';
4
+ export * from './invalid-pq-kem-key-length.exception.js';
5
+ export * from './invalid-pq-kem-message-length.exception.js';
2
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptions/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export declare class InvalidEncryptionKeyException extends BaseException {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=invalid-encryption-key.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-encryption-key.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/invalid-encryption-key.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,6BAA8B,SAAQ,aAAa;;CAI/D"}
@@ -0,0 +1,7 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export class InvalidEncryptionKeyException extends BaseException {
3
+ constructor() {
4
+ super('Invalid encryption key');
5
+ }
6
+ }
7
+ //# sourceMappingURL=invalid-encryption-key.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-encryption-key.exception.js","sourceRoot":"","sources":["../../src/exceptions/invalid-encryption-key.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,6BAA8B,SAAQ,aAAa;IAC/D;QACC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACjC,CAAC;CACD"}
@@ -0,0 +1,5 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export declare class InvalidPqKemKeyLengthException extends BaseException {
3
+ constructor(keyType: 'publicKey' | 'secretKey', length: number);
4
+ }
5
+ //# sourceMappingURL=invalid-pq-kem-key-length.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-pq-kem-key-length.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/invalid-pq-kem-key-length.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,8BAA+B,SAAQ,aAAa;gBAC7C,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM;CAGrE"}
@@ -0,0 +1,7 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export class InvalidPqKemKeyLengthException extends BaseException {
3
+ constructor(keyType, length) {
4
+ super(`Invalid PQKEM ${keyType} length: ${length}`);
5
+ }
6
+ }
7
+ //# sourceMappingURL=invalid-pq-kem-key-length.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-pq-kem-key-length.exception.js","sourceRoot":"","sources":["../../src/exceptions/invalid-pq-kem-key-length.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,8BAA+B,SAAQ,aAAa;IAChE,YAAmB,OAAkC,EAAE,MAAc;QACpE,KAAK,CAAC,iBAAiB,OAAO,YAAY,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;CACD"}
@@ -0,0 +1,5 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export declare class InvalidPqKemMessageLengthException extends BaseException {
3
+ constructor(expectedLength: number, actualLength: number);
4
+ }
5
+ //# sourceMappingURL=invalid-pq-kem-message-length.exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-pq-kem-message-length.exception.d.ts","sourceRoot":"","sources":["../../src/exceptions/invalid-pq-kem-message-length.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,kCAAmC,SAAQ,aAAa;gBACjD,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CAG/D"}
@@ -0,0 +1,7 @@
1
+ import { BaseException } from '@hg-ts/exception';
2
+ export class InvalidPqKemMessageLengthException extends BaseException {
3
+ constructor(expectedLength, actualLength) {
4
+ super(`PQKEM encapsulation message must be ${expectedLength} bytes, got ${actualLength}`);
5
+ }
6
+ }
7
+ //# sourceMappingURL=invalid-pq-kem-message-length.exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalid-pq-kem-message-length.exception.js","sourceRoot":"","sources":["../../src/exceptions/invalid-pq-kem-message-length.exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,kCAAmC,SAAQ,aAAa;IACpE,YAAmB,cAAsB,EAAE,YAAoB;QAC9D,KAAK,CAAC,uCAAuC,cAAc,eAAe,YAAY,EAAE,CAAC,CAAC;IAC3F,CAAC;CACD"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  export * from './base/index.js';
2
+ export * from './aead/index.js';
2
3
  export * from './exceptions/index.js';
4
+ export * from './pq-kem/index.js';
3
5
  export * from './rsa/index.js';
4
6
  export * from './X25519/index.js';
7
+ export * from './utils/index.js';
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  export * from './base/index.js';
2
+ export * from './aead/index.js';
2
3
  export * from './exceptions/index.js';
4
+ export * from './pq-kem/index.js';
3
5
  export * from './rsa/index.js';
4
6
  export * from './X25519/index.js';
7
+ export * from './utils/index.js';
5
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { KEM } from '@noble/post-quantum/utils.js';
2
+ export type PqKemAlgorithm = 512 | 768 | 1024;
3
+ export declare const DEFAULT_PQ_KEM_ALGORITHM: PqKemAlgorithm;
4
+ export declare const PQ_KEM_ALGORITHMS: readonly [512, 768, 1024];
5
+ export type PqKemImplementation = KEM & {
6
+ lengths: {
7
+ cipherText: number;
8
+ msg: number;
9
+ publicKey: number;
10
+ secretKey: number;
11
+ seed: number;
12
+ };
13
+ };
14
+ export declare function getPqKemImplementation(bits: PqKemAlgorithm): PqKemImplementation;
15
+ export declare function inferPqKemBitsByKeyLength(length: number, keyType: 'publicKey' | 'secretKey'): PqKemAlgorithm;
16
+ //# sourceMappingURL=algorithm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"algorithm.d.ts","sourceRoot":"","sources":["../../src/pq-kem/algorithm.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAIxD,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAE9C,eAAO,MAAM,wBAAwB,EAAE,cAAoB,CAAC;AAE5D,eAAO,MAAM,iBAAiB,2BAIgB,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,GAAG,GAAG;IACvC,OAAO,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACb,CAAC;CACF,CAAC;AAQF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,mBAAmB,CAEhF;AAED,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,GAAG,WAAW,GAChC,cAAc,CAQhB"}