Here is the encryption doing for the request body from the node js application
const express = require(‘express’);
const router = express.Router();
const axios = require(‘axios’).default;
const mycrypto = require(“../../../javascript/crypto”);
const fs = require(‘fs’);
const path = require(‘path’);
const aesjs = require(“aes-js”);
const { RSA, Crypt } = require(‘hybrid-crypto-js’);
const rsa = new RSA();
const crypt = new Crypt();
require(‘dotenv’).config();
const GTEN_PRIKEY_PATH = path.resolve(__dirname, “../../../../keys/iciciprivate.txt”);
const ICICI_PUBKEY_PATH = path.resolve(__dirname, “../../../../keys/icicipublic_uat.txt”);
console.log(“GTEN_PRIKEY_PATH:”, GTEN_PRIKEY_PATH);
console.log(“ICICI_PUBKEY_PATH:”, ICICI_PUBKEY_PATH);
const ICICI_BANK_URL = process.env.ICICI_UAT_BANK_API;
const apiKey = process.env.UAT_API_KEY;
const PASS = “”;
router.post(‘/’, async (req, response) => {
try {
const { CORPID, USERID, AGGRID, ACCOUNTNO, FROMDATE, TODATE, URN } = req.body;
const requestData = {
CORPID,
USERID,
AGGRID,
URN,
ACCOUNTNO,
FROMDATE,
TODATE
};
var params = {
“CORPID”: “PRACHICIB1”,
“USERID”: “USER3”,
“AGGRID”: “OTOE0832”,
“URN”: “SR256689761”,
“ACCOUNTNO”: “000451000301”,
“FROMDATE”: “01-01-2016”,
“TODATE”: “30-01-2016”
};
console.log(“params: “, JSON.stringify(params));
console.log(“Requestbody”, requestData);
var request = await mycrypto.encryptViaPublicKey(JSON.stringify(params), ICICI_PUBKEY_PATH, PASS);
console.log(“Enc(Public):”, request);
} catch (error) {
console.error(“**** This is Error”, error);
response.status(500).json({ “data”: “Failed”, “code”: 400, “error”: error.message });
}
} catch (error) {
response.status(500).json({ “data”: “Failed”, “code”: 400, “error”: error.message });
console.log(“Error Msg”, error);
next(error); // Forwarding error to the error handler middleware
}
});
module.exports = router;
Crypto Module for the encryption
const crypto = require(‘crypto’)
const path = require(‘path’)
const fs = require(‘fs’)
module.exports = {
encryptViaPrivateKey: async function (input, pathToKey, passphrase) {
console.log(“==> encryptViaPrivateKey”);
const absolutePath = path.resolve(pathToKey);
const key = fs.readFileSync(absolutePath, ‘utf8’);
const buffer = Buffer.from(input, ‘utf8’);
const output = crypto.privateEncrypt(
{
key: key.toString(),
passphrase: passphrase,
padding: crypto.constants.RSA_PKCS1_PADDING
},
buffer,
)
return output.toString(‘base64’);
},
decryptViaPrivateKey: async function (input, pathToKey, passphrase) {
console.log(“==> decryptViaPrivateKey”);
const absolutePath = path.resolve(pathToKey);
const key = fs.readFileSync(absolutePath, ‘utf8’);
const buffer = Buffer.from(input, ‘base64’);
const output = crypto.privateDecrypt(
{
key: key.toString(),
passphrase: passphrase,
padding: crypto.constants.RSA_PKCS1_PADDING
},
buffer,
)
return output.toString(‘utf8’);
},
encryptViaPublicKey: async function (input, pathToKey, passphrase) {
console.log(“==> encryptViaPublicKey”);
const absolutePath = path.resolve(pathToKey);
const key = fs.readFileSync(absolutePath, ‘utf8’);
const buffer = Buffer.from(input, ‘utf8’);
const output = crypto.publicEncrypt(
{
key: key.toString(),
passphrase: passphrase,
padding: crypto.constants.RSA_PKCS1_PADDING
},
buffer,
)
return output.toString(‘base64’);
},
decryptViaPublicKey: async function (input, pathToKey, passphrase) {
console.log(“==> decryptViaPublicKey”);
const absolutePath = path.resolve(pathToKey);
const key = fs.readFileSync(absolutePath, ‘utf8’);
const buffer = Buffer.from(input, ‘base64’);
const output = crypto.publicDecrypt(
{
key: key.toString(),
passphrase: passphrase,
padding: crypto.constants.RSA_PKCS1_PADDING
},
buffer,
)
return output.toString(‘utf8’);
},
}