itrm-tools 1.3.49 → 1.3.51
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/dist/api/external/ExternalApiConnection.d.ts +1 -0
- package/dist/api/external/ExternalApiConnection.js +6 -0
- package/dist/api/external/ExternalApiConnection.js.map +1 -1
- package/dist/api/external/KycApiConnection.d.ts +93 -0
- package/dist/api/external/KycApiConnection.js +144 -0
- package/dist/api/external/KycApiConnection.js.map +1 -0
- package/dist/cryptography/CipheringAlgorithm.d.ts +4 -4
- package/dist/cryptography/algorithm/AesCipheringAlgorithm.js +1 -1
- package/dist/cryptography/algorithm/AesCipheringAlgorithm.js.map +1 -1
- package/dist/cryptography/algorithm/GcmCipheringAlgorithm.d.ts +23 -0
- package/dist/cryptography/algorithm/GcmCipheringAlgorithm.js +101 -0
- package/dist/cryptography/algorithm/GcmCipheringAlgorithm.js.map +1 -0
- package/dist/env/EnvDecryption.d.ts +5 -0
- package/dist/env/EnvDecryption.js +106 -0
- package/dist/env/EnvDecryption.js.map +1 -0
- package/dist/index.d.ts +75 -75
- package/dist/index.js +156 -154
- package/dist/index.js.map +1 -1
- package/dist/types/payments.d.ts +24 -5
- package/dist/types/payments.js +80 -62
- package/dist/types/payments.js.map +1 -1
- package/package.json +18 -8
|
@@ -54,6 +54,12 @@ class ExternalApiConnection {
|
|
|
54
54
|
throw new Error(`Unsupported method: ${method}`);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
encodeSearchParams(params) {
|
|
58
|
+
let compilation = new URLSearchParams();
|
|
59
|
+
for (let key of Object.keys(params))
|
|
60
|
+
compilation.append(key, params[key].toString());
|
|
61
|
+
return compilation.toString() ?? '';
|
|
62
|
+
}
|
|
57
63
|
}
|
|
58
64
|
exports.ExternalApiConnection = ExternalApiConnection;
|
|
59
65
|
//# sourceMappingURL=ExternalApiConnection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalApiConnection.js","sourceRoot":"","sources":["../../../src/api/external/ExternalApiConnection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ExternalApiConnection.js","sourceRoot":"","sources":["../../../src/api/external/ExternalApiConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { StandardKeyGroup } from "../../cryptography/generate/StandardApiKeyGenerator";
|
|
2
|
+
import { ExternalApiConnection } from "./ExternalApiConnection";
|
|
3
|
+
export interface BaseKycSearchParams {
|
|
4
|
+
id?: number;
|
|
5
|
+
limit?: number;
|
|
6
|
+
offset?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ICounterparty {
|
|
9
|
+
id?: number;
|
|
10
|
+
status?: string;
|
|
11
|
+
name: string;
|
|
12
|
+
personType: string;
|
|
13
|
+
nit: string;
|
|
14
|
+
address: string;
|
|
15
|
+
city: string;
|
|
16
|
+
email: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ThirdpartiesSearchParams extends BaseKycSearchParams {
|
|
19
|
+
counterpartyId?: number;
|
|
20
|
+
document?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface IThirdParty {
|
|
23
|
+
id?: number;
|
|
24
|
+
name: string;
|
|
25
|
+
counterpartyId: number;
|
|
26
|
+
status?: string;
|
|
27
|
+
address?: {
|
|
28
|
+
address: string;
|
|
29
|
+
city: string;
|
|
30
|
+
state: string;
|
|
31
|
+
country: string;
|
|
32
|
+
};
|
|
33
|
+
document: string;
|
|
34
|
+
documentType?: KycDocumentType;
|
|
35
|
+
personType?: KycPersonType;
|
|
36
|
+
phone?: string;
|
|
37
|
+
email?: string;
|
|
38
|
+
legalRepresentative?: {
|
|
39
|
+
name: string;
|
|
40
|
+
documentNumber: string;
|
|
41
|
+
documentType?: KycDocumentType;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export declare enum KycPersonType {
|
|
45
|
+
NATURAL = "Persona Natural",
|
|
46
|
+
LEGAL = "Persona Jur\u00EDdica"
|
|
47
|
+
}
|
|
48
|
+
export declare enum KycDocumentType {
|
|
49
|
+
CC = "CC",
|
|
50
|
+
CE = "CE",
|
|
51
|
+
DIE = "DIE",
|
|
52
|
+
NIT = "NIT",
|
|
53
|
+
PP = "PP",
|
|
54
|
+
PEP = "PEP",
|
|
55
|
+
PPT = "PPT",
|
|
56
|
+
RC = "RC",
|
|
57
|
+
TE = "TE",
|
|
58
|
+
TI = "TI"
|
|
59
|
+
}
|
|
60
|
+
export declare enum KycStatus {
|
|
61
|
+
APPROVED = "APPROVED",
|
|
62
|
+
REJECTED = "REJECTED",
|
|
63
|
+
IN_PROCESS = "IN_PROCESS",
|
|
64
|
+
SUSPENDED = "SUSPENDED"
|
|
65
|
+
}
|
|
66
|
+
export interface KycAccountSearchParams extends BaseKycSearchParams {
|
|
67
|
+
thirdPartyId?: number;
|
|
68
|
+
counterpartyId?: number;
|
|
69
|
+
bank?: string;
|
|
70
|
+
bankAccount?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface IAccount {
|
|
73
|
+
id?: number;
|
|
74
|
+
counterpartyId: number;
|
|
75
|
+
thirdpartyId: number;
|
|
76
|
+
bank: string;
|
|
77
|
+
bankAccount: string;
|
|
78
|
+
bankAccountType: string;
|
|
79
|
+
status?: string;
|
|
80
|
+
thirdparty?: IThirdParty;
|
|
81
|
+
}
|
|
82
|
+
export declare class KycApiConnection extends ExternalApiConnection {
|
|
83
|
+
constructor(apiUrl: string, keys: StandardKeyGroup);
|
|
84
|
+
getCounterparty(name: string): Promise<ICounterparty | undefined>;
|
|
85
|
+
getCounterparties(): Promise<ICounterparty[]>;
|
|
86
|
+
private buildCounterpartyResponse;
|
|
87
|
+
getThirdparties(params: ThirdpartiesSearchParams): Promise<IThirdParty[]>;
|
|
88
|
+
private buildThirdpartyResponse;
|
|
89
|
+
getAccounts(params: KycAccountSearchParams): Promise<IAccount[]>;
|
|
90
|
+
private buildAccountResponse;
|
|
91
|
+
createThirdparty(params: IThirdParty): Promise<IThirdParty>;
|
|
92
|
+
createAccount(account: IAccount): Promise<IAccount>;
|
|
93
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KycApiConnection = exports.KycStatus = exports.KycDocumentType = exports.KycPersonType = void 0;
|
|
4
|
+
const ExternalApiConnection_1 = require("./ExternalApiConnection");
|
|
5
|
+
const APIRequest_1 = require("../APIRequest");
|
|
6
|
+
var KycPersonType;
|
|
7
|
+
(function (KycPersonType) {
|
|
8
|
+
KycPersonType["NATURAL"] = "Persona Natural";
|
|
9
|
+
KycPersonType["LEGAL"] = "Persona Jur\u00EDdica";
|
|
10
|
+
})(KycPersonType || (exports.KycPersonType = KycPersonType = {}));
|
|
11
|
+
var KycDocumentType;
|
|
12
|
+
(function (KycDocumentType) {
|
|
13
|
+
KycDocumentType["CC"] = "CC";
|
|
14
|
+
KycDocumentType["CE"] = "CE";
|
|
15
|
+
KycDocumentType["DIE"] = "DIE";
|
|
16
|
+
KycDocumentType["NIT"] = "NIT";
|
|
17
|
+
KycDocumentType["PP"] = "PP";
|
|
18
|
+
KycDocumentType["PEP"] = "PEP";
|
|
19
|
+
KycDocumentType["PPT"] = "PPT";
|
|
20
|
+
KycDocumentType["RC"] = "RC";
|
|
21
|
+
KycDocumentType["TE"] = "TE";
|
|
22
|
+
KycDocumentType["TI"] = "TI";
|
|
23
|
+
})(KycDocumentType || (exports.KycDocumentType = KycDocumentType = {}));
|
|
24
|
+
var KycStatus;
|
|
25
|
+
(function (KycStatus) {
|
|
26
|
+
KycStatus["APPROVED"] = "APPROVED";
|
|
27
|
+
KycStatus["REJECTED"] = "REJECTED";
|
|
28
|
+
KycStatus["IN_PROCESS"] = "IN_PROCESS";
|
|
29
|
+
KycStatus["SUSPENDED"] = "SUSPENDED";
|
|
30
|
+
})(KycStatus || (exports.KycStatus = KycStatus = {}));
|
|
31
|
+
class KycApiConnection extends ExternalApiConnection_1.ExternalApiConnection {
|
|
32
|
+
constructor(apiUrl, keys) {
|
|
33
|
+
super("KYC", apiUrl, keys);
|
|
34
|
+
}
|
|
35
|
+
async getCounterparty(name) {
|
|
36
|
+
let counterparties = await this.getCounterparties();
|
|
37
|
+
for (let counterparty of counterparties)
|
|
38
|
+
if (name.trim() === counterparty.name)
|
|
39
|
+
return counterparty;
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
async getCounterparties() {
|
|
43
|
+
let path = `/v1/counterparties?${this.encodeSearchParams({ limit: 2000, offset: 0, status: "true" })}`;
|
|
44
|
+
return this.buildCounterpartyResponse(await this.request(APIRequest_1.RequestMethod.GET, path));
|
|
45
|
+
}
|
|
46
|
+
buildCounterpartyResponse(counterparties) {
|
|
47
|
+
let response = [];
|
|
48
|
+
for (let counterparty of counterparties)
|
|
49
|
+
response.push({
|
|
50
|
+
id: counterparty.counterpartyId,
|
|
51
|
+
status: counterparty.status.status,
|
|
52
|
+
name: counterparty.details['Razón Social'],
|
|
53
|
+
personType: counterparty.details['Tipo Persona'],
|
|
54
|
+
nit: counterparty.details['NIT'],
|
|
55
|
+
address: counterparty.details['Dirección Registrada'],
|
|
56
|
+
city: counterparty.details['Ciudad'],
|
|
57
|
+
email: counterparty.details['Email Address (First Contact)'],
|
|
58
|
+
});
|
|
59
|
+
return response;
|
|
60
|
+
}
|
|
61
|
+
async getThirdparties(params) {
|
|
62
|
+
let path = `/v1/thirdParties?${this.encodeSearchParams({ ...params, status: "true" })}`;
|
|
63
|
+
return this.buildThirdpartyResponse(await this.request(APIRequest_1.RequestMethod.GET, path));
|
|
64
|
+
}
|
|
65
|
+
buildThirdpartyResponse(thirdparties) {
|
|
66
|
+
let response = [];
|
|
67
|
+
for (let thirdparty of thirdparties)
|
|
68
|
+
response.push({
|
|
69
|
+
id: thirdparty.thirdPartyId,
|
|
70
|
+
status: thirdparty.status?.status,
|
|
71
|
+
counterpartyId: thirdparty.counterpartyId,
|
|
72
|
+
name: thirdparty.details['Razón Social'],
|
|
73
|
+
document: thirdparty.document,
|
|
74
|
+
documentType: thirdparty.details['Tipo Id'],
|
|
75
|
+
personType: thirdparty.details['Tipo de Persona'],
|
|
76
|
+
phone: thirdparty.details['Número de teléfono'],
|
|
77
|
+
address: {
|
|
78
|
+
address: thirdparty.details['Dirección'],
|
|
79
|
+
city: thirdparty.details['Ciudad'],
|
|
80
|
+
state: thirdparty.details['Departamento'],
|
|
81
|
+
country: thirdparty.details['País']
|
|
82
|
+
},
|
|
83
|
+
legalRepresentative: thirdparty.details['Representante'] ? {
|
|
84
|
+
name: thirdparty.details['Representante'],
|
|
85
|
+
documentNumber: thirdparty.details['Documento Representante'],
|
|
86
|
+
documentType: thirdparty.details['Tipo Documento Representante']
|
|
87
|
+
} : undefined
|
|
88
|
+
});
|
|
89
|
+
return response;
|
|
90
|
+
}
|
|
91
|
+
async getAccounts(params) {
|
|
92
|
+
let path = `/v1/accounts?${this.encodeSearchParams({ ...params, status: "true", thirdParties: "true" })}`;
|
|
93
|
+
return this.buildAccountResponse(await this.request(APIRequest_1.RequestMethod.GET, path));
|
|
94
|
+
}
|
|
95
|
+
buildAccountResponse(accounts) {
|
|
96
|
+
let response = [];
|
|
97
|
+
for (let account of accounts)
|
|
98
|
+
response.push({
|
|
99
|
+
id: account.accountId,
|
|
100
|
+
thirdpartyId: account.thirdPartyId,
|
|
101
|
+
counterpartyId: account.counterpartyId,
|
|
102
|
+
status: account.status?.status,
|
|
103
|
+
bank: account.bank,
|
|
104
|
+
bankAccount: account.bankAccount,
|
|
105
|
+
bankAccountType: account.bankAccountType,
|
|
106
|
+
thirdparty: account.thirdParties ? this.buildThirdpartyResponse([account.thirdParties])[0] : undefined
|
|
107
|
+
});
|
|
108
|
+
return response;
|
|
109
|
+
}
|
|
110
|
+
async createThirdparty(params) {
|
|
111
|
+
return this.buildThirdpartyResponse([await this.request(APIRequest_1.RequestMethod.POST, `/v1/thirdParties`, {
|
|
112
|
+
counterpartyId: params.counterpartyId,
|
|
113
|
+
document: params.document,
|
|
114
|
+
details: {
|
|
115
|
+
'País': params.address?.country ?? '',
|
|
116
|
+
'Ciudad': params.address?.city ?? '',
|
|
117
|
+
'Tipo Id': params.documentType ?? '',
|
|
118
|
+
'Dirección': params.address?.address ?? '',
|
|
119
|
+
'Departamento': params.address?.state ?? '',
|
|
120
|
+
'Razón Social': params.name,
|
|
121
|
+
'Tipo de Persona': params.personType,
|
|
122
|
+
'Correo Electronico': params.email ?? '',
|
|
123
|
+
'Número de Documento': params.document,
|
|
124
|
+
'Número de teléfono': params.phone ?? '',
|
|
125
|
+
'Representante': params.legalRepresentative?.name ?? '',
|
|
126
|
+
'Documento Representante': params.legalRepresentative?.documentNumber ?? '',
|
|
127
|
+
'Tipo Documento Representante': params.legalRepresentative?.documentType ?? ''
|
|
128
|
+
}
|
|
129
|
+
})])[0];
|
|
130
|
+
}
|
|
131
|
+
async createAccount(account) {
|
|
132
|
+
return this.buildAccountResponse(await this.request(APIRequest_1.RequestMethod.POST, `/v1/accounts`, {
|
|
133
|
+
values: [{
|
|
134
|
+
thirdPartyId: account.thirdpartyId,
|
|
135
|
+
counterpartyId: account.counterpartyId,
|
|
136
|
+
bank: account.bank,
|
|
137
|
+
bankAccount: account.bankAccount,
|
|
138
|
+
bankAccountType: account.bankAccountType
|
|
139
|
+
}]
|
|
140
|
+
}))[0];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.KycApiConnection = KycApiConnection;
|
|
144
|
+
//# sourceMappingURL=KycApiConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KycApiConnection.js","sourceRoot":"","sources":["../../../src/api/external/KycApiConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface CipheringAlgorithm<I, O, K> {
|
|
2
|
-
encrypt(message: I, secretKey: K): O;
|
|
3
|
-
decrypt(message: O, secretKey: K): I;
|
|
4
|
-
}
|
|
1
|
+
export interface CipheringAlgorithm<I, O, K> {
|
|
2
|
+
encrypt(message: I, secretKey: K): O;
|
|
3
|
+
decrypt(message: O, secretKey: K): I;
|
|
4
|
+
}
|
|
@@ -18,7 +18,7 @@ class AesCipheringAlgorithm {
|
|
|
18
18
|
let messageBytes = crypto_js_1.enc.Base64.parse(message);
|
|
19
19
|
let iv = crypto_js_1.lib.WordArray.create(messageBytes.words.slice(0, 4));
|
|
20
20
|
let cipherParams = crypto_js_1.lib.CipherParams.create({
|
|
21
|
-
ciphertext: crypto_js_1.lib.WordArray.create(messageBytes.words.slice(4))
|
|
21
|
+
ciphertext: crypto_js_1.lib.WordArray.create(messageBytes.words.slice(4), messageBytes.sigBytes - 16)
|
|
22
22
|
});
|
|
23
23
|
let payload = crypto_js_1.AES.decrypt(cipherParams, crypto_js_1.enc.Hex.parse((0, crypto_js_1.SHA256)(secretKey).toString()), { iv: iv, ...{ mode: crypto_js_1.mode.CBC, padding: crypto_js_1.pad.Pkcs7 } });
|
|
24
24
|
return payload.toString(crypto_js_1.enc.Utf8);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AesCipheringAlgorithm.js","sourceRoot":"","sources":["../../../src/cryptography/algorithm/AesCipheringAlgorithm.ts"],"names":[],"mappings":";;;AAAA,yCAA6D;AAG7D,MAAa,qBAAqB;IACvB,OAAO,CAAC,OAAY,EAAE,SAAiB;QAC1C,IAAI,gBAAgB,GAAG,eAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,IAAI,EAAE,GAAG,eAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,OAAO,GAAG,eAAG,CAAC,OAAO,CACrB,gBAAgB,EAChB,eAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAA,kBAAM,EAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAI,CAAC,GAAG,EAAE,OAAO,EAAE,eAAG,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC;QACF,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEO,mBAAmB,CAAC,IAAS;QACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI;YACjE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,SAAiB;QAC7C,IAAI,YAAY,GAAG,eAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,EAAE,GAAG,eAAG,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,YAAY,GAAG,eAAG,CAAC,YAAY,CAAC,MAAM,CAAC;YACvC,UAAU,EAAE,eAAG,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"AesCipheringAlgorithm.js","sourceRoot":"","sources":["../../../src/cryptography/algorithm/AesCipheringAlgorithm.ts"],"names":[],"mappings":";;;AAAA,yCAA6D;AAG7D,MAAa,qBAAqB;IACvB,OAAO,CAAC,OAAY,EAAE,SAAiB;QAC1C,IAAI,gBAAgB,GAAG,eAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,IAAI,EAAE,GAAG,eAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,OAAO,GAAG,eAAG,CAAC,OAAO,CACrB,gBAAgB,EAChB,eAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAA,kBAAM,EAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAI,CAAC,GAAG,EAAE,OAAO,EAAE,eAAG,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC;QACF,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEO,mBAAmB,CAAC,IAAS;QACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI;YACjE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,SAAiB;QAC7C,IAAI,YAAY,GAAG,eAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,EAAE,GAAG,eAAG,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,YAAY,GAAG,eAAG,CAAC,YAAY,CAAC,MAAM,CAAC;YACvC,UAAU,EAAE,eAAG,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;SAC5F,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,eAAG,CAAC,OAAO,CACrB,YAAY,EACZ,eAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAA,kBAAM,EAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,EAC3C,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAI,CAAC,GAAG,EAAE,OAAO,EAAE,eAAG,CAAC,KAAK,EAAE,EAAE,CACxD,CAAC;QACF,OAAO,OAAO,CAAC,QAAQ,CAAC,eAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACJ;AA/BD,sDA+BC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CipheringAlgorithm } from "../CipheringAlgorithm";
|
|
2
|
+
export declare class GcmCipheringAlgorithm implements CipheringAlgorithm<string, Buffer, string> {
|
|
3
|
+
private readonly SALT_LENGTH;
|
|
4
|
+
private readonly IV_LENGTH;
|
|
5
|
+
private readonly PBKDF2_ITERATIONS;
|
|
6
|
+
private readonly KEY_LENGTH_BYTES;
|
|
7
|
+
private bufferToWordArray;
|
|
8
|
+
private wordArrayToBuffer;
|
|
9
|
+
encrypt(plaintext: string, password: string): Buffer;
|
|
10
|
+
decrypt(encryptedBuffer: Buffer, password: string): string;
|
|
11
|
+
}
|
|
12
|
+
export declare class GcmInvalidKeyError extends Error {
|
|
13
|
+
readonly code: string;
|
|
14
|
+
constructor(message?: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class GcmFormatError extends Error {
|
|
17
|
+
readonly code: string;
|
|
18
|
+
constructor(message?: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class GcmAuthTagError extends Error {
|
|
21
|
+
readonly code: string;
|
|
22
|
+
constructor(message?: string);
|
|
23
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GcmAuthTagError = exports.GcmFormatError = exports.GcmInvalidKeyError = exports.GcmCipheringAlgorithm = void 0;
|
|
4
|
+
//import CryptoJS from "crypto-js";
|
|
5
|
+
const crypto_js_1 = require("crypto-js");
|
|
6
|
+
class GcmCipheringAlgorithm {
|
|
7
|
+
SALT_LENGTH = 16;
|
|
8
|
+
IV_LENGTH = 16;
|
|
9
|
+
PBKDF2_ITERATIONS = 600_000;
|
|
10
|
+
KEY_LENGTH_BYTES = 32;
|
|
11
|
+
bufferToWordArray(buffer) {
|
|
12
|
+
return crypto_js_1.lib.WordArray.create(buffer);
|
|
13
|
+
}
|
|
14
|
+
wordArrayToBuffer(wordArray) {
|
|
15
|
+
return Buffer.from(wordArray.toString(crypto_js_1.enc.Hex), "hex");
|
|
16
|
+
}
|
|
17
|
+
encrypt(plaintext, password) {
|
|
18
|
+
if (password) {
|
|
19
|
+
const saltWA = crypto_js_1.lib.WordArray.random(this.SALT_LENGTH);
|
|
20
|
+
const ivWA = crypto_js_1.lib.WordArray.random(this.IV_LENGTH);
|
|
21
|
+
const keyWA = (0, crypto_js_1.PBKDF2)(password, saltWA, {
|
|
22
|
+
keySize: this.KEY_LENGTH_BYTES / 4,
|
|
23
|
+
iterations: this.PBKDF2_ITERATIONS,
|
|
24
|
+
hasher: crypto_js_1.algo.SHA256,
|
|
25
|
+
});
|
|
26
|
+
const encrypted = crypto_js_1.AES.encrypt(plaintext, keyWA, {
|
|
27
|
+
iv: ivWA,
|
|
28
|
+
mode: crypto_js_1.mode.CBC,
|
|
29
|
+
padding: crypto_js_1.pad.Pkcs7,
|
|
30
|
+
});
|
|
31
|
+
const saltBuffer = this.wordArrayToBuffer(saltWA);
|
|
32
|
+
const ivBuffer = this.wordArrayToBuffer(ivWA);
|
|
33
|
+
const ciphertextBuffer = this.wordArrayToBuffer(encrypted.ciphertext);
|
|
34
|
+
return Buffer.concat([saltBuffer, ivBuffer, ciphertextBuffer]);
|
|
35
|
+
}
|
|
36
|
+
throw new GcmInvalidKeyError();
|
|
37
|
+
}
|
|
38
|
+
decrypt(encryptedBuffer, password) {
|
|
39
|
+
const minLength = this.SALT_LENGTH + this.IV_LENGTH + 1;
|
|
40
|
+
if (password) {
|
|
41
|
+
if (Buffer.isBuffer(encryptedBuffer) && encryptedBuffer.length >= minLength) {
|
|
42
|
+
const saltBuffer = encryptedBuffer.subarray(0, this.SALT_LENGTH);
|
|
43
|
+
const ivBuffer = encryptedBuffer.subarray(this.SALT_LENGTH, this.SALT_LENGTH + this.IV_LENGTH);
|
|
44
|
+
const ciphertextBuffer = encryptedBuffer.subarray(this.SALT_LENGTH + this.IV_LENGTH);
|
|
45
|
+
const saltWA = this.bufferToWordArray(saltBuffer);
|
|
46
|
+
const ivWA = this.bufferToWordArray(ivBuffer);
|
|
47
|
+
const keyWA = (0, crypto_js_1.PBKDF2)(password, saltWA, {
|
|
48
|
+
keySize: this.KEY_LENGTH_BYTES / 4,
|
|
49
|
+
iterations: this.PBKDF2_ITERATIONS,
|
|
50
|
+
hasher: crypto_js_1.algo.SHA256,
|
|
51
|
+
});
|
|
52
|
+
const ciphertextWA = this.bufferToWordArray(ciphertextBuffer);
|
|
53
|
+
const cipherParams = crypto_js_1.lib.CipherParams.create({
|
|
54
|
+
ciphertext: ciphertextWA,
|
|
55
|
+
});
|
|
56
|
+
try {
|
|
57
|
+
const decryptedWA = crypto_js_1.AES.decrypt(cipherParams, keyWA, {
|
|
58
|
+
iv: ivWA,
|
|
59
|
+
mode: crypto_js_1.mode.CBC,
|
|
60
|
+
padding: crypto_js_1.pad.Pkcs7,
|
|
61
|
+
});
|
|
62
|
+
const plaintext = decryptedWA.toString(crypto_js_1.enc.Utf8);
|
|
63
|
+
if (plaintext)
|
|
64
|
+
return plaintext;
|
|
65
|
+
throw new Error();
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
throw new GcmAuthTagError();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
throw new GcmFormatError();
|
|
72
|
+
}
|
|
73
|
+
throw new GcmInvalidKeyError();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.GcmCipheringAlgorithm = GcmCipheringAlgorithm;
|
|
77
|
+
class GcmInvalidKeyError extends Error {
|
|
78
|
+
code = "GCM_INVALID_KEY";
|
|
79
|
+
constructor(message = "Invalid GCM key — key is empty or missing") {
|
|
80
|
+
super(message);
|
|
81
|
+
this.name = "GcmInvalidKeyError";
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.GcmInvalidKeyError = GcmInvalidKeyError;
|
|
85
|
+
class GcmFormatError extends Error {
|
|
86
|
+
code = "GCM_INVALID_FORMAT";
|
|
87
|
+
constructor(message = "Invalid GCM ciphertext format — input too short or malformed") {
|
|
88
|
+
super(message);
|
|
89
|
+
this.name = "GcmFormatError";
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.GcmFormatError = GcmFormatError;
|
|
93
|
+
class GcmAuthTagError extends Error {
|
|
94
|
+
code = "GCM_AUTH_TAG_MISMATCH";
|
|
95
|
+
constructor(message = "GCM auth tag mismatch — wrong key or corrupted data") {
|
|
96
|
+
super(message);
|
|
97
|
+
this.name = "GcmAuthTagError";
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.GcmAuthTagError = GcmAuthTagError;
|
|
101
|
+
//# sourceMappingURL=GcmCipheringAlgorithm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GcmCipheringAlgorithm.js","sourceRoot":"","sources":["../../../src/cryptography/algorithm/GcmCipheringAlgorithm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function decodeEnvVars(secretKey: string, content: string | Buffer): Record<string, string>;
|
|
2
|
+
export declare function decodeEnvFile(secretKey: string): Record<string, string>;
|
|
3
|
+
export declare function deriveKey(masterKey: string, serviceName: string): string;
|
|
4
|
+
export declare function requestSecretKey(secretKeyServiceUrl: string, serviceReferer?: string, serviceSecretKey?: string, serviceName?: string): Promise<string>;
|
|
5
|
+
export declare function encryptEnvFile(secretKey: string): string;
|
|
@@ -0,0 +1,106 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.decodeEnvVars = decodeEnvVars;
|
|
40
|
+
exports.decodeEnvFile = decodeEnvFile;
|
|
41
|
+
exports.deriveKey = deriveKey;
|
|
42
|
+
exports.requestSecretKey = requestSecretKey;
|
|
43
|
+
exports.encryptEnvFile = encryptEnvFile;
|
|
44
|
+
const path = __importStar(require("node:path"));
|
|
45
|
+
const fs = __importStar(require("node:fs"));
|
|
46
|
+
const dotenv = __importStar(require("dotenv"));
|
|
47
|
+
const axios_1 = __importDefault(require("axios"));
|
|
48
|
+
const crypto_js_1 = require("crypto-js");
|
|
49
|
+
const AesCipheringAlgorithm_1 = require("../cryptography/algorithm/AesCipheringAlgorithm");
|
|
50
|
+
const GcmCipheringAlgorithm_1 = require("../cryptography/algorithm/GcmCipheringAlgorithm");
|
|
51
|
+
const REFERER_CIPHER = new AesCipheringAlgorithm_1.AesCipheringAlgorithm();
|
|
52
|
+
const GCM_CIPHER = new GcmCipheringAlgorithm_1.GcmCipheringAlgorithm();
|
|
53
|
+
function decodeEnvVars(secretKey, content) {
|
|
54
|
+
const buffer = typeof content === 'string' ? Buffer.from(content, 'base64') : content;
|
|
55
|
+
try {
|
|
56
|
+
const plaintext = GCM_CIPHER.decrypt(buffer, secretKey);
|
|
57
|
+
if (plaintext) {
|
|
58
|
+
const parsed = dotenv.parse(plaintext);
|
|
59
|
+
const stripped = {};
|
|
60
|
+
for (const key of Object.keys(parsed))
|
|
61
|
+
stripped[key] = parsed[key].replace(/^['"]|['"]$/g, "");
|
|
62
|
+
return stripped;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
console.error("Failed to decrypt environment variable payload.");
|
|
67
|
+
}
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
function decodeEnvFile(secretKey) {
|
|
71
|
+
const encPath = path.resolve(process.cwd(), ".env.enc");
|
|
72
|
+
if (fs.existsSync(encPath)) {
|
|
73
|
+
const buffer = fs.readFileSync(encPath);
|
|
74
|
+
return decodeEnvVars(secretKey, buffer);
|
|
75
|
+
}
|
|
76
|
+
return {};
|
|
77
|
+
}
|
|
78
|
+
function deriveKey(masterKey, serviceName) {
|
|
79
|
+
return (0, crypto_js_1.SHA256)(masterKey + serviceName.replace(/[Ss]/g, "5").replace(/[Ii]/g, "1").replace(/[Tt]/g, "7")).toString();
|
|
80
|
+
}
|
|
81
|
+
async function requestSecretKey(secretKeyServiceUrl, serviceReferer, serviceSecretKey, serviceName) {
|
|
82
|
+
const headers = {};
|
|
83
|
+
if (serviceReferer && serviceSecretKey) {
|
|
84
|
+
headers.Referer = REFERER_CIPHER.encrypt(serviceReferer, serviceSecretKey);
|
|
85
|
+
}
|
|
86
|
+
const url = serviceName
|
|
87
|
+
? `${secretKeyServiceUrl}/service/secret-key?name=${encodeURIComponent(serviceName)}`
|
|
88
|
+
: `${secretKeyServiceUrl}/service/secret-key`;
|
|
89
|
+
const response = await axios_1.default.get(url, { headers });
|
|
90
|
+
if (response.data && response.data.payload) {
|
|
91
|
+
return response.data.payload;
|
|
92
|
+
}
|
|
93
|
+
throw new Error("Failed to request secret key from session service");
|
|
94
|
+
}
|
|
95
|
+
function encryptEnvFile(secretKey) {
|
|
96
|
+
const envPath = path.resolve(process.cwd(), ".env");
|
|
97
|
+
if (fs.existsSync(envPath)) {
|
|
98
|
+
const plaintext = fs.readFileSync(envPath, "utf8");
|
|
99
|
+
const encrypted = GCM_CIPHER.encrypt(plaintext, secretKey);
|
|
100
|
+
const encPath = path.resolve(process.cwd(), ".env.enc");
|
|
101
|
+
fs.writeFileSync(encPath, encrypted);
|
|
102
|
+
return encPath;
|
|
103
|
+
}
|
|
104
|
+
throw new Error(`.env not found at ${envPath}`);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=EnvDecryption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvDecryption.js","sourceRoot":"","sources":["../../src/env/EnvDecryption.ts"],"names":[],"mappings":"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"}
|