@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.
- package/CHANGELOG.md +10 -0
- package/README.md +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/src/classes/AesCipher.d.ts +14 -0
- package/dist/src/classes/AesCipher.d.ts.map +1 -0
- package/dist/src/classes/AesCipher.js +50 -0
- package/dist/src/classes/AesCipher.js.map +1 -0
- package/dist/src/classes/index.d.ts +2 -0
- package/dist/src/classes/index.d.ts.map +1 -0
- package/dist/src/classes/index.js +18 -0
- package/dist/src/classes/index.js.map +1 -0
- package/dist/src/constants/index.d.ts +2 -0
- package/dist/src/constants/index.d.ts.map +1 -0
- package/dist/src/constants/index.js +18 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/constants/version.d.ts +2 -0
- package/dist/src/constants/version.d.ts.map +1 -0
- package/dist/src/constants/version.js +5 -0
- package/dist/src/constants/version.js.map +1 -0
- package/dist/src/enums/AesEncryption.d.ts +9 -0
- package/dist/src/enums/AesEncryption.d.ts.map +1 -0
- package/dist/src/enums/AesEncryption.js +13 -0
- package/dist/src/enums/AesEncryption.js.map +1 -0
- package/dist/src/enums/AesEncryptionKeyAlgorithm.d.ts +9 -0
- package/dist/src/enums/AesEncryptionKeyAlgorithm.d.ts.map +1 -0
- package/dist/src/enums/AesEncryptionKeyAlgorithm.js +13 -0
- package/dist/src/enums/AesEncryptionKeyAlgorithm.js.map +1 -0
- package/dist/src/enums/AesFormat.d.ts +6 -0
- package/dist/src/enums/AesFormat.d.ts.map +1 -0
- package/dist/src/enums/AesFormat.js +10 -0
- package/dist/src/enums/AesFormat.js.map +1 -0
- package/dist/src/enums/AesIntegrityHash.d.ts +6 -0
- package/dist/src/enums/AesIntegrityHash.d.ts.map +1 -0
- package/dist/src/enums/AesIntegrityHash.js +10 -0
- package/dist/src/enums/AesIntegrityHash.js.map +1 -0
- package/dist/src/enums/index.d.ts +5 -0
- package/dist/src/enums/index.d.ts.map +1 -0
- package/dist/src/enums/index.js +21 -0
- package/dist/src/enums/index.js.map +1 -0
- package/dist/src/errors/AesError.d.ts +4 -0
- package/dist/src/errors/AesError.d.ts.map +1 -0
- package/dist/src/errors/AesError.js +8 -0
- package/dist/src/errors/AesError.js.map +1 -0
- package/dist/src/errors/index.d.ts +2 -0
- package/dist/src/errors/index.d.ts.map +1 -0
- package/dist/src/errors/index.js +18 -0
- package/dist/src/errors/index.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +22 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/aes-cipher-class.d.ts +10 -0
- package/dist/src/types/aes-cipher-class.d.ts.map +1 -0
- package/dist/src/types/aes-cipher-class.js +3 -0
- package/dist/src/types/aes-cipher-class.js.map +1 -0
- package/dist/src/types/aes-cipher.d.ts +11 -0
- package/dist/src/types/aes-cipher.d.ts.map +1 -0
- package/dist/src/types/aes-cipher.js +3 -0
- package/dist/src/types/aes-cipher.js.map +1 -0
- package/dist/src/types/aes-data.d.ts +23 -0
- package/dist/src/types/aes-data.d.ts.map +1 -0
- package/dist/src/types/aes-data.js +3 -0
- package/dist/src/types/aes-data.js.map +1 -0
- package/dist/src/types/aes-encryption-data.d.ts +16 -0
- package/dist/src/types/aes-encryption-data.d.ts.map +1 -0
- package/dist/src/types/aes-encryption-data.js +3 -0
- package/dist/src/types/aes-encryption-data.js.map +1 -0
- package/dist/src/types/auth-tag.d.ts +31 -0
- package/dist/src/types/auth-tag.d.ts.map +1 -0
- package/dist/src/types/auth-tag.js +3 -0
- package/dist/src/types/auth-tag.js.map +1 -0
- package/dist/src/types/index.d.ts +6 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +22 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/types.d.ts +10 -0
- package/dist/src/types/types.d.ts.map +1 -0
- package/dist/src/types/types.js +3 -0
- package/dist/src/types/types.js.map +1 -0
- package/dist/src/utils/aes-cipher.d.ts +6 -0
- package/dist/src/utils/aes-cipher.d.ts.map +1 -0
- package/dist/src/utils/aes-cipher.js +20 -0
- package/dist/src/utils/aes-cipher.js.map +1 -0
- package/dist/src/utils/aes-data.d.ts +4 -0
- package/dist/src/utils/aes-data.d.ts.map +1 -0
- package/dist/src/utils/aes-data.js +66 -0
- package/dist/src/utils/aes-data.js.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/private/auth-tag-hmac.d.ts +5 -0
- package/dist/src/utils/private/auth-tag-hmac.d.ts.map +1 -0
- package/dist/src/utils/private/auth-tag-hmac.js +25 -0
- package/dist/src/utils/private/auth-tag-hmac.js.map +1 -0
- package/dist/src/utils/private/auth-tag.d.ts +5 -0
- package/dist/src/utils/private/auth-tag.d.ts.map +1 -0
- package/dist/src/utils/private/auth-tag.js +58 -0
- package/dist/src/utils/private/auth-tag.js.map +1 -0
- package/dist/src/utils/private/decode-aes-string.d.ts +3 -0
- package/dist/src/utils/private/decode-aes-string.d.ts.map +1 -0
- package/dist/src/utils/private/decode-aes-string.js +39 -0
- package/dist/src/utils/private/decode-aes-string.js.map +1 -0
- package/dist/src/utils/private/ec/get-ec-keys.d.ts +21 -0
- package/dist/src/utils/private/ec/get-ec-keys.d.ts.map +1 -0
- package/dist/src/utils/private/ec/get-ec-keys.js +55 -0
- package/dist/src/utils/private/ec/get-ec-keys.js.map +1 -0
- package/dist/src/utils/private/ec/get-key-curve.d.ts +4 -0
- package/dist/src/utils/private/ec/get-key-curve.d.ts.map +1 -0
- package/dist/src/utils/private/ec/get-key-curve.js +37 -0
- package/dist/src/utils/private/ec/get-key-curve.js.map +1 -0
- package/dist/src/utils/private/encode-aes-string.d.ts +3 -0
- package/dist/src/utils/private/encode-aes-string.d.ts.map +1 -0
- package/dist/src/utils/private/encode-aes-string.js +25 -0
- package/dist/src/utils/private/encode-aes-string.js.map +1 -0
- package/dist/src/utils/private/get-decryption-key.d.ts +13 -0
- package/dist/src/utils/private/get-decryption-key.d.ts.map +1 -0
- package/dist/src/utils/private/get-decryption-key.js +33 -0
- package/dist/src/utils/private/get-decryption-key.js.map +1 -0
- package/dist/src/utils/private/get-encryption-keys.d.ts +16 -0
- package/dist/src/utils/private/get-encryption-keys.d.ts.map +1 -0
- package/dist/src/utils/private/get-encryption-keys.js +23 -0
- package/dist/src/utils/private/get-encryption-keys.js.map +1 -0
- package/dist/src/utils/private/get-initialisation-vector.d.ts +4 -0
- package/dist/src/utils/private/get-initialisation-vector.d.ts.map +1 -0
- package/dist/src/utils/private/get-initialisation-vector.js +23 -0
- package/dist/src/utils/private/get-initialisation-vector.js.map +1 -0
- package/dist/src/utils/private/oct/get-oct-keys.d.ts +14 -0
- package/dist/src/utils/private/oct/get-oct-keys.d.ts.map +1 -0
- package/dist/src/utils/private/oct/get-oct-keys.js +24 -0
- package/dist/src/utils/private/oct/get-oct-keys.js.map +1 -0
- package/dist/src/utils/private/rsa/generate-encryption-key.d.ts +4 -0
- package/dist/src/utils/private/rsa/generate-encryption-key.d.ts.map +1 -0
- package/dist/src/utils/private/rsa/generate-encryption-key.js +8 -0
- package/dist/src/utils/private/rsa/generate-encryption-key.js.map +1 -0
- package/dist/src/utils/private/rsa/get-oaep-hash.d.ts +3 -0
- package/dist/src/utils/private/rsa/get-oaep-hash.d.ts.map +1 -0
- package/dist/src/utils/private/rsa/get-oaep-hash.js +22 -0
- package/dist/src/utils/private/rsa/get-oaep-hash.js.map +1 -0
- package/dist/src/utils/private/rsa/get-rsa-keys.d.ts +21 -0
- package/dist/src/utils/private/rsa/get-rsa-keys.d.ts.map +1 -0
- package/dist/src/utils/private/rsa/get-rsa-keys.js +22 -0
- package/dist/src/utils/private/rsa/get-rsa-keys.js.map +1 -0
- package/dist/src/utils/private/rsa/public-encryption-key.d.ts +17 -0
- package/dist/src/utils/private/rsa/public-encryption-key.d.ts.map +1 -0
- package/dist/src/utils/private/rsa/public-encryption-key.js +56 -0
- package/dist/src/utils/private/rsa/public-encryption-key.js.map +1 -0
- package/dist/src/utils/private/secret/calculate-secret-length.d.ts +3 -0
- package/dist/src/utils/private/secret/calculate-secret-length.d.ts.map +1 -0
- package/dist/src/utils/private/secret/calculate-secret-length.js +21 -0
- package/dist/src/utils/private/secret/calculate-secret-length.js.map +1 -0
- package/dist/src/utils/private/secret/create-key-derivation.d.ts +10 -0
- package/dist/src/utils/private/secret/create-key-derivation.d.ts.map +1 -0
- package/dist/src/utils/private/secret/create-key-derivation.js +35 -0
- package/dist/src/utils/private/secret/create-key-derivation.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|