@lindorm/aes 0.6.5 → 0.7.1

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 (264) hide show
  1. package/README.md +126 -231
  2. package/dist/classes/AesKit.d.ts +4 -4
  3. package/dist/classes/AesKit.d.ts.map +1 -1
  4. package/dist/classes/AesKit.js +29 -33
  5. package/dist/classes/AesKit.js.map +1 -1
  6. package/dist/classes/index.d.ts +1 -1
  7. package/dist/classes/index.d.ts.map +1 -1
  8. package/dist/classes/index.js +1 -17
  9. package/dist/classes/index.js.map +1 -1
  10. package/dist/errors/AesError.js +2 -6
  11. package/dist/errors/AesError.js.map +1 -1
  12. package/dist/errors/index.d.ts +1 -1
  13. package/dist/errors/index.d.ts.map +1 -1
  14. package/dist/errors/index.js +1 -17
  15. package/dist/errors/index.js.map +1 -1
  16. package/dist/index.d.ts +5 -6
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +5 -22
  19. package/dist/index.js.map +1 -1
  20. package/dist/interfaces/AesKit.d.ts +3 -3
  21. package/dist/interfaces/AesKit.d.ts.map +1 -1
  22. package/dist/interfaces/AesKit.js +1 -2
  23. package/dist/interfaces/index.d.ts +1 -1
  24. package/dist/interfaces/index.d.ts.map +1 -1
  25. package/dist/interfaces/index.js +1 -17
  26. package/dist/interfaces/index.js.map +1 -1
  27. package/dist/internal/constants/version.js +3 -6
  28. package/dist/internal/constants/version.js.map +1 -1
  29. package/dist/internal/types/aes-data.d.ts +4 -4
  30. package/dist/internal/types/aes-data.d.ts.map +1 -1
  31. package/dist/internal/types/aes-data.js +1 -2
  32. package/dist/internal/types/aes-key-derivation.js +1 -2
  33. package/dist/internal/types/auth-tag.d.ts +2 -2
  34. package/dist/internal/types/auth-tag.d.ts.map +1 -1
  35. package/dist/internal/types/auth-tag.js +1 -2
  36. package/dist/internal/types/auth-tag.js.map +1 -1
  37. package/dist/internal/types/content-encryption-key.d.ts +2 -2
  38. package/dist/internal/types/content-encryption-key.d.ts.map +1 -1
  39. package/dist/internal/types/content-encryption-key.js +1 -2
  40. package/dist/internal/types/key-wrap.d.ts +1 -1
  41. package/dist/internal/types/key-wrap.d.ts.map +1 -1
  42. package/dist/internal/types/key-wrap.js +1 -2
  43. package/dist/internal/types/prepared-encryption.d.ts +3 -3
  44. package/dist/internal/types/prepared-encryption.d.ts.map +1 -1
  45. package/dist/internal/types/prepared-encryption.js +1 -2
  46. package/dist/internal/utils/aes-header.d.ts +3 -3
  47. package/dist/internal/utils/aes-header.d.ts.map +1 -1
  48. package/dist/internal/utils/aes-header.js +22 -30
  49. package/dist/internal/utils/aes-header.js.map +1 -1
  50. package/dist/internal/utils/calculate/calculate-aes-encryption.d.ts +2 -2
  51. package/dist/internal/utils/calculate/calculate-aes-encryption.d.ts.map +1 -1
  52. package/dist/internal/utils/calculate/calculate-aes-encryption.js +4 -8
  53. package/dist/internal/utils/calculate/calculate-aes-encryption.js.map +1 -1
  54. package/dist/internal/utils/calculate/calculate-content-encryption-key-size.d.ts +2 -2
  55. package/dist/internal/utils/calculate/calculate-content-encryption-key-size.d.ts.map +1 -1
  56. package/dist/internal/utils/calculate/calculate-content-encryption-key-size.js +4 -8
  57. package/dist/internal/utils/calculate/calculate-content-encryption-key-size.js.map +1 -1
  58. package/dist/internal/utils/calculate/calculate-key-wrap-encryption.d.ts +1 -1
  59. package/dist/internal/utils/calculate/calculate-key-wrap-encryption.d.ts.map +1 -1
  60. package/dist/internal/utils/calculate/calculate-key-wrap-encryption.js +3 -7
  61. package/dist/internal/utils/calculate/calculate-key-wrap-encryption.js.map +1 -1
  62. package/dist/internal/utils/calculate/calculate-key-wrap-size.d.ts +2 -2
  63. package/dist/internal/utils/calculate/calculate-key-wrap-size.d.ts.map +1 -1
  64. package/dist/internal/utils/calculate/calculate-key-wrap-size.js +3 -7
  65. package/dist/internal/utils/calculate/calculate-key-wrap-size.js.map +1 -1
  66. package/dist/internal/utils/calculate/calculate-pbkdf-hash.d.ts +2 -2
  67. package/dist/internal/utils/calculate/calculate-pbkdf-hash.d.ts.map +1 -1
  68. package/dist/internal/utils/calculate/calculate-pbkdf-hash.js +3 -7
  69. package/dist/internal/utils/calculate/calculate-pbkdf-hash.js.map +1 -1
  70. package/dist/internal/utils/calculate/calculate-rsa-oaep-hash.d.ts +2 -2
  71. package/dist/internal/utils/calculate/calculate-rsa-oaep-hash.d.ts.map +1 -1
  72. package/dist/internal/utils/calculate/calculate-rsa-oaep-hash.js +3 -7
  73. package/dist/internal/utils/calculate/calculate-rsa-oaep-hash.js.map +1 -1
  74. package/dist/internal/utils/content.d.ts +1 -1
  75. package/dist/internal/utils/content.d.ts.map +1 -1
  76. package/dist/internal/utils/content.js +11 -17
  77. package/dist/internal/utils/content.js.map +1 -1
  78. package/dist/internal/utils/data/auth-tag-hmac.d.ts +1 -1
  79. package/dist/internal/utils/data/auth-tag-hmac.d.ts.map +1 -1
  80. package/dist/internal/utils/data/auth-tag-hmac.js +9 -14
  81. package/dist/internal/utils/data/auth-tag-hmac.js.map +1 -1
  82. package/dist/internal/utils/data/auth-tag.d.ts +1 -1
  83. package/dist/internal/utils/data/auth-tag.d.ts.map +1 -1
  84. package/dist/internal/utils/data/auth-tag.js +9 -14
  85. package/dist/internal/utils/data/auth-tag.js.map +1 -1
  86. package/dist/internal/utils/data/get-initialisation-vector.d.ts +1 -1
  87. package/dist/internal/utils/data/get-initialisation-vector.d.ts.map +1 -1
  88. package/dist/internal/utils/data/get-initialisation-vector.js +6 -10
  89. package/dist/internal/utils/data/get-initialisation-vector.js.map +1 -1
  90. package/dist/internal/utils/data/split-content-encryption-key.d.ts +1 -1
  91. package/dist/internal/utils/data/split-content-encryption-key.d.ts.map +1 -1
  92. package/dist/internal/utils/data/split-content-encryption-key.js +4 -8
  93. package/dist/internal/utils/data/split-content-encryption-key.js.map +1 -1
  94. package/dist/internal/utils/diffie-hellman/diffie-hellman-key-wrap.d.ts +1 -1
  95. package/dist/internal/utils/diffie-hellman/diffie-hellman-key-wrap.d.ts.map +1 -1
  96. package/dist/internal/utils/diffie-hellman/diffie-hellman-key-wrap.js +20 -25
  97. package/dist/internal/utils/diffie-hellman/diffie-hellman-key-wrap.js.map +1 -1
  98. package/dist/internal/utils/diffie-hellman/diffie-hellman.d.ts +1 -1
  99. package/dist/internal/utils/diffie-hellman/diffie-hellman.d.ts.map +1 -1
  100. package/dist/internal/utils/diffie-hellman/diffie-hellman.js +16 -21
  101. package/dist/internal/utils/diffie-hellman/diffie-hellman.js.map +1 -1
  102. package/dist/internal/utils/diffie-hellman/shared-secret.d.ts +3 -3
  103. package/dist/internal/utils/diffie-hellman/shared-secret.d.ts.map +1 -1
  104. package/dist/internal/utils/diffie-hellman/shared-secret.js +22 -27
  105. package/dist/internal/utils/diffie-hellman/shared-secret.js.map +1 -1
  106. package/dist/internal/utils/encoded-aes.d.ts +2 -2
  107. package/dist/internal/utils/encoded-aes.d.ts.map +1 -1
  108. package/dist/internal/utils/encoded-aes.js +18 -23
  109. package/dist/internal/utils/encoded-aes.js.map +1 -1
  110. package/dist/internal/utils/encrypt-content.d.ts +1 -1
  111. package/dist/internal/utils/encrypt-content.d.ts.map +1 -1
  112. package/dist/internal/utils/encrypt-content.js +14 -18
  113. package/dist/internal/utils/encrypt-content.js.map +1 -1
  114. package/dist/internal/utils/encrypt-encoded.d.ts +2 -2
  115. package/dist/internal/utils/encrypt-encoded.d.ts.map +1 -1
  116. package/dist/internal/utils/encrypt-encoded.js +15 -19
  117. package/dist/internal/utils/encrypt-encoded.js.map +1 -1
  118. package/dist/internal/utils/encrypt-serialised.d.ts +3 -3
  119. package/dist/internal/utils/encrypt-serialised.d.ts.map +1 -1
  120. package/dist/internal/utils/encrypt-serialised.js +20 -24
  121. package/dist/internal/utils/encrypt-serialised.js.map +1 -1
  122. package/dist/internal/utils/encrypt-tokenised.d.ts +2 -2
  123. package/dist/internal/utils/encrypt-tokenised.d.ts.map +1 -1
  124. package/dist/internal/utils/encrypt-tokenised.js +18 -22
  125. package/dist/internal/utils/encrypt-tokenised.js.map +1 -1
  126. package/dist/internal/utils/encryption.d.ts +3 -3
  127. package/dist/internal/utils/encryption.d.ts.map +1 -1
  128. package/dist/internal/utils/encryption.js +22 -27
  129. package/dist/internal/utils/encryption.js.map +1 -1
  130. package/dist/internal/utils/get-key/get-decryption-key.d.ts +1 -1
  131. package/dist/internal/utils/get-key/get-decryption-key.d.ts.map +1 -1
  132. package/dist/internal/utils/get-key/get-decryption-key.js +11 -15
  133. package/dist/internal/utils/get-key/get-decryption-key.js.map +1 -1
  134. package/dist/internal/utils/get-key/get-encryption-key.d.ts +1 -1
  135. package/dist/internal/utils/get-key/get-encryption-key.d.ts.map +1 -1
  136. package/dist/internal/utils/get-key/get-encryption-key.js +11 -15
  137. package/dist/internal/utils/get-key/get-encryption-key.js.map +1 -1
  138. package/dist/internal/utils/key-derivation/concat-kdf.d.ts +1 -1
  139. package/dist/internal/utils/key-derivation/concat-kdf.d.ts.map +1 -1
  140. package/dist/internal/utils/key-derivation/concat-kdf.js +3 -7
  141. package/dist/internal/utils/key-derivation/concat-kdf.js.map +1 -1
  142. package/dist/internal/utils/key-derivation/pbkdf.d.ts +1 -1
  143. package/dist/internal/utils/key-derivation/pbkdf.d.ts.map +1 -1
  144. package/dist/internal/utils/key-derivation/pbkdf.js +7 -11
  145. package/dist/internal/utils/key-derivation/pbkdf.js.map +1 -1
  146. package/dist/internal/utils/key-types/get-ec-keys.d.ts +1 -1
  147. package/dist/internal/utils/key-types/get-ec-keys.d.ts.map +1 -1
  148. package/dist/internal/utils/key-types/get-ec-keys.js +11 -16
  149. package/dist/internal/utils/key-types/get-ec-keys.js.map +1 -1
  150. package/dist/internal/utils/key-types/get-oct-keys.d.ts +1 -1
  151. package/dist/internal/utils/key-types/get-oct-keys.d.ts.map +1 -1
  152. package/dist/internal/utils/key-types/get-oct-keys.js +14 -19
  153. package/dist/internal/utils/key-types/get-oct-keys.js.map +1 -1
  154. package/dist/internal/utils/key-types/get-okp-keys.d.ts +1 -1
  155. package/dist/internal/utils/key-types/get-okp-keys.d.ts.map +1 -1
  156. package/dist/internal/utils/key-types/get-okp-keys.js +11 -16
  157. package/dist/internal/utils/key-types/get-okp-keys.js.map +1 -1
  158. package/dist/internal/utils/key-types/get-rsa-keys.d.ts +1 -1
  159. package/dist/internal/utils/key-types/get-rsa-keys.d.ts.map +1 -1
  160. package/dist/internal/utils/key-types/get-rsa-keys.js +24 -29
  161. package/dist/internal/utils/key-types/get-rsa-keys.js.map +1 -1
  162. package/dist/internal/utils/key-wrap/ecb-key-wrap.d.ts +1 -1
  163. package/dist/internal/utils/key-wrap/ecb-key-wrap.d.ts.map +1 -1
  164. package/dist/internal/utils/key-wrap/ecb-key-wrap.js +12 -17
  165. package/dist/internal/utils/key-wrap/ecb-key-wrap.js.map +1 -1
  166. package/dist/internal/utils/key-wrap/gcm-key-wrap.d.ts +1 -1
  167. package/dist/internal/utils/key-wrap/gcm-key-wrap.d.ts.map +1 -1
  168. package/dist/internal/utils/key-wrap/gcm-key-wrap.js +14 -19
  169. package/dist/internal/utils/key-wrap/gcm-key-wrap.js.map +1 -1
  170. package/dist/internal/utils/key-wrap/key-wrap.d.ts +1 -1
  171. package/dist/internal/utils/key-wrap/key-wrap.d.ts.map +1 -1
  172. package/dist/internal/utils/key-wrap/key-wrap.js +11 -16
  173. package/dist/internal/utils/key-wrap/key-wrap.js.map +1 -1
  174. package/dist/internal/utils/oct/get-oct-dir-keys.d.ts +1 -1
  175. package/dist/internal/utils/oct/get-oct-dir-keys.d.ts.map +1 -1
  176. package/dist/internal/utils/oct/get-oct-dir-keys.js +13 -18
  177. package/dist/internal/utils/oct/get-oct-dir-keys.js.map +1 -1
  178. package/dist/internal/utils/oct/get-oct-key-key-wrap.d.ts +1 -1
  179. package/dist/internal/utils/oct/get-oct-key-key-wrap.d.ts.map +1 -1
  180. package/dist/internal/utils/oct/get-oct-key-key-wrap.js +19 -24
  181. package/dist/internal/utils/oct/get-oct-key-key-wrap.js.map +1 -1
  182. package/dist/internal/utils/oct/get-oct-pbkdf-key-wrap-keys.d.ts +1 -1
  183. package/dist/internal/utils/oct/get-oct-pbkdf-key-wrap-keys.d.ts.map +1 -1
  184. package/dist/internal/utils/oct/get-oct-pbkdf-key-wrap-keys.js +25 -30
  185. package/dist/internal/utils/oct/get-oct-pbkdf-key-wrap-keys.js.map +1 -1
  186. package/dist/internal/utils/prepare-encryption.d.ts +1 -1
  187. package/dist/internal/utils/prepare-encryption.d.ts.map +1 -1
  188. package/dist/internal/utils/prepare-encryption.js +5 -9
  189. package/dist/internal/utils/prepare-encryption.js.map +1 -1
  190. package/dist/internal/utils/serialised-aes.d.ts +2 -2
  191. package/dist/internal/utils/serialised-aes.d.ts.map +1 -1
  192. package/dist/internal/utils/serialised-aes.js +19 -24
  193. package/dist/internal/utils/serialised-aes.js.map +1 -1
  194. package/dist/internal/utils/tokenised-aes.d.ts +2 -2
  195. package/dist/internal/utils/tokenised-aes.d.ts.map +1 -1
  196. package/dist/internal/utils/tokenised-aes.js +22 -27
  197. package/dist/internal/utils/tokenised-aes.js.map +1 -1
  198. package/dist/internal/utils/validate-version.js +8 -12
  199. package/dist/internal/utils/validate-version.js.map +1 -1
  200. package/dist/mocks/create-mock-aes-kit.d.ts +4 -0
  201. package/dist/mocks/create-mock-aes-kit.d.ts.map +1 -0
  202. package/dist/mocks/create-mock-aes-kit.js +81 -0
  203. package/dist/mocks/create-mock-aes-kit.js.map +1 -0
  204. package/dist/mocks/jest.d.ts +5 -0
  205. package/dist/mocks/jest.d.ts.map +1 -0
  206. package/dist/mocks/jest.js +4 -0
  207. package/dist/mocks/jest.js.map +1 -0
  208. package/dist/mocks/vitest.d.ts +6 -0
  209. package/dist/mocks/vitest.d.ts.map +1 -0
  210. package/dist/mocks/vitest.js +5 -0
  211. package/dist/mocks/vitest.js.map +1 -0
  212. package/dist/types/aes-decryption-data.d.ts +3 -3
  213. package/dist/types/aes-decryption-data.d.ts.map +1 -1
  214. package/dist/types/aes-decryption-data.js +1 -2
  215. package/dist/types/aes-encryption-data.d.ts +3 -3
  216. package/dist/types/aes-encryption-data.d.ts.map +1 -1
  217. package/dist/types/aes-encryption-data.js +1 -2
  218. package/dist/types/aes-kit.d.ts +1 -1
  219. package/dist/types/aes-kit.d.ts.map +1 -1
  220. package/dist/types/aes-kit.js +1 -2
  221. package/dist/types/content.d.ts +1 -1
  222. package/dist/types/content.d.ts.map +1 -1
  223. package/dist/types/content.js +1 -2
  224. package/dist/types/curve.js +1 -2
  225. package/dist/types/index.d.ts +7 -7
  226. package/dist/types/index.d.ts.map +1 -1
  227. package/dist/types/index.js +6 -22
  228. package/dist/types/index.js.map +1 -1
  229. package/dist/types/types.d.ts +1 -1
  230. package/dist/types/types.d.ts.map +1 -1
  231. package/dist/types/types.js +1 -2
  232. package/dist/utils/index.d.ts +2 -2
  233. package/dist/utils/index.d.ts.map +1 -1
  234. package/dist/utils/index.js +2 -18
  235. package/dist/utils/index.js.map +1 -1
  236. package/dist/utils/is-aes.d.ts +1 -1
  237. package/dist/utils/is-aes.d.ts.map +1 -1
  238. package/dist/utils/is-aes.js +4 -10
  239. package/dist/utils/is-aes.js.map +1 -1
  240. package/dist/utils/parse-aes.d.ts +1 -1
  241. package/dist/utils/parse-aes.d.ts.map +1 -1
  242. package/dist/utils/parse-aes.js +15 -19
  243. package/dist/utils/parse-aes.js.map +1 -1
  244. package/package.json +22 -23
  245. package/CHANGELOG.md +0 -165
  246. package/MERMAID.md +0 -155
  247. package/__tests__/INTEROP-RESULTS.md +0 -66
  248. package/__tests__/esm-smoke.test.ts +0 -15
  249. package/__tests__/fixtures/keys.ts +0 -60
  250. package/__tests__/helpers/buffer-utils.ts +0 -11
  251. package/__tests__/helpers/index.ts +0 -2
  252. package/__tests__/helpers/jwe-adapter.ts +0 -123
  253. package/__tests__/jose-jwe.test.ts +0 -463
  254. package/__tests__/noble-ciphers.test.ts +0 -208
  255. package/dist/mocks/index.d.ts +0 -2
  256. package/dist/mocks/index.d.ts.map +0 -1
  257. package/dist/mocks/index.js +0 -6
  258. package/dist/mocks/index.js.map +0 -1
  259. package/dist/mocks/mock-aes-kit.d.ts +0 -4
  260. package/dist/mocks/mock-aes-kit.d.ts.map +0 -1
  261. package/dist/mocks/mock-aes-kit.js +0 -74
  262. package/dist/mocks/mock-aes-kit.js.map +0 -1
  263. package/jest.config.interop.mjs +0 -24
  264. package/tsconfig.interop.json +0 -9
package/README.md CHANGED
@@ -1,43 +1,32 @@
1
1
  # @lindorm/aes
2
2
 
3
- High-level **AES encryption & decryption** for Node.js with first-class
4
- TypeScript support. `@lindorm/aes` wraps key derivation, key wrapping, and
5
- authenticated content encryption behind a single `AesKit` class — so you can
6
- encrypt any data type in one call and get back a string, a structured record, or
7
- a compact token.
3
+ High-level AES encryption and decryption for Node.js with first-class TypeScript support. `@lindorm/aes` wraps key derivation, key wrapping, and authenticated content encryption behind a single `AesKit` class — encrypt any supported value in one call and get back a string, a structured record, or a compact token.
8
4
 
9
- It includes:
5
+ ## Features
10
6
 
11
- - `AesKit` — encrypt / decrypt / verify / assert in four output formats
12
- - **28 algorithm x encryption combinations** out of the box (EC, OKP, RSA, oct)
13
- - JWE-aligned key derivation: ECDH-ES, AES-KW, AES-GCM-KW, PBKDF2, RSA-OAEP
14
- - Automatic content-type detection (string, Buffer, object, array, number)
15
- - Unified header model with always-on AAD across all formats
16
- - Static helpers for format detection and parsing
17
-
18
- ---
7
+ - `AesKit` — `encrypt` / `decrypt` / `verify` / `assert` in four output formats: `encoded`, `record`, `serialised`, `tokenised`
8
+ - Content encryption with `A128GCM`, `A192GCM`, `A256GCM`, `A128CBC-HS256`, `A192CBC-HS384`, `A256CBC-HS512`
9
+ - Key management for the ECDH-ES family, RSA-OAEP family, AES-KW, AES-GCM-KW, PBES2, and `dir`
10
+ - Automatic content-type detection for strings, `Buffer`, objects, arrays, numbers, and booleans — original type is preserved on decrypt
11
+ - Unified header model with format-derived AAD across the string and serialised formats
12
+ - Static helpers for content-type detection, format detection, and parsing
13
+ - Two-step `prepareEncryption()` flow for advanced JWE-style encryption
14
+ - ESM-only
19
15
 
20
16
  ## Installation
21
17
 
22
18
  ```bash
23
19
  npm install @lindorm/aes
24
- # or
25
- yarn add @lindorm/aes
26
20
  ```
27
21
 
28
- Requires Node >= 18 and `@lindorm/kryptos` for key management.
29
-
30
- ---
22
+ This package is ESM-only and is published as `"type": "module"`. All examples use `import`.
31
23
 
32
24
  ## Quick start
33
25
 
34
- ### Encrypt and decrypt
35
-
36
26
  ```ts
37
27
  import { AesKit } from "@lindorm/aes";
38
28
  import { KryptosKit } from "@lindorm/kryptos";
39
29
 
40
- // Generate an encryption key — Kryptos defaults to A256GCM content encryption
41
30
  const kryptos = KryptosKit.generate.enc.oct({ algorithm: "A256KW" });
42
31
  const aes = new AesKit({ kryptos });
43
32
 
@@ -45,34 +34,27 @@ const encrypted = aes.encrypt("Hello World"); // base64url string
45
34
  const decrypted = aes.decrypt(encrypted); // "Hello World"
46
35
  ```
47
36
 
48
- ### Choose an output format
37
+ ### Output formats
49
38
 
50
- ```ts
51
- // Encoded — single base64url string (default)
52
- const encoded = aes.encrypt("secret");
39
+ `encrypt` returns a different shape depending on the `mode` argument:
53
40
 
54
- // Record — object with raw Buffer values
55
- const record = aes.encrypt("secret", "record");
56
-
57
- // Serialised JWE-like object with base64url strings (JSON-safe)
58
- const serialised = aes.encrypt("secret", "serialised");
59
- const json = JSON.stringify(serialised);
60
-
61
- // Tokenised — human-readable $-delimited string
62
- const token = aes.encrypt("secret", "tokenised");
63
- // "aes:<base64url(header)>$<iv>$<tag>$<ciphertext>"
41
+ ```ts
42
+ const encoded = aes.encrypt("secret"); // string (default: "encoded")
43
+ const record = aes.encrypt("secret", "record"); // AesEncryptionRecord
44
+ const serialised = aes.encrypt("secret", "serialised"); // SerialisedAesEncryption
45
+ const tokenised = aes.encrypt("secret", "tokenised"); // "aes:<header>$..."
64
46
  ```
65
47
 
66
48
  All four formats are accepted by `decrypt`, `verify`, and `assert`:
67
49
 
68
50
  ```ts
69
- aes.decrypt(encoded); // works
70
- aes.decrypt(record); // works
71
- aes.decrypt(JSON.parse(json)); // works
72
- aes.decrypt(token); // works
51
+ aes.decrypt(encoded);
52
+ aes.decrypt(record);
53
+ aes.decrypt(serialised);
54
+ aes.decrypt(tokenised);
73
55
  ```
74
56
 
75
- ### Encrypt any content type
57
+ ### Encrypt any supported content
76
58
 
77
59
  ```ts
78
60
  aes.encrypt("plain text"); // string
@@ -80,9 +62,9 @@ aes.encrypt(Buffer.from("binary")); // Buffer
80
62
  aes.encrypt({ user: "alice", role: "admin" }); // object
81
63
  aes.encrypt([1, 2, 3]); // array
82
64
  aes.encrypt(42); // number
65
+ aes.encrypt(true); // boolean
83
66
 
84
- // Content type is tracked decrypt returns the original type
85
- const obj = aes.decrypt<{ user: string }>(cipher); // { user: "alice", ... }
67
+ const obj = aes.decrypt<{ user: string }>(cipher); // typed return
86
68
  ```
87
69
 
88
70
  ### Verify and assert
@@ -91,7 +73,7 @@ const obj = aes.decrypt<{ user: string }>(cipher); // { user: "alice", ... }
91
73
  const cipher = aes.encrypt("secret");
92
74
 
93
75
  aes.verify("secret", cipher); // true
94
- aes.verify("wrong", cipher); // false
76
+ aes.verify("wrong", cipher); // false — never throws
95
77
 
96
78
  aes.assert("secret", cipher); // void — passes silently
97
79
  aes.assert("wrong", cipher); // throws AesError("Invalid AES cipher")
@@ -99,92 +81,47 @@ aes.assert("wrong", cipher); // throws AesError("Invalid AES cipher")
99
81
 
100
82
  ### Additional Authenticated Data (AAD)
101
83
 
102
- All formats automatically compute AAD from the base64url-encoded header,
103
- ensuring metadata integrity. For the raw record format you can also supply
104
- custom AAD:
84
+ The `encoded`, `serialised`, and `tokenised` formats automatically derive AAD from their base64url-encoded header — metadata integrity is bound to the ciphertext for free.
85
+
86
+ For raw `record`-mode payloads with no header, you can supply AAD on decrypt through `options.aad`:
105
87
 
106
88
  ```ts
89
+ const record = aes.encrypt("payload", "record");
107
90
  const aad = Buffer.from("request-id:abc-123");
108
91
 
109
- const cipher = aes.encrypt("payload", "record", { aad });
110
-
111
- aes.decrypt(cipher, { aad }); // "payload"
112
- aes.decrypt(cipher); // throws — AAD mismatch
113
- aes.decrypt(cipher, { aad: Buffer.from("wrong") }); // throws
92
+ aes.decrypt({ ...record, aad }); // pass AAD through the record
93
+ aes.decrypt(record, { aad }); // or via the options argument
114
94
  ```
115
95
 
116
- ---
117
-
118
- ## Supported algorithms
119
-
120
- ### Content encryption
121
-
122
- | Encryption | Mode | Key bits | Auth |
123
- | --------------- | ---- | -------- | --------------------------- |
124
- | `A128GCM` | GCM | 128 | built-in auth tag |
125
- | `A192GCM` | GCM | 192 | built-in auth tag |
126
- | `A256GCM` | GCM | 256 | built-in auth tag (default) |
127
- | `A128CBC-HS256` | CBC | 128 | HMAC-SHA256 |
128
- | `A192CBC-HS384` | CBC | 192 | HMAC-SHA384 |
129
- | `A256CBC-HS512` | CBC | 256 | HMAC-SHA512 |
130
-
131
- ### Key algorithms
132
-
133
- | Key type | Algorithms |
134
- | --------------- | ------------------------------------------------------------------------------------------------------------------------------ |
135
- | EC | `ECDH-ES`, `ECDH-ES+A128KW`, `ECDH-ES+A192KW`, `ECDH-ES+A256KW`, `ECDH-ES+A128GCMKW`, `ECDH-ES+A192GCMKW`, `ECDH-ES+A256GCMKW` |
136
- | OKP | `ECDH-ES`, `ECDH-ES+A128KW`, `ECDH-ES+A192KW`, `ECDH-ES+A256KW`, `ECDH-ES+A128GCMKW`, `ECDH-ES+A192GCMKW`, `ECDH-ES+A256GCMKW` |
137
- | RSA | `RSA-OAEP-256`, `RSA-OAEP-384`, `RSA-OAEP-512` |
138
- | oct (symmetric) | `A128KW`, `A192KW`, `A256KW`, `A128GCMKW`, `A192GCMKW`, `A256GCMKW`, `dir` |
139
- | oct (password) | `PBES2-HS256+A128KW`, `PBES2-HS384+A192KW`, `PBES2-HS512+A256KW` |
140
-
141
- Every key algorithm can be combined with every content encryption — giving you
142
- 28+ working combinations.
143
-
144
- ---
96
+ To encrypt with caller-controlled AAD use the two-step `prepareEncryption()` flow described in the API reference.
145
97
 
146
98
  ## API reference
147
99
 
148
100
  ### `new AesKit(options)`
149
101
 
150
102
  ```ts
151
- import { AesKit } from "@lindorm/aes";
152
-
153
- const aes = new AesKit({ kryptos });
154
-
155
- aes.kryptos; // the IKryptos instance (public readonly)
103
+ new AesKit({ kryptos, encryption });
156
104
  ```
157
105
 
158
- The content encryption algorithm is read from `kryptos.encryption` (defaults to
159
- `A256GCM` for generated enc keys). You can override it for imported keys that
160
- lack an encryption preference:
106
+ | Option | Type | Description |
107
+ | ------------ | -------------------- | --------------------------------------------------------------------------------- |
108
+ | `kryptos` | `IKryptos` | Required. The `@lindorm/kryptos` key instance used for key derivation / wrapping. |
109
+ | `encryption` | `KryptosEncryption?` | Optional. Falls back to `kryptos.encryption`, then to `"A256GCM"`. |
161
110
 
162
- ```ts
163
- const imported = KryptosKit.from.jwk(externalJwk);
164
- const aes = new AesKit({ kryptos: imported, encryption: "A128GCM" });
165
- ```
166
-
167
- ### `aes.encrypt(data, mode?, options?)`
111
+ `aes.kryptos` is exposed as a public readonly property.
168
112
 
169
- Encrypts data and returns one of four formats depending on `mode`:
170
-
171
- | Mode | Return type | Description |
172
- | --------------------- | ------------------------- | ----------------------------------------- |
173
- | `"encoded"` (default) | `string` | Base64url-encoded binary blob |
174
- | `"record"` | `AesEncryptionRecord` | Object with raw `Buffer` values |
175
- | `"serialised"` | `SerialisedAesEncryption` | Object with base64url strings (JSON-safe) |
176
- | `"tokenised"` | `string` | `$`-delimited human-readable token |
113
+ ### `aes.encrypt(data, mode?)`
177
114
 
178
115
  ```ts
179
- encrypt(data: AesContent, mode?: "encoded", options?: AesOperationOptions): string;
180
- encrypt(data: AesContent, mode: "record", options?: AesOperationOptions): AesEncryptionRecord;
181
- encrypt(data: AesContent, mode: "serialised", options?: AesOperationOptions): SerialisedAesEncryption;
182
- encrypt(data: AesContent, mode: "tokenised", options?: AesOperationOptions): string;
116
+ encrypt(data: AesContent, mode?: "encoded"): string;
117
+ encrypt(data: AesContent, mode: "record"): AesEncryptionRecord;
118
+ encrypt(data: AesContent, mode: "serialised"): SerialisedAesEncryption;
119
+ encrypt(data: AesContent, mode: "tokenised"): string;
183
120
  ```
184
121
 
185
- ### `aes.decrypt<T>(data, options?)`
122
+ Encrypts and returns one of four shapes. `mode` defaults to `"encoded"`.
186
123
 
187
- Decrypts any supported format back to the original content.
124
+ ### `aes.decrypt<T>(data, options?)`
188
125
 
189
126
  ```ts
190
127
  decrypt<T extends AesContent = string>(
@@ -193,14 +130,10 @@ decrypt<T extends AesContent = string>(
193
130
  ): T;
194
131
  ```
195
132
 
196
- Format is auto-detected: encoded string, tokenised string, record object, or
197
- serialised object all work transparently.
133
+ Auto-detects the input format. AAD is taken from the parsed input when present and otherwise from `options.aad`.
198
134
 
199
135
  ### `aes.verify(input, data, options?)`
200
136
 
201
- Returns `true` if decrypted data deeply equals `input`, `false` otherwise.
202
- Never throws.
203
-
204
137
  ```ts
205
138
  verify(
206
139
  input: AesContent,
@@ -209,10 +142,9 @@ verify(
209
142
  ): boolean;
210
143
  ```
211
144
 
212
- ### `aes.assert(input, data, options?)`
145
+ Returns `true` if the decrypted payload deeply equals `input`, `false` otherwise. Never throws.
213
146
 
214
- Throws `AesError("Invalid AES cipher")` if decrypted data does not match
215
- `input`.
147
+ ### `aes.assert(input, data, options?)`
216
148
 
217
149
  ```ts
218
150
  assert(
@@ -222,45 +154,57 @@ assert(
222
154
  ): void;
223
155
  ```
224
156
 
157
+ Throws `AesError("Invalid AES cipher")` when the decrypted payload does not match `input`.
158
+
225
159
  ### `aes.prepareEncryption()`
226
160
 
227
- Two-step JWE-compliant encryption. Returns key management parameters and an
228
- `encrypt()` closure that can be called later with the plaintext.
161
+ Two-step encryption flow that splits key management from content encryption. Returns header parameters, the wrapped CEK (when applicable), and an `encrypt` closure that accepts plaintext (and optional `aad`).
229
162
 
230
163
  ```ts
231
164
  const prepared = aes.prepareEncryption();
232
165
 
233
- // prepared.headerParams key exchange / PBKDF2 params for the header
234
- // prepared.publicEncryptionKey wrapped CEK (if applicable)
235
- // prepared.encrypt(data, { aad? }) — encrypts with the pre-derived key
166
+ const result = prepared.encrypt("payload", { aad: Buffer.from("ctx") });
167
+ // result: { authTag, content, contentType, initialisationVector }
168
+
169
+ // prepared.headerParams: { publicEncryptionJwk?, pbkdfIterations?, pbkdfSalt?,
170
+ // publicEncryptionIv?, publicEncryptionTag? }
171
+ // prepared.publicEncryptionKey: Buffer | undefined
236
172
  ```
237
173
 
238
174
  ### Static methods
239
175
 
240
176
  ```ts
241
- // Detect content type of any input
242
177
  AesKit.contentType("hello"); // "text/plain"
243
- AesKit.contentType(Buffer.from("")); // "application/octet-stream"
178
+ AesKit.contentType(Buffer.from("data")); // "application/octet-stream"
244
179
  AesKit.contentType({ a: 1 }); // "application/json"
245
180
 
246
- // Check if a string is in tokenised format
247
- AesKit.isAesTokenised("aes:eyJhbGci...$...$...$..."); // true
181
+ AesKit.isAesTokenised("aes:..."); // true
248
182
  AesKit.isAesTokenised("base64string"); // false
249
183
 
250
- // Parse any format into an AesDecryptionRecord (Buffer values)
251
- const record = AesKit.parse(encodedString);
252
- const record2 = AesKit.parse(tokenisedString);
253
- const record3 = AesKit.parse(serialisedObject);
184
+ AesKit.parse(encodedString); // ParsedAesDecryptionRecord
185
+ AesKit.parse(serialisedObject); // ParsedAesDecryptionRecord
186
+ AesKit.parse(decryptionRecord); // AesDecryptionRecord (returned as-is)
254
187
  ```
255
188
 
256
- ---
189
+ ### Top-level utilities
257
190
 
258
- ## Format version 1.0
191
+ ```ts
192
+ import {
193
+ isAesBufferData,
194
+ isAesSerialisedData,
195
+ isAesTokenised,
196
+ parseAes,
197
+ } from "@lindorm/aes";
259
198
 
260
- All output formats share a **unified header model** — a JSON object containing
261
- the algorithm, encryption, content type, key ID, version, and any key-exchange
262
- parameters. The header is base64url-encoded and used as AAD for authenticated
263
- encryption, binding the metadata to the ciphertext.
199
+ isAesBufferData(value); // value is AesDecryptionRecord
200
+ isAesSerialisedData(value); // value is SerialisedAesDecryption
201
+ isAesTokenised(value); // value starts with "aes:"
202
+ parseAes(input); // any AesDecryptionRecord
203
+ ```
204
+
205
+ ## Format reference
206
+
207
+ All output formats share a unified header — a JSON object containing the algorithm, encryption, content type, key id, version, and any key-exchange parameters.
264
208
 
265
209
  ### Header structure
266
210
 
@@ -271,81 +215,52 @@ type AesHeader = {
271
215
  enc: KryptosEncryption; // content encryption
272
216
  epk?: PublicEncryptionJwk; // ephemeral public key (ECDH)
273
217
  iv?: string; // public encryption IV (base64url, GCMKW)
274
- kid: string; // key ID
275
- p2c?: number; // PBKDF2 iterations
218
+ kid: string; // key id
219
+ p2c?: number; // PBKDF2 iteration count
276
220
  p2s?: string; // PBKDF2 salt (base64url)
277
221
  tag?: string; // public encryption tag (base64url, GCMKW)
278
- v: string; // format version ("1.0")
222
+ v: string; // format version
279
223
  };
280
224
  ```
281
225
 
282
226
  ### Encoded
283
227
 
284
- A single base64url string wrapping a binary layout:
228
+ A single base64url string. Binary layout:
285
229
 
286
230
  ```
287
231
  [2B header length][header JSON][2B CEK length][CEK][IV][Tag][Ciphertext]
288
232
  ```
289
233
 
290
- IV and tag sizes are derived from the encryption algorithm (e.g. 12B IV + 16B
291
- tag for GCM).
234
+ IV and tag sizes follow the encryption algorithm.
292
235
 
293
236
  ### Serialised
294
237
 
295
- A JSON-safe object with base64url-encoded fields:
238
+ JSON-safe object with base64url-encoded fields:
296
239
 
297
240
  ```ts
298
- {
299
- header: string; // base64url(JSON(header))
300
- cek?: string; // base64url — undefined for dir/ECDH-ES
301
- iv: string; // base64url
302
- tag: string; // base64url
303
- ciphertext: string; // base64url
304
- v: string; // "1.0"
305
- }
241
+ type SerialisedAesEncryption = {
242
+ cek: string | undefined;
243
+ ciphertext: string;
244
+ header: string; // base64url(JSON(header))
245
+ iv: string;
246
+ tag: string;
247
+ v: string;
248
+ };
306
249
  ```
307
250
 
308
251
  ### Tokenised
309
252
 
310
- A human-readable `$`-delimited string:
253
+ A `$`-delimited string prefixed with `aes:`:
311
254
 
312
255
  ```
313
256
  aes:<header>$[<cek>$]<iv>$<tag>$<ciphertext>
314
257
  ```
315
258
 
316
- All segments are base64url-encoded. The CEK segment is present for key-wrap
317
- algorithms and omitted for `dir` and `ECDH-ES`.
259
+ All segments are base64url-encoded. The CEK segment is omitted for `dir` and `ECDH-ES`.
318
260
 
319
261
  ### Record
320
262
 
321
- A plain object with raw `Buffer` values for all binary fields (`authTag`,
322
- `content`, `initialisationVector`, etc.). Useful when you need programmatic
323
- access to individual encryption components.
324
-
325
- ---
326
-
327
- ## Type definitions
328
-
329
- ### Core types
330
-
331
- ```ts
332
- type AesContent = Array<any> | Buffer | Dict | number | string;
333
-
334
- type AesContentType = "application/json" | "application/octet-stream" | "text/plain";
335
-
336
- type AesEncryptionMode = "encoded" | "record" | "serialised" | "tokenised";
337
-
338
- type AesKitOptions = {
339
- encryption?: KryptosEncryption;
340
- kryptos: IKryptos;
341
- };
342
-
343
- type AesOperationOptions = {
344
- aad?: Buffer;
345
- };
346
- ```
347
-
348
- ### Encryption record
263
+ A plain object with raw `Buffer` values for binary fields. Useful when you need programmatic access to individual encryption components.
349
264
 
350
265
  ```ts
351
266
  type AesEncryptionRecord = {
@@ -366,56 +281,29 @@ type AesEncryptionRecord = {
366
281
  };
367
282
  ```
368
283
 
369
- ### Serialised encryption
284
+ `AesDecryptionRecord` mirrors `AesEncryptionRecord` plus an optional `aad?: Buffer`. `ParsedAesDecryptionRecord` is the variant returned by string / serialised parsers and guarantees `aad: Buffer` is set.
370
285
 
371
- ```ts
372
- type SerialisedAesEncryption = {
373
- cek: string | undefined;
374
- ciphertext: string;
375
- header: string;
376
- iv: string;
377
- tag: string;
378
- v: string;
379
- };
380
- ```
381
-
382
- ### Decryption records
383
-
384
- `AesDecryptionRecord` mirrors `AesEncryptionRecord` with most fields optional —
385
- only `content`, `encryption`, and `initialisationVector` are required.
386
-
387
- `SerialisedAesDecryption` mirrors `SerialisedAesEncryption` with `cek` optional.
286
+ `SerialisedAesDecryption` mirrors `SerialisedAesEncryption` with `cek?: string` optional.
388
287
 
389
- `ParsedAesDecryptionRecord` is a stricter variant returned by parsers where all
390
- parsed fields are guaranteed non-optional.
391
-
392
- ---
393
-
394
- ## Utility functions
288
+ ## Type reference
395
289
 
396
290
  ```ts
397
- import {
398
- isAesBufferData,
399
- isAesSerialisedData,
400
- isAesTokenised,
401
- parseAes,
402
- } from "@lindorm/aes";
291
+ type AesContent = Array<any> | boolean | Buffer | Dict | number | string;
403
292
 
404
- // Type guard record with Buffer values
405
- isAesBufferData(data); // data is AesDecryptionRecord
293
+ type AesContentType = "application/json" | "application/octet-stream" | "text/plain";
406
294
 
407
- // Type guard record with string values
408
- isAesSerialisedData(data); // data is SerialisedAesDecryption
295
+ type AesEncryptionMode = "encoded" | "record" | "serialised" | "tokenised";
409
296
 
410
- // Format check — tokenised string (starts with "aes:")
411
- isAesTokenised(str); // boolean
297
+ type AesKitOptions = {
298
+ encryption?: KryptosEncryption;
299
+ kryptos: IKryptos;
300
+ };
412
301
 
413
- // Parse any format into AesDecryptionRecord
414
- const record = parseAes(anyEncryptedData);
302
+ type AesOperationOptions = {
303
+ aad?: Buffer;
304
+ };
415
305
  ```
416
306
 
417
- ---
418
-
419
307
  ## Error handling
420
308
 
421
309
  ```ts
@@ -425,27 +313,34 @@ try {
425
313
  aes.decrypt(corruptedData);
426
314
  } catch (error) {
427
315
  if (error instanceof AesError) {
428
- console.error("AES operation failed:", error.message);
316
+ // ...
429
317
  }
430
318
  }
431
319
  ```
432
320
 
433
- `AesError` extends `LindormError` from `@lindorm/errors`.
434
-
435
- ---
321
+ `AesError` extends `LindormError`.
436
322
 
437
323
  ## Testing helpers
438
324
 
439
- A mock factory is exported for unit tests:
325
+ `@lindorm/aes` ships separate mock entrypoints for Jest and Vitest. Both export `createMockAesKit()`, which returns an `IAesKit` whose methods are spies backed by the corresponding test framework.
440
326
 
441
327
  ```ts
442
- import { createMockAesKit } from "@lindorm/aes";
328
+ // vitest
329
+ import { createMockAesKit } from "@lindorm/aes/mocks/vitest";
330
+
331
+ const aes = createMockAesKit();
332
+ aes.encrypt("hello"); // spied — has a default base64url encode implementation
333
+ aes.decrypt(token); // spied — base64url decode (handles "aes:" prefix)
334
+ aes.verify(input, data); // spied — returns true by default
335
+ aes.assert(input, data); // spied — no-op by default
336
+ ```
443
337
 
444
- const mock = createMockAesKit();
445
- // mock.encrypt, mock.decrypt, mock.verify, mock.assert — all jest.fn()
338
+ ```ts
339
+ // jest
340
+ import { createMockAesKit } from "@lindorm/aes/mocks/jest";
446
341
  ```
447
342
 
448
- ---
343
+ The mock includes a `kryptos` instance built from the corresponding `@lindorm/kryptos` mock.
449
344
 
450
345
  ## License
451
346
 
@@ -1,7 +1,7 @@
1
- import { IKryptos } from "@lindorm/kryptos";
2
- import { AesOperationOptions, IAesKit } from "../interfaces";
3
- import { AesContent, AesContentType, AesDecryptionRecord, AesEncryptionRecord, AesKitOptions, ParsedAesDecryptionRecord, SerialisedAesDecryption, SerialisedAesEncryption } from "../types";
4
- import { PreparedEncryption } from "../internal/types/prepared-encryption";
1
+ import type { IKryptos } from "@lindorm/kryptos";
2
+ import type { AesOperationOptions, IAesKit } from "../interfaces/index.js";
3
+ import type { AesContent, AesContentType, AesDecryptionRecord, AesEncryptionRecord, AesKitOptions, ParsedAesDecryptionRecord, SerialisedAesDecryption, SerialisedAesEncryption } from "../types/index.js";
4
+ import type { PreparedEncryption } from "../internal/types/prepared-encryption.js";
5
5
  export declare class AesKit implements IAesKit {
6
6
  private readonly encryption;
7
7
  readonly kryptos: IKryptos;
@@ -1 +1 @@
1
- {"version":3,"file":"AesKit.d.ts","sourceRoot":"","sources":["../../src/classes/AesKit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,cAAc,EACd,mBAAmB,EAEnB,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAS3E,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,SAAgB,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,aAAa;IAKlC,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM;IACF,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,mBAAmB;IACf,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,uBAAuB;IACnB,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM;IA6CF,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,EAC1C,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,EAC5D,OAAO,CAAC,EAAE,mBAAmB,GAC5B,CAAC;IAqBG,MAAM,CACX,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,EAC5D,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO;IAQH,MAAM,CACX,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,EAC5D,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAKA,iBAAiB,IAAI,kBAAkB;WAWhC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc;WAIvC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM;WAI3C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB;WAC9C,KAAK,CAAC,IAAI,EAAE,uBAAuB,GAAG,yBAAyB;WAC/D,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;WACrD,KAAK,CACjB,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,GAC3D,mBAAmB;CAMvB"}
1
+ {"version":3,"file":"AesKit.d.ts","sourceRoot":"","sources":["../../src/classes/AesKit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,mBAAmB,EAEnB,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AASnF,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,SAAgB,OAAO,EAAE,QAAQ,CAAC;gBAEf,OAAO,EAAE,aAAa;IAKlC,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM;IACF,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,mBAAmB;IACf,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,uBAAuB;IACnB,OAAO,CACZ,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM;IA6CF,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,MAAM,EAC1C,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,EAC5D,OAAO,CAAC,EAAE,mBAAmB,GAC5B,CAAC;IAqBG,MAAM,CACX,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,EAC5D,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO;IAQH,MAAM,CACX,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,EAC5D,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAKA,iBAAiB,IAAI,kBAAkB;WAWhC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc;WAIvC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,MAAM;WAI3C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB;WAC9C,KAAK,CAAC,IAAI,EAAE,uBAAuB,GAAG,yBAAyB;WAC/D,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;WACrD,KAAK,CACjB,IAAI,EAAE,mBAAmB,GAAG,uBAAuB,GAAG,MAAM,GAC3D,mBAAmB;CAMvB"}