@lindorm/aes 0.1.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 (159) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +1 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/classes/AesCipher.d.ts +14 -0
  8. package/dist/src/classes/AesCipher.d.ts.map +1 -0
  9. package/dist/src/classes/AesCipher.js +50 -0
  10. package/dist/src/classes/AesCipher.js.map +1 -0
  11. package/dist/src/classes/index.d.ts +2 -0
  12. package/dist/src/classes/index.d.ts.map +1 -0
  13. package/dist/src/classes/index.js +18 -0
  14. package/dist/src/classes/index.js.map +1 -0
  15. package/dist/src/constants/index.d.ts +2 -0
  16. package/dist/src/constants/index.d.ts.map +1 -0
  17. package/dist/src/constants/index.js +18 -0
  18. package/dist/src/constants/index.js.map +1 -0
  19. package/dist/src/constants/version.d.ts +2 -0
  20. package/dist/src/constants/version.d.ts.map +1 -0
  21. package/dist/src/constants/version.js +5 -0
  22. package/dist/src/constants/version.js.map +1 -0
  23. package/dist/src/enums/AesEncryption.d.ts +9 -0
  24. package/dist/src/enums/AesEncryption.d.ts.map +1 -0
  25. package/dist/src/enums/AesEncryption.js +13 -0
  26. package/dist/src/enums/AesEncryption.js.map +1 -0
  27. package/dist/src/enums/AesEncryptionKeyAlgorithm.d.ts +9 -0
  28. package/dist/src/enums/AesEncryptionKeyAlgorithm.d.ts.map +1 -0
  29. package/dist/src/enums/AesEncryptionKeyAlgorithm.js +13 -0
  30. package/dist/src/enums/AesEncryptionKeyAlgorithm.js.map +1 -0
  31. package/dist/src/enums/AesFormat.d.ts +6 -0
  32. package/dist/src/enums/AesFormat.d.ts.map +1 -0
  33. package/dist/src/enums/AesFormat.js +10 -0
  34. package/dist/src/enums/AesFormat.js.map +1 -0
  35. package/dist/src/enums/AesIntegrityHash.d.ts +6 -0
  36. package/dist/src/enums/AesIntegrityHash.d.ts.map +1 -0
  37. package/dist/src/enums/AesIntegrityHash.js +10 -0
  38. package/dist/src/enums/AesIntegrityHash.js.map +1 -0
  39. package/dist/src/enums/index.d.ts +5 -0
  40. package/dist/src/enums/index.d.ts.map +1 -0
  41. package/dist/src/enums/index.js +21 -0
  42. package/dist/src/enums/index.js.map +1 -0
  43. package/dist/src/errors/AesError.d.ts +4 -0
  44. package/dist/src/errors/AesError.d.ts.map +1 -0
  45. package/dist/src/errors/AesError.js +8 -0
  46. package/dist/src/errors/AesError.js.map +1 -0
  47. package/dist/src/errors/index.d.ts +2 -0
  48. package/dist/src/errors/index.d.ts.map +1 -0
  49. package/dist/src/errors/index.js +18 -0
  50. package/dist/src/errors/index.js.map +1 -0
  51. package/dist/src/index.d.ts +6 -0
  52. package/dist/src/index.d.ts.map +1 -0
  53. package/dist/src/index.js +22 -0
  54. package/dist/src/index.js.map +1 -0
  55. package/dist/src/types/aes-cipher-class.d.ts +10 -0
  56. package/dist/src/types/aes-cipher-class.d.ts.map +1 -0
  57. package/dist/src/types/aes-cipher-class.js +3 -0
  58. package/dist/src/types/aes-cipher-class.js.map +1 -0
  59. package/dist/src/types/aes-cipher.d.ts +11 -0
  60. package/dist/src/types/aes-cipher.d.ts.map +1 -0
  61. package/dist/src/types/aes-cipher.js +3 -0
  62. package/dist/src/types/aes-cipher.js.map +1 -0
  63. package/dist/src/types/aes-data.d.ts +23 -0
  64. package/dist/src/types/aes-data.d.ts.map +1 -0
  65. package/dist/src/types/aes-data.js +3 -0
  66. package/dist/src/types/aes-data.js.map +1 -0
  67. package/dist/src/types/aes-encryption-data.d.ts +16 -0
  68. package/dist/src/types/aes-encryption-data.d.ts.map +1 -0
  69. package/dist/src/types/aes-encryption-data.js +3 -0
  70. package/dist/src/types/aes-encryption-data.js.map +1 -0
  71. package/dist/src/types/auth-tag.d.ts +31 -0
  72. package/dist/src/types/auth-tag.d.ts.map +1 -0
  73. package/dist/src/types/auth-tag.js +3 -0
  74. package/dist/src/types/auth-tag.js.map +1 -0
  75. package/dist/src/types/index.d.ts +6 -0
  76. package/dist/src/types/index.d.ts.map +1 -0
  77. package/dist/src/types/index.js +22 -0
  78. package/dist/src/types/index.js.map +1 -0
  79. package/dist/src/types/types.d.ts +10 -0
  80. package/dist/src/types/types.d.ts.map +1 -0
  81. package/dist/src/types/types.js +3 -0
  82. package/dist/src/types/types.js.map +1 -0
  83. package/dist/src/utils/aes-cipher.d.ts +6 -0
  84. package/dist/src/utils/aes-cipher.d.ts.map +1 -0
  85. package/dist/src/utils/aes-cipher.js +20 -0
  86. package/dist/src/utils/aes-cipher.js.map +1 -0
  87. package/dist/src/utils/aes-data.d.ts +4 -0
  88. package/dist/src/utils/aes-data.d.ts.map +1 -0
  89. package/dist/src/utils/aes-data.js +66 -0
  90. package/dist/src/utils/aes-data.js.map +1 -0
  91. package/dist/src/utils/index.d.ts +3 -0
  92. package/dist/src/utils/index.d.ts.map +1 -0
  93. package/dist/src/utils/index.js +19 -0
  94. package/dist/src/utils/index.js.map +1 -0
  95. package/dist/src/utils/private/auth-tag-hmac.d.ts +5 -0
  96. package/dist/src/utils/private/auth-tag-hmac.d.ts.map +1 -0
  97. package/dist/src/utils/private/auth-tag-hmac.js +25 -0
  98. package/dist/src/utils/private/auth-tag-hmac.js.map +1 -0
  99. package/dist/src/utils/private/auth-tag.d.ts +5 -0
  100. package/dist/src/utils/private/auth-tag.d.ts.map +1 -0
  101. package/dist/src/utils/private/auth-tag.js +58 -0
  102. package/dist/src/utils/private/auth-tag.js.map +1 -0
  103. package/dist/src/utils/private/decode-aes-string.d.ts +3 -0
  104. package/dist/src/utils/private/decode-aes-string.d.ts.map +1 -0
  105. package/dist/src/utils/private/decode-aes-string.js +39 -0
  106. package/dist/src/utils/private/decode-aes-string.js.map +1 -0
  107. package/dist/src/utils/private/ec/get-ec-keys.d.ts +21 -0
  108. package/dist/src/utils/private/ec/get-ec-keys.d.ts.map +1 -0
  109. package/dist/src/utils/private/ec/get-ec-keys.js +55 -0
  110. package/dist/src/utils/private/ec/get-ec-keys.js.map +1 -0
  111. package/dist/src/utils/private/ec/get-key-curve.d.ts +4 -0
  112. package/dist/src/utils/private/ec/get-key-curve.d.ts.map +1 -0
  113. package/dist/src/utils/private/ec/get-key-curve.js +37 -0
  114. package/dist/src/utils/private/ec/get-key-curve.js.map +1 -0
  115. package/dist/src/utils/private/encode-aes-string.d.ts +3 -0
  116. package/dist/src/utils/private/encode-aes-string.d.ts.map +1 -0
  117. package/dist/src/utils/private/encode-aes-string.js +25 -0
  118. package/dist/src/utils/private/encode-aes-string.js.map +1 -0
  119. package/dist/src/utils/private/get-decryption-key.d.ts +13 -0
  120. package/dist/src/utils/private/get-decryption-key.d.ts.map +1 -0
  121. package/dist/src/utils/private/get-decryption-key.js +33 -0
  122. package/dist/src/utils/private/get-decryption-key.js.map +1 -0
  123. package/dist/src/utils/private/get-encryption-keys.d.ts +16 -0
  124. package/dist/src/utils/private/get-encryption-keys.d.ts.map +1 -0
  125. package/dist/src/utils/private/get-encryption-keys.js +23 -0
  126. package/dist/src/utils/private/get-encryption-keys.js.map +1 -0
  127. package/dist/src/utils/private/get-initialisation-vector.d.ts +4 -0
  128. package/dist/src/utils/private/get-initialisation-vector.d.ts.map +1 -0
  129. package/dist/src/utils/private/get-initialisation-vector.js +23 -0
  130. package/dist/src/utils/private/get-initialisation-vector.js.map +1 -0
  131. package/dist/src/utils/private/oct/get-oct-keys.d.ts +14 -0
  132. package/dist/src/utils/private/oct/get-oct-keys.d.ts.map +1 -0
  133. package/dist/src/utils/private/oct/get-oct-keys.js +24 -0
  134. package/dist/src/utils/private/oct/get-oct-keys.js.map +1 -0
  135. package/dist/src/utils/private/rsa/generate-encryption-key.d.ts +4 -0
  136. package/dist/src/utils/private/rsa/generate-encryption-key.d.ts.map +1 -0
  137. package/dist/src/utils/private/rsa/generate-encryption-key.js +8 -0
  138. package/dist/src/utils/private/rsa/generate-encryption-key.js.map +1 -0
  139. package/dist/src/utils/private/rsa/get-oaep-hash.d.ts +3 -0
  140. package/dist/src/utils/private/rsa/get-oaep-hash.d.ts.map +1 -0
  141. package/dist/src/utils/private/rsa/get-oaep-hash.js +22 -0
  142. package/dist/src/utils/private/rsa/get-oaep-hash.js.map +1 -0
  143. package/dist/src/utils/private/rsa/get-rsa-keys.d.ts +21 -0
  144. package/dist/src/utils/private/rsa/get-rsa-keys.d.ts.map +1 -0
  145. package/dist/src/utils/private/rsa/get-rsa-keys.js +22 -0
  146. package/dist/src/utils/private/rsa/get-rsa-keys.js.map +1 -0
  147. package/dist/src/utils/private/rsa/public-encryption-key.d.ts +17 -0
  148. package/dist/src/utils/private/rsa/public-encryption-key.d.ts.map +1 -0
  149. package/dist/src/utils/private/rsa/public-encryption-key.js +56 -0
  150. package/dist/src/utils/private/rsa/public-encryption-key.js.map +1 -0
  151. package/dist/src/utils/private/secret/calculate-secret-length.d.ts +3 -0
  152. package/dist/src/utils/private/secret/calculate-secret-length.d.ts.map +1 -0
  153. package/dist/src/utils/private/secret/calculate-secret-length.js +21 -0
  154. package/dist/src/utils/private/secret/calculate-secret-length.js.map +1 -0
  155. package/dist/src/utils/private/secret/create-key-derivation.d.ts +10 -0
  156. package/dist/src/utils/private/secret/create-key-derivation.d.ts.map +1 -0
  157. package/dist/src/utils/private/secret/create-key-derivation.js +35 -0
  158. package/dist/src/utils/private/secret/create-key-derivation.js.map +1 -0
  159. package/package.json +33 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./aes-cipher"), exports);
18
+ __exportStar(require("./aes-cipher-class"), exports);
19
+ __exportStar(require("./aes-data"), exports);
20
+ __exportStar(require("./aes-encryption-data"), exports);
21
+ __exportStar(require("./types"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,qDAAmC;AACnC,6CAA2B;AAC3B,wDAAsC;AACtC,0CAAwB"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { EcKeyJwk } from "@lindorm/kryptos";
3
+ export type BufferFormat = "base64" | "base64url" | "hex";
4
+ export type Encryption = "aes-128-cbc" | "aes-192-cbc" | "aes-256-cbc" | "aes-128-gcm" | "aes-192-gcm" | "aes-256-gcm";
5
+ export type EncryptionKeyAlgorithm = "ECDH-ES" | "RSA-OAEP" | "RSA-OAEP-256" | "RSA-OAEP-384" | "RSA-OAEP-512" | "RSA-PRIVATE-KEY";
6
+ export type IntegrityHash = "sha256" | "sha384" | "sha512";
7
+ export type PublicEncryptionJwk = Pick<EcKeyJwk, "crv" | "kty" | "x" | "y">;
8
+ export type Secret = Buffer | string;
9
+ export type ShaHash = "sha1" | "sha256" | "sha384" | "sha512";
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/types/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC;AAE1D,MAAM,MAAM,UAAU,GAClB,aAAa,GACb,aAAa,GACb,aAAa,GACb,aAAa,GACb,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,UAAU,GACV,cAAc,GACd,cAAc,GACd,cAAc,GACd,iBAAiB,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAE5E,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/src/types/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { DecryptAesCipherOptions, EncryptAesCipherOptions, VerifyAesCipherOptions } from "../types";
2
+ export declare const encryptAesCipher: (options: EncryptAesCipherOptions) => string;
3
+ export declare const decryptAesCipher: ({ cipher, kryptos }: DecryptAesCipherOptions) => string;
4
+ export declare const verifyAesCipher: ({ cipher, data, kryptos }: VerifyAesCipherOptions) => boolean;
5
+ export declare const assertAesCipher: ({ cipher, data, kryptos }: VerifyAesCipherOptions) => void;
6
+ //# sourceMappingURL=aes-cipher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-cipher.d.ts","sourceRoot":"","sources":["../../../src/src/utils/aes-cipher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAKpG,eAAO,MAAM,gBAAgB,YAAa,uBAAuB,KAAG,MACzB,CAAC;AAE5C,eAAO,MAAM,gBAAgB,wBAAyB,uBAAuB,KAAG,MACtB,CAAC;AAE3D,eAAO,MAAM,eAAe,8BAA+B,sBAAsB,KAAG,OACpC,CAAC;AAEjD,eAAO,MAAM,eAAe,8BAA+B,sBAAsB,KAAG,IAGnF,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertAesCipher = exports.verifyAesCipher = exports.decryptAesCipher = exports.encryptAesCipher = void 0;
4
+ const errors_1 = require("../errors");
5
+ const aes_data_1 = require("./aes-data");
6
+ const decode_aes_string_1 = require("./private/decode-aes-string");
7
+ const encode_aes_string_1 = require("./private/encode-aes-string");
8
+ const encryptAesCipher = (options) => (0, encode_aes_string_1._encodeAesString)((0, aes_data_1.encryptAesData)(options));
9
+ exports.encryptAesCipher = encryptAesCipher;
10
+ const decryptAesCipher = ({ cipher, kryptos }) => (0, aes_data_1.decryptAesData)({ ...(0, decode_aes_string_1._decodeAesString)(cipher), kryptos });
11
+ exports.decryptAesCipher = decryptAesCipher;
12
+ const verifyAesCipher = ({ cipher, data, kryptos }) => (0, exports.decryptAesCipher)({ cipher, kryptos }) === data;
13
+ exports.verifyAesCipher = verifyAesCipher;
14
+ const assertAesCipher = ({ cipher, data, kryptos }) => {
15
+ if ((0, exports.verifyAesCipher)({ cipher, data, kryptos }))
16
+ return;
17
+ throw new errors_1.AesError("Invalid AES cipher");
18
+ };
19
+ exports.assertAesCipher = assertAesCipher;
20
+ //# sourceMappingURL=aes-cipher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-cipher.js","sourceRoot":"","sources":["../../../src/src/utils/aes-cipher.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AAErC,yCAA4D;AAC5D,mEAA+D;AAC/D,mEAA+D;AAExD,MAAM,gBAAgB,GAAG,CAAC,OAAgC,EAAU,EAAE,CAC3E,IAAA,oCAAgB,EAAC,IAAA,yBAAc,EAAC,OAAO,CAAC,CAAC,CAAC;AAD/B,QAAA,gBAAgB,oBACe;AAErC,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAA2B,EAAU,EAAE,CACvF,IAAA,yBAAc,EAAC,EAAE,GAAG,IAAA,oCAAgB,EAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAD9C,QAAA,gBAAgB,oBAC8B;AAEpD,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAA0B,EAAW,EAAE,CAC5F,IAAA,wBAAgB,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AADpC,QAAA,eAAe,mBACqB;AAE1C,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAA0B,EAAQ,EAAE;IACzF,IAAI,IAAA,uBAAe,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAAE,OAAO;IACvD,MAAM,IAAI,iBAAQ,CAAC,oBAAoB,CAAC,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,eAAe,mBAG1B"}
@@ -0,0 +1,4 @@
1
+ import { AesEncryptionData, DecryptAesDataOptions, EncryptAesDataOptions } from "../types";
2
+ export declare const encryptAesData: (options: EncryptAesDataOptions) => AesEncryptionData;
3
+ export declare const decryptAesData: (options: DecryptAesDataOptions) => string;
4
+ //# sourceMappingURL=aes-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-data.d.ts","sourceRoot":"","sources":["../../../src/src/utils/aes-data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAM3F,eAAO,MAAM,cAAc,YAAa,qBAAqB,KAAG,iBA4C/D,CAAC;AAEF,eAAO,MAAM,cAAc,YAAa,qBAAqB,KAAG,MAkC/D,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptAesData = exports.encryptAesData = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const constants_1 = require("../constants");
6
+ const auth_tag_1 = require("./private/auth-tag");
7
+ const get_decryption_key_1 = require("./private/get-decryption-key");
8
+ const get_encryption_keys_1 = require("./private/get-encryption-keys");
9
+ const get_initialisation_vector_1 = require("./private/get-initialisation-vector");
10
+ const encryptAesData = (options) => {
11
+ const { data, encryption = "aes-256-gcm", encryptionKeyAlgorithm, format = "base64url", integrityHash, kryptos, } = options;
12
+ const { encryptionKey, publicEncryptionJwk, publicEncryptionKey } = (0, get_encryption_keys_1._getEncryptionKeys)({
13
+ encryption,
14
+ kryptos,
15
+ encryptionKeyAlgorithm,
16
+ });
17
+ const initialisationVector = (0, get_initialisation_vector_1._getInitialisationVector)(encryption);
18
+ const cipher = (0, crypto_1.createCipheriv)(encryption, encryptionKey, initialisationVector);
19
+ const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
20
+ const content = Buffer.concat([cipher.update(buffer), cipher.final()]);
21
+ const authTag = (0, auth_tag_1._getAuthTag)({
22
+ encryption,
23
+ cipher,
24
+ content,
25
+ encryptionKey,
26
+ initialisationVector,
27
+ integrityHash,
28
+ });
29
+ return {
30
+ encryption,
31
+ authTag,
32
+ content,
33
+ format,
34
+ initialisationVector,
35
+ integrityHash,
36
+ keyId: kryptos.id ? Buffer.from(kryptos.id, format) : undefined,
37
+ encryptionKeyAlgorithm: encryptionKeyAlgorithm && publicEncryptionKey ? encryptionKeyAlgorithm : undefined,
38
+ publicEncryptionJwk,
39
+ publicEncryptionKey,
40
+ version: constants_1.LATEST_AES_VERSION,
41
+ };
42
+ };
43
+ exports.encryptAesData = encryptAesData;
44
+ const decryptAesData = (options) => {
45
+ const { authTag, content, encryption, encryptionKeyAlgorithm, initialisationVector, integrityHash, kryptos, publicEncryptionJwk, publicEncryptionKey, } = options;
46
+ const decryptionKey = (0, get_decryption_key_1._getDecryptionKey)({
47
+ encryption,
48
+ encryptionKeyAlgorithm,
49
+ kryptos,
50
+ publicEncryptionJwk,
51
+ publicEncryptionKey,
52
+ });
53
+ const decipher = (0, crypto_1.createDecipheriv)(encryption, decryptionKey, initialisationVector);
54
+ (0, auth_tag_1._setAuthTag)({
55
+ encryption,
56
+ authTag,
57
+ content,
58
+ decipher,
59
+ decryptionKey,
60
+ initialisationVector,
61
+ integrityHash,
62
+ });
63
+ return Buffer.concat([decipher.update(content), decipher.final()]).toString("utf-8");
64
+ };
65
+ exports.decryptAesData = decryptAesData;
66
+ //# sourceMappingURL=aes-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-data.js","sourceRoot":"","sources":["../../../src/src/utils/aes-data.ts"],"names":[],"mappings":";;;AAAA,mCAA0D;AAC1D,4CAAkD;AAElD,iDAA8D;AAC9D,qEAAiE;AACjE,uEAAmE;AACnE,mFAA+E;AAExE,MAAM,cAAc,GAAG,CAAC,OAA8B,EAAqB,EAAE;IAClF,MAAM,EACJ,IAAI,EACJ,UAAU,GAAG,aAAa,EAC1B,sBAAsB,EACtB,MAAM,GAAG,WAAW,EACpB,aAAa,EACb,OAAO,GACR,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,IAAA,wCAAkB,EAAC;QACrF,UAAU;QACV,OAAO;QACP,sBAAsB;KACvB,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,IAAA,oDAAwB,EAAC,UAAU,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,UAAU,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAA,sBAAW,EAAC;QAC1B,UAAU;QACV,MAAM;QACN,OAAO;QACP,aAAa;QACb,oBAAoB;QACpB,aAAa;KACd,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,OAAO;QACP,OAAO;QACP,MAAM;QACN,oBAAoB;QACpB,aAAa;QACb,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,sBAAsB,EACpB,sBAAsB,IAAI,mBAAmB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;QACpF,mBAAmB;QACnB,mBAAmB;QACnB,OAAO,EAAE,8BAAkB;KAC5B,CAAC;AACJ,CAAC,CAAC;AA5CW,QAAA,cAAc,kBA4CzB;AAEK,MAAM,cAAc,GAAG,CAAC,OAA8B,EAAU,EAAE;IACvE,MAAM,EACJ,OAAO,EACP,OAAO,EACP,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,mBAAmB,GACpB,GAAG,OAAO,CAAC;IAEZ,MAAM,aAAa,GAAG,IAAA,sCAAiB,EAAC;QACtC,UAAU;QACV,sBAAsB;QACtB,OAAO;QACP,mBAAmB;QACnB,mBAAmB;KACpB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,UAAU,EAAE,aAAa,EAAE,oBAAoB,CAAC,CAAC;IAEnF,IAAA,sBAAW,EAAC;QACV,UAAU;QACV,OAAO;QACP,OAAO;QACP,QAAQ;QACR,aAAa;QACb,oBAAoB;QACpB,aAAa;KACd,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvF,CAAC,CAAC;AAlCW,QAAA,cAAc,kBAkCzB"}
@@ -0,0 +1,3 @@
1
+ export * from "./aes-cipher";
2
+ export * from "./aes-data";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./aes-cipher"), exports);
18
+ __exportStar(require("./aes-data"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,6CAA2B"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { CreateHmacAuthTag, VerifyHmacAuthTag } from "../../types/auth-tag";
3
+ export declare const createHmacAuthTag: ({ content, encryptionKey, initialisationVector, integrityHash, }: CreateHmacAuthTag) => Buffer;
4
+ export declare const verifyHmacAuthTag: ({ authTag, content, encryptionKey, initialisationVector, integrityHash, }: VerifyHmacAuthTag) => void;
5
+ //# sourceMappingURL=auth-tag-hmac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-tag-hmac.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/private/auth-tag-hmac.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,eAAO,MAAM,iBAAiB,qEAK3B,iBAAiB,KAAG,MAOtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,8EAM3B,iBAAiB,KAAG,IAWtB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyHmacAuthTag = exports.createHmacAuthTag = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const errors_1 = require("../../errors");
6
+ const createHmacAuthTag = ({ content, encryptionKey, initialisationVector, integrityHash = "sha256", }) => {
7
+ const hmac = (0, crypto_1.createHmac)(integrityHash, encryptionKey);
8
+ hmac.update(initialisationVector);
9
+ hmac.update(content);
10
+ return hmac.digest();
11
+ };
12
+ exports.createHmacAuthTag = createHmacAuthTag;
13
+ const verifyHmacAuthTag = ({ authTag, content, encryptionKey, initialisationVector, integrityHash, }) => {
14
+ const generated = (0, exports.createHmacAuthTag)({
15
+ content,
16
+ encryptionKey,
17
+ initialisationVector,
18
+ integrityHash,
19
+ });
20
+ if (Buffer.compare(generated, authTag) === 0)
21
+ return;
22
+ throw new errors_1.AesError("Auth tag verification failed");
23
+ };
24
+ exports.verifyHmacAuthTag = verifyHmacAuthTag;
25
+ //# sourceMappingURL=auth-tag-hmac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-tag-hmac.js","sourceRoot":"","sources":["../../../../src/src/utils/private/auth-tag-hmac.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AACpC,yCAAwC;AAGjC,MAAM,iBAAiB,GAAG,CAAC,EAChC,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,aAAa,GAAG,QAAQ,GACN,EAAU,EAAE;IAC9B,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAEtD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC,CAAC;AAZW,QAAA,iBAAiB,qBAY5B;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,OAAO,EACP,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,aAAa,GACK,EAAQ,EAAE;IAC5B,MAAM,SAAS,GAAG,IAAA,yBAAiB,EAAC;QAClC,OAAO;QACP,aAAa;QACb,oBAAoB;QACpB,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAErD,MAAM,IAAI,iBAAQ,CAAC,8BAA8B,CAAC,CAAC;AACrD,CAAC,CAAC;AAjBW,QAAA,iBAAiB,qBAiB5B"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { GetAuthTagOptions, SetAuthTagOptions } from "../../types/auth-tag";
3
+ export declare const _getAuthTag: ({ encryption: algorithm, cipher, content, encryptionKey, initialisationVector, integrityHash, }: GetAuthTagOptions) => Buffer | undefined;
4
+ export declare const _setAuthTag: ({ encryption: algorithm, authTag, content, decipher, decryptionKey, initialisationVector, integrityHash, }: SetAuthTagOptions) => void;
5
+ //# sourceMappingURL=auth-tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-tag.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/private/auth-tag.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,eAAO,MAAM,WAAW,oGAOrB,iBAAiB,KAAG,MAAM,GAAG,SAuB/B,CAAC;AAEF,eAAO,MAAM,WAAW,+GAQrB,iBAAiB,KAAG,IA6BtB,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._setAuthTag = exports._getAuthTag = void 0;
4
+ const errors_1 = require("../../errors");
5
+ const auth_tag_hmac_1 = require("./auth-tag-hmac");
6
+ const _getAuthTag = ({ encryption: algorithm, cipher, content, encryptionKey, initialisationVector, integrityHash, }) => {
7
+ switch (algorithm) {
8
+ case "aes-128-cbc":
9
+ case "aes-192-cbc":
10
+ case "aes-256-cbc":
11
+ if (!integrityHash) {
12
+ return;
13
+ }
14
+ return (0, auth_tag_hmac_1.createHmacAuthTag)({
15
+ content,
16
+ encryptionKey,
17
+ initialisationVector,
18
+ integrityHash,
19
+ });
20
+ case "aes-128-gcm":
21
+ case "aes-192-gcm":
22
+ case "aes-256-gcm":
23
+ return cipher.getAuthTag();
24
+ default:
25
+ throw new errors_1.AesError("Unexpected algorithm");
26
+ }
27
+ };
28
+ exports._getAuthTag = _getAuthTag;
29
+ const _setAuthTag = ({ encryption: algorithm, authTag, content, decipher, decryptionKey, initialisationVector, integrityHash, }) => {
30
+ switch (algorithm) {
31
+ case "aes-128-cbc":
32
+ case "aes-192-cbc":
33
+ case "aes-256-cbc":
34
+ if (!authTag || !integrityHash) {
35
+ return;
36
+ }
37
+ (0, auth_tag_hmac_1.verifyHmacAuthTag)({
38
+ authTag,
39
+ content,
40
+ encryptionKey: decryptionKey,
41
+ initialisationVector,
42
+ integrityHash,
43
+ });
44
+ return;
45
+ case "aes-128-gcm":
46
+ case "aes-192-gcm":
47
+ case "aes-256-gcm":
48
+ if (!authTag) {
49
+ throw new errors_1.AesError("Auth tag is required for GCM decryption");
50
+ }
51
+ decipher.setAuthTag(authTag);
52
+ return;
53
+ default:
54
+ throw new errors_1.AesError("Unexpected algorithm");
55
+ }
56
+ };
57
+ exports._setAuthTag = _setAuthTag;
58
+ //# sourceMappingURL=auth-tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-tag.js","sourceRoot":"","sources":["../../../../src/src/utils/private/auth-tag.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AAExC,mDAAuE;AAEhE,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EAAE,SAAS,EACrB,MAAM,EACN,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,aAAa,GACK,EAAsB,EAAE;IAC1C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,OAAO,IAAA,iCAAiB,EAAC;gBACvB,OAAO;gBACP,aAAa;gBACb,oBAAoB;gBACpB,aAAa;aACd,CAAC,CAAC;QAEL,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,OAAQ,MAAoB,CAAC,UAAU,EAAE,CAAC;QAE5C;YACE,MAAM,IAAI,iBAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB;AAEK,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EAAE,SAAS,EACrB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,aAAa,GACK,EAAQ,EAAE;IAC5B,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,IAAA,iCAAiB,EAAC;gBAChB,OAAO;gBACP,OAAO;gBACP,aAAa,EAAE,aAAa;gBAC5B,oBAAoB;gBACpB,aAAa;aACd,CAAC,CAAC;YACH,OAAO;QAET,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,iBAAQ,CAAC,yCAAyC,CAAC,CAAC;YAChE,CAAC;YACA,QAAwB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO;QAET;YACE,MAAM,IAAI,iBAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AArCW,QAAA,WAAW,eAqCtB"}
@@ -0,0 +1,3 @@
1
+ import { AesEncryptionData } from "../../types";
2
+ export declare const _decodeAesString: (data: string) => AesEncryptionData;
3
+ //# sourceMappingURL=decode-aes-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-aes-string.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/private/decode-aes-string.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EAKlB,MAAM,aAAa,CAAC;AAIrB,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,iBAqC/C,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._decodeAesString = void 0;
4
+ const errors_1 = require("../../errors");
5
+ const regex = /(?<key>[a-z]+)=(?<value>.+)/g;
6
+ const _decodeAesString = (data) => {
7
+ const [_, alg, array, content] = data.split("$");
8
+ const algorithm = alg;
9
+ const items = array.split(",");
10
+ const values = {};
11
+ for (const item of items) {
12
+ const match = new RegExp(regex).exec(item);
13
+ if (!match?.groups?.key || !match?.groups?.value) {
14
+ throw new errors_1.AesError("Invalid AES cipher string", {
15
+ debug: { item },
16
+ });
17
+ }
18
+ values[match.groups.key] = match.groups.value;
19
+ }
20
+ const { cek, crv: curve, eka, f, ih, iv, kid, tag, v, x, y, kty: keyType } = values;
21
+ const crv = curve;
22
+ const format = f;
23
+ const kty = keyType;
24
+ return {
25
+ encryption: algorithm,
26
+ authTag: tag ? Buffer.from(tag, format) : undefined,
27
+ content: Buffer.from(content, format),
28
+ encryptionKeyAlgorithm: eka,
29
+ format,
30
+ integrityHash: ih,
31
+ initialisationVector: Buffer.from(iv, format),
32
+ keyId: kid ? Buffer.from(kid, format) : undefined,
33
+ publicEncryptionJwk: crv && x && y && kty ? { crv, x, y, kty } : undefined,
34
+ publicEncryptionKey: cek ? Buffer.from(cek, format) : undefined,
35
+ version: parseInt(v, 10),
36
+ };
37
+ };
38
+ exports._decodeAesString = _decodeAesString;
39
+ //# sourceMappingURL=decode-aes-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-aes-string.js","sourceRoot":"","sources":["../../../../src/src/utils/private/decode-aes-string.ts"],"names":[],"mappings":";;;AACA,yCAAwC;AASxC,MAAM,KAAK,GAAG,8BAA8B,CAAC;AAEtC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAqB,EAAE;IAClE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,GAAiB,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACjD,MAAM,IAAI,iBAAQ,CAAC,2BAA2B,EAAE;gBAC9C,KAAK,EAAE,EAAE,IAAI,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;IAChD,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACpF,MAAM,GAAG,GAAG,KAAqB,CAAC;IAClC,MAAM,MAAM,GAAG,CAAiB,CAAC;IACjC,MAAM,GAAG,GAAG,OAAe,CAAC;IAE5B,OAAO;QACL,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACnD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QACrC,sBAAsB,EAAE,GAA6B;QACrD,MAAM;QACN,aAAa,EAAE,EAAmB;QAClC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;QAC7C,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACjD,mBAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;QAC1E,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;KACzB,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,gBAAgB,oBAqC3B"}
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ import { Kryptos } from "@lindorm/kryptos";
3
+ import { Encryption, EncryptionKeyAlgorithm, PublicEncryptionJwk } from "../../../types";
4
+ type EncryptOptions = {
5
+ encryption: Encryption;
6
+ encryptionKeyAlgorithm?: EncryptionKeyAlgorithm;
7
+ kryptos: Kryptos;
8
+ };
9
+ type EncryptResult = {
10
+ encryptionKey: Buffer;
11
+ publicEncryptionJwk: PublicEncryptionJwk;
12
+ };
13
+ type DecryptOptions = {
14
+ encryption: Encryption;
15
+ kryptos: Kryptos;
16
+ publicEncryptionJwk: PublicEncryptionJwk;
17
+ };
18
+ export declare const _getEcEncryptionKeys: ({ encryption, encryptionKeyAlgorithm, kryptos, }: EncryptOptions) => EncryptResult;
19
+ export declare const _getEcDecryptionKey: ({ encryption, kryptos, publicEncryptionJwk, }: DecryptOptions) => Buffer;
20
+ export {};
21
+ //# sourceMappingURL=get-ec-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ec-keys.d.ts","sourceRoot":"","sources":["../../../../../src/src/utils/private/ec/get-ec-keys.ts"],"names":[],"mappings":";AAAA,OAAO,EAAY,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIzF,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,qDAI9B,cAAc,KAAG,aA+BnB,CAAC;AAEF,eAAO,MAAM,mBAAmB,kDAI7B,cAAc,KAAG,MAuBnB,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._getEcDecryptionKey = exports._getEcEncryptionKeys = void 0;
4
+ const kryptos_1 = require("@lindorm/kryptos");
5
+ const crypto_1 = require("crypto");
6
+ const errors_1 = require("../../../errors");
7
+ const create_key_derivation_1 = require("../secret/create-key-derivation");
8
+ const get_key_curve_1 = require("./get-key-curve");
9
+ const _getEcEncryptionKeys = ({ encryption, encryptionKeyAlgorithm, kryptos, }) => {
10
+ if (encryptionKeyAlgorithm !== "ECDH-ES") {
11
+ throw new errors_1.AesError("Mismatched options values", {
12
+ debug: { encryptionKeyAlgorithm, kryptos },
13
+ });
14
+ }
15
+ const { curve, publicKey } = kryptos.export("raw");
16
+ if (!publicKey) {
17
+ throw new errors_1.AesError("Missing public key");
18
+ }
19
+ if (!curve) {
20
+ throw new errors_1.AesError("Missing curve");
21
+ }
22
+ const senderKeyPair = (0, crypto_1.createECDH)((0, get_key_curve_1._getKeyCurve)(curve));
23
+ const senderPublicKey = senderKeyPair.generateKeys();
24
+ const sharedSecret = senderKeyPair.computeSecret(publicKey);
25
+ const encryptionKey = (0, create_key_derivation_1._createKeyDerivation)({ encryption, initialKeyringMaterial: sharedSecret });
26
+ const publicEncryptionKryptos = kryptos_1.Kryptos.from("raw", {
27
+ id: kryptos.id,
28
+ curve: (0, get_key_curve_1._getNistCurve)(curve),
29
+ publicKey: senderPublicKey,
30
+ type: "EC",
31
+ });
32
+ const { crv, kty, x, y } = publicEncryptionKryptos.export("jwk");
33
+ return { encryptionKey, publicEncryptionJwk: { crv, kty, x, y } };
34
+ };
35
+ exports._getEcEncryptionKeys = _getEcEncryptionKeys;
36
+ const _getEcDecryptionKey = ({ encryption, kryptos, publicEncryptionJwk, }) => {
37
+ const { curve, privateKey } = kryptos.export("raw");
38
+ if (!privateKey) {
39
+ throw new errors_1.AesError("Missing private key");
40
+ }
41
+ if (!curve) {
42
+ throw new errors_1.AesError("Missing curve");
43
+ }
44
+ const receiverKeyPair = (0, crypto_1.createECDH)((0, get_key_curve_1._getKeyCurve)(curve));
45
+ receiverKeyPair.setPrivateKey(privateKey);
46
+ const publicEncryptionKryptos = kryptos_1.Kryptos.from("jwk", publicEncryptionJwk);
47
+ const { publicKey } = publicEncryptionKryptos.export("raw");
48
+ if (!publicKey) {
49
+ throw new errors_1.AesError("Missing public key");
50
+ }
51
+ const sharedSecret = receiverKeyPair.computeSecret(publicKey);
52
+ return (0, create_key_derivation_1._createKeyDerivation)({ encryption, initialKeyringMaterial: sharedSecret });
53
+ };
54
+ exports._getEcDecryptionKey = _getEcDecryptionKey;
55
+ //# sourceMappingURL=get-ec-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-ec-keys.js","sourceRoot":"","sources":["../../../../../src/src/utils/private/ec/get-ec-keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { KryptosCurve } from "@lindorm/kryptos";
2
+ export declare const _getKeyCurve: (curve: KryptosCurve) => KryptosCurve;
3
+ export declare const _getNistCurve: (curve: KryptosCurve) => KryptosCurve;
4
+ //# sourceMappingURL=get-key-curve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-key-curve.d.ts","sourceRoot":"","sources":["../../../../../src/src/utils/private/ec/get-key-curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,eAAO,MAAM,YAAY,UAAW,YAAY,KAAG,YAiBlD,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,YAAY,KAAG,YAiBnD,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._getNistCurve = exports._getKeyCurve = void 0;
4
+ const errors_1 = require("../../../errors");
5
+ const _getKeyCurve = (curve) => {
6
+ switch (curve) {
7
+ case "P-256":
8
+ case "secp256k1":
9
+ return "secp256k1";
10
+ case "P-384":
11
+ case "secp384r1":
12
+ return "secp384r1";
13
+ case "P-521":
14
+ case "secp521r1":
15
+ return "secp521r1";
16
+ default:
17
+ throw new errors_1.AesError("Unsupported curve");
18
+ }
19
+ };
20
+ exports._getKeyCurve = _getKeyCurve;
21
+ const _getNistCurve = (curve) => {
22
+ switch (curve) {
23
+ case "P-256":
24
+ case "secp256k1":
25
+ return "P-256";
26
+ case "P-384":
27
+ case "secp384r1":
28
+ return "P-384";
29
+ case "P-521":
30
+ case "secp521r1":
31
+ return "P-521";
32
+ default:
33
+ throw new errors_1.AesError("Unsupported curve");
34
+ }
35
+ };
36
+ exports._getNistCurve = _getNistCurve;
37
+ //# sourceMappingURL=get-key-curve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-key-curve.js","sourceRoot":"","sources":["../../../../../src/src/utils/private/ec/get-key-curve.ts"],"names":[],"mappings":";;;AACA,4CAA2C;AAEpC,MAAM,YAAY,GAAG,CAAC,KAAmB,EAAgB,EAAE;IAChE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QAErB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QAErB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QAErB;YACE,MAAM,IAAI,iBAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB;AAEK,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAgB,EAAE;IACjE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QAEjB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QAEjB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;QAEjB;YACE,MAAM,IAAI,iBAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,aAAa,iBAiBxB"}
@@ -0,0 +1,3 @@
1
+ import { AesEncryptionData } from "../../types";
2
+ export declare const _encodeAesString: ({ encryption: algorithm, authTag, content, encryptionKeyAlgorithm, format, initialisationVector, integrityHash, keyId, publicEncryptionJwk, publicEncryptionKey, version, }: AesEncryptionData) => string;
3
+ //# sourceMappingURL=encode-aes-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-aes-string.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/private/encode-aes-string.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,gBAAgB,gLAY1B,iBAAiB,KAAG,MAoBtB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._encodeAesString = void 0;
4
+ const utils_1 = require("@lindorm/utils");
5
+ const _encodeAesString = ({ encryption: algorithm, authTag, content, encryptionKeyAlgorithm, format, initialisationVector, integrityHash, keyId, publicEncryptionJwk, publicEncryptionKey, version, }) => {
6
+ const values = (0, utils_1.removeEmpty)({
7
+ v: version,
8
+ f: format,
9
+ cek: publicEncryptionKey?.toString(format),
10
+ crv: publicEncryptionJwk?.crv,
11
+ eka: encryptionKeyAlgorithm,
12
+ ih: integrityHash,
13
+ iv: initialisationVector.toString(format),
14
+ kid: publicEncryptionKey && keyId ? keyId.toString(format) : undefined,
15
+ tag: authTag?.toString(format),
16
+ x: publicEncryptionJwk?.x,
17
+ y: publicEncryptionJwk?.y,
18
+ });
19
+ const array = Object.entries(values).map(([key, value]) => `${key}=${value}`);
20
+ const str = array.join(",");
21
+ const cnt = content.toString(format);
22
+ return `$${algorithm}$${str}$${cnt}$`;
23
+ };
24
+ exports._encodeAesString = _encodeAesString;
25
+ //# sourceMappingURL=encode-aes-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-aes-string.js","sourceRoot":"","sources":["../../../../src/src/utils/private/encode-aes-string.ts"],"names":[],"mappings":";;;AAAA,0CAA6C;AAGtC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,UAAU,EAAE,SAAS,EACrB,OAAO,EACP,OAAO,EACP,sBAAsB,EACtB,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GACW,EAAU,EAAE;IAC9B,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC;QACzB,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,MAAM;QACT,GAAG,EAAE,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC1C,GAAG,EAAE,mBAAmB,EAAE,GAAG;QAC7B,GAAG,EAAE,sBAAsB;QAC3B,EAAE,EAAE,aAAa;QACjB,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,GAAG,EAAE,mBAAmB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACtE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC9B,CAAC,EAAE,mBAAmB,EAAE,CAAC;QACzB,CAAC,EAAE,mBAAmB,EAAE,CAAC;KAC1B,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAE9E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AACxC,CAAC,CAAC;AAhCW,QAAA,gBAAgB,oBAgC3B"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" />
2
+ import { Kryptos } from "@lindorm/kryptos";
3
+ import { Encryption, EncryptionKeyAlgorithm, PublicEncryptionJwk } from "../../types";
4
+ type Options = {
5
+ encryption: Encryption;
6
+ encryptionKeyAlgorithm?: EncryptionKeyAlgorithm;
7
+ kryptos: Kryptos;
8
+ publicEncryptionJwk?: PublicEncryptionJwk;
9
+ publicEncryptionKey?: Buffer;
10
+ };
11
+ export declare const _getDecryptionKey: ({ encryption, encryptionKeyAlgorithm, kryptos, publicEncryptionJwk, publicEncryptionKey, }: Options) => Buffer;
12
+ export {};
13
+ //# sourceMappingURL=get-decryption-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-decryption-key.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/private/get-decryption-key.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKtF,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,+FAM3B,OAAO,KAAG,MA0BZ,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._getDecryptionKey = void 0;
4
+ const errors_1 = require("../../errors");
5
+ const get_ec_keys_1 = require("./ec/get-ec-keys");
6
+ const get_oct_keys_1 = require("./oct/get-oct-keys");
7
+ const get_rsa_keys_1 = require("./rsa/get-rsa-keys");
8
+ const _getDecryptionKey = ({ encryption, encryptionKeyAlgorithm, kryptos, publicEncryptionJwk, publicEncryptionKey, }) => {
9
+ switch (kryptos.type) {
10
+ case "EC":
11
+ if (!publicEncryptionJwk) {
12
+ throw new errors_1.AesError("Unable to decrypt AES cipher without public encryption JWK", {
13
+ debug: { publicEncryptionJwk },
14
+ });
15
+ }
16
+ return (0, get_ec_keys_1._getEcDecryptionKey)({ encryption, kryptos, publicEncryptionJwk });
17
+ case "RSA":
18
+ if (!publicEncryptionKey) {
19
+ throw new errors_1.AesError("Unable to decrypt AES cipher without public encryption key", {
20
+ debug: { publicEncryptionKey },
21
+ });
22
+ }
23
+ return (0, get_rsa_keys_1._getRsaDecryptionKey)({ encryptionKeyAlgorithm, kryptos, publicEncryptionKey });
24
+ case "oct":
25
+ return (0, get_oct_keys_1._getOctDecryptionKey)({ encryption, kryptos });
26
+ default:
27
+ throw new errors_1.AesError("Unexpected encryption key type", {
28
+ debug: { kryptos },
29
+ });
30
+ }
31
+ };
32
+ exports._getDecryptionKey = _getDecryptionKey;
33
+ //# sourceMappingURL=get-decryption-key.js.map