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