@houlak/plexo-sdk 0.1.36 → 0.1.38
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ClientSignedResponse, GenericSignedObject, GenericStateObject, InstrumentCallback, ServerResponse, TransactionCallback } from '../..';
|
|
2
2
|
import { Certificate } from '../../types/signatureHelper.type';
|
|
3
|
-
export declare const canonizeJson: <T>(object: T) => T;
|
|
3
|
+
export declare const canonizeJson: <T>(object: T, keysToSkip?: string[]) => T;
|
|
4
4
|
export declare const SignatureHelper: {
|
|
5
5
|
getCertificate: () => Promise<Certificate>;
|
|
6
6
|
getSignatureFromPlexo: <T extends object>(objectToSign: GenericStateObject<T>) => Promise<GenericSignedObject<T>>;
|
|
@@ -50,8 +50,9 @@ var stringifyWithFloats_1 = require("./stringifyWithFloats");
|
|
|
50
50
|
var client = axios_1.default.create({
|
|
51
51
|
baseURL: config_1.config.plexoUrl,
|
|
52
52
|
});
|
|
53
|
-
var canonizeJson = function (object) {
|
|
54
|
-
var cleanObject = deleteObjectUndefined(object);
|
|
53
|
+
var canonizeJson = function (object, keysToSkip) {
|
|
54
|
+
var cleanObject = deleteObjectUndefined(object, keysToSkip);
|
|
55
|
+
logger_lib_1.default.info(cleanObject, 'Clean object');
|
|
55
56
|
return sort(cleanObject);
|
|
56
57
|
};
|
|
57
58
|
exports.canonizeJson = canonizeJson;
|
|
@@ -72,24 +73,27 @@ var sort = function (object) {
|
|
|
72
73
|
};
|
|
73
74
|
// TODO:
|
|
74
75
|
// const parseDateToISO = (object: any) => {}
|
|
75
|
-
var deleteObjectUndefined = function (object) {
|
|
76
|
+
var deleteObjectUndefined = function (object, keysToSkip) {
|
|
76
77
|
if (Array.isArray(object)) {
|
|
77
78
|
object = object
|
|
78
79
|
.filter(function (item) { return item !== undefined || !item.length; })
|
|
79
80
|
.map(function (item) {
|
|
80
81
|
return (item && typeof item === 'object') || Array.isArray(item)
|
|
81
|
-
? deleteObjectUndefined(item)
|
|
82
|
+
? deleteObjectUndefined(item, keysToSkip)
|
|
82
83
|
: null;
|
|
83
84
|
});
|
|
84
85
|
return;
|
|
85
86
|
}
|
|
86
87
|
if (object && typeof object === 'object') {
|
|
87
88
|
Object.keys(object).map(function (key) {
|
|
89
|
+
if (keysToSkip === null || keysToSkip === void 0 ? void 0 : keysToSkip.includes(key)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
88
92
|
if (object[key] && typeof object[key] === 'object') {
|
|
89
93
|
if (Object.entries(object[key]).length === 0) {
|
|
90
94
|
delete object[key];
|
|
91
95
|
}
|
|
92
|
-
deleteObjectUndefined(object[key]);
|
|
96
|
+
deleteObjectUndefined(object[key], keysToSkip);
|
|
93
97
|
}
|
|
94
98
|
if ((!object[key] && object[key] !== 0 && typeof object[key] !== 'boolean') ||
|
|
95
99
|
(!object[key].length && Array.isArray(object[key]))) {
|
|
@@ -97,7 +101,7 @@ var deleteObjectUndefined = function (object) {
|
|
|
97
101
|
return;
|
|
98
102
|
}
|
|
99
103
|
if (Array.isArray(object[key]) && object[key].length) {
|
|
100
|
-
deleteObjectUndefined(object[key]);
|
|
104
|
+
deleteObjectUndefined(object[key], keysToSkip);
|
|
101
105
|
}
|
|
102
106
|
});
|
|
103
107
|
}
|
|
@@ -234,7 +238,7 @@ var getPlexoKey = function (fingerprint) { return __awaiter(void 0, void 0, void
|
|
|
234
238
|
});
|
|
235
239
|
}); };
|
|
236
240
|
var getPlexoSignature = function (fingerprint, response) { return __awaiter(void 0, void 0, void 0, function () {
|
|
237
|
-
var serverResponse, plexoResponse, err_1,
|
|
241
|
+
var serverResponse, plexoResponse, err_1, certificate, key, canonizedObject, objectInPascalCase, objectSorted, objectBuffer, verifySignature;
|
|
238
242
|
return __generator(this, function (_a) {
|
|
239
243
|
switch (_a.label) {
|
|
240
244
|
case 0:
|
|
@@ -245,7 +249,7 @@ var getPlexoSignature = function (fingerprint, response) { return __awaiter(void
|
|
|
245
249
|
return [3 /*break*/, 3];
|
|
246
250
|
case 2:
|
|
247
251
|
err_1 = _a.sent();
|
|
248
|
-
logger_lib_1.default.error({ err: err_1 }, 'Error getting plexo
|
|
252
|
+
logger_lib_1.default.error({ err: err_1 }, 'Error getting plexo public key');
|
|
249
253
|
serverResponse = {
|
|
250
254
|
response: response.object.object,
|
|
251
255
|
resultCode: __1.ResultCodes.InvalidFingerprint,
|
|
@@ -257,11 +261,12 @@ var getPlexoSignature = function (fingerprint, response) { return __awaiter(void
|
|
|
257
261
|
// ${plexoResponse.Object.Object.Response.Key}
|
|
258
262
|
// -----END CERTIFICATE-----`)
|
|
259
263
|
logger_lib_1.default.info(plexoResponse.Object.Object.Response.Key, 'plexo');
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
key = certificate.publicKey.export({ type: 'spki', format: 'pem' });
|
|
264
|
+
certificate = new crypto_1.X509Certificate(Buffer.from(plexoResponse.Object.Object.Response.Key, 'base64'));
|
|
265
|
+
key = certificate.publicKey.export({ format: 'pem', type: 'pkcs1' });
|
|
263
266
|
logger_lib_1.default.info(key, 'Generated public key');
|
|
264
|
-
|
|
267
|
+
logger_lib_1.default.info(response.object, 'Raw object');
|
|
268
|
+
canonizedObject = (0, exports.canonizeJson)(response.object, ['CreditLimits']);
|
|
269
|
+
logger_lib_1.default.info(canonizedObject, 'Objeto canonizado');
|
|
265
270
|
objectInPascalCase = utils_1.caseUtils.toPascalKeys(canonizedObject);
|
|
266
271
|
objectSorted = sort(objectInPascalCase);
|
|
267
272
|
objectBuffer = Buffer.from(JSON.stringify(objectSorted));
|