Hexadecimal Key: 57d45d64377e5e51

RSA Encrypted Key: Ikb/EbQY381gyKnCFPJggHrVeFIHSkxbmsH3zqQyOzbC44PYrf2V0bZac3TruHd+hZJi3DF6EHDv0dSy9yNKH3P0oM3TjqY0r/WyrcfshMHoyykMPk2rVsHd8cUlAu1Gp3nx+mbrpQ5iNmQz8zfps/C4RfO5ACt3e/+D4PLXISXnOVgbwkCeuOulWqw0odr3gV+R5YtcBLNphp1VGx+r+GXYwNDutgGKFojtGNSobvL7naPG/kKIymq79q6x3Z4rM3VFi/+lM2K2PPb69ENTy8JnAiB4PnXtZWQZhhCLOn+FFbMVg3rb1jn1XMEoFeZ7rc7GScnLv6UfWAQeSNJvZg==

Plain Text Payload:
{"aPIReqRefNo":"YBAPIREQ061220254490336697","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}

Encrypted Payload: sWSA2M8Vsr+K7nM15KX83UfFfmQZmdRttcsnlA4dP2f7ZQ8YxJK8ypP3/sjXsky87YinPImbWobFdXLezlo7RoAp6i+TbSe2DY5CfHwugKhMhOJI4bJnNjWH2xxlipKkyl5Q7Lb3yCcMAXDjIGK9Sbji4gpd3KSLB8a4pmqT2657UmoqqxBF0gj6UoNCQFQAhc+g9fD7JXfFhRANcnH0Yvk6CZWpCh3zVjsWvTw4UW0BGSXSaMNBcGghiBL8IBs3YG6fq1kHRm1cBEMgvHdVlfcoyoR2IqzKg7VVAeMEYo9zi+UuNYMpjK5AaY4+XyjS3rr/qZiUpleS7dRSu+J2GksyZ4j8LCJ/p2mEc0XvH58=

Decrypted Payload: {"aPIReqRefNo":"YBAPIREQ061220254490336697","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}

Decrypted Payloads:

SHA-512 Hash: 7244343d01e41f76355c40b12821b3304fd74f85929710da0c4a08386376dfd6867c6836f023aa67bf46b38a80f85b7223972586c51edbc1507899bbd45893b8

Document
API Referance No

YBAPIREQ061220254490336697

Plain Text Request

{"aPIReqRefNo":"YBAPIREQ061220254490336697","corporateID":"682500","corpSecParams":"5f7613c0d1194880aaa188c9c49f373ec230438af90c4ef1bf8cd7dafd9bf75cea72c49e73d9e0daf0d3a1446b3de0f767148ee2a0ef11b52d1b7ef253154bfc","salt":"D12CSAEW2943R3F34F9C"}

Header Values

{ "X-IBM-Client-Id" : "ebd348f2e28c64fe5fa0a5e7b2586634", "X-IBM-Client-Secret": "2f30ec155df3d81530b301c9d1b6d8e2", "key":"Ikb/EbQY381gyKnCFPJggHrVeFIHSkxbmsH3zqQyOzbC44PYrf2V0bZac3TruHd+hZJi3DF6EHDv0dSy9yNKH3P0oM3TjqY0r/WyrcfshMHoyykMPk2rVsHd8cUlAu1Gp3nx+mbrpQ5iNmQz8zfps/C4RfO5ACt3e/+D4PLXISXnOVgbwkCeuOulWqw0odr3gV+R5YtcBLNphp1VGx+r+GXYwNDutgGKFojtGNSobvL7naPG/kKIymq79q6x3Z4rM3VFi/+lM2K2PPb69ENTy8JnAiB4PnXtZWQZhhCLOn+FFbMVg3rb1jn1XMEoFeZ7rc7GScnLv6UfWAQeSNJvZg==" }

Encrypted Request

{"payload":"sWSA2M8Vsr+K7nM15KX83UfFfmQZmdRttcsnlA4dP2f7ZQ8YxJK8ypP3\/sjXsky87YinPImbWobFdXLezlo7RoAp6i+TbSe2DY5CfHwugKhMhOJI4bJnNjWH2xxlipKkyl5Q7Lb3yCcMAXDjIGK9Sbji4gpd3KSLB8a4pmqT2657UmoqqxBF0gj6UoNCQFQAhc+g9fD7JXfFhRANcnH0Yvk6CZWpCh3zVjsWvTw4UW0BGSXSaMNBcGghiBL8IBs3YG6fq1kHRm1cBEMgvHdVlfcoyoR2IqzKg7VVAeMEYo9zi+UuNYMpjK5AaY4+XyjS3rr\/qZiUpleS7dRSu+J2GksyZ4j8LCJ\/p2mEc0XvH58=","hashValue":"7244343d01e41f76355c40b12821b3304fd74f85929710da0c4a08386376dfd6867c6836f023aa67bf46b38a80f85b7223972586c51edbc1507899bbd45893b8"}

Response

  1. namespace App\Http\Controllers;
  2. use Illuminate\Http\Request;
  3. use phpseclib3\Crypt\RSA;
  4. use phpseclib3\Crypt\AES;
  5. use Illuminate\Support\Str;
  6. use Illuminate\Support\Facades\Http;
  7. class TestController extends Controller
  8. {
  9. public function encryptPayload(Request $request)
  10. {
  11. $input = $request->all();
  12. $aPIReqRefNo = 'YBAPIREQ' . date('dmY') . random_int(1000000000, 9999999999);
  13. function generateHexSalt($length = 16)
  14. {
  15. return bin2hex(random_bytes($length / 2));
  16. }
  17. function generateAESKey($salt)
  18. {
  19. return hash('sha256', $salt, true);
  20. }
  21. function encryptPayloadAES($payload, $key)
  22. {
  23. $aes = new AES('cbc');
  24. $aes->setKey($key);
  25. $aes->setIV(random_bytes(16));
  26. return $aes->encrypt($payload);
  27. }
  28. function extractPublicKeyFromCertificate($certificate)
  29. {
  30. $certData = openssl_x509_read($certificate);
  31. $publicKeyDetails = openssl_pkey_get_details(openssl_pkey_get_public($certData));
  32. return $publicKeyDetails['key'];
  33. }
  34. function encryptWithRSA($data, $publicKey)
  35. {
  36. $rsa = RSA::loadPublicKey($publicKey);
  37. return $rsa->encrypt($data);
  38. }
  39. function base64Encode($data)
  40. {
  41. return base64_encode($data);
  42. }
  43. $certificate = <code><<<</code>EOD
  44. -----BEGIN CERTIFICATE-----
  45. MIIGpjCCBY6gAwIBAgIQD5azSFw0HdzToy3O9u9jhDANBgkqhkiG9w0BAQsFADBE
  46. MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMR4wHAYDVQQDExVE
  47. aWdpQ2VydCBFViBSU0EgQ0EgRzIwHhcNMjAwNzA4MDAwMDAwWhcNMjEwNjE2MTIw
  48. MDAwWjCB4DEaMBgGA1UEDwwRR292ZXJubWVudCBFbnRpdHkxEzARBgsrBgEEAYI3
  49. PAIBAxMCSU4xGjAYBgNVBAUTEUdvdmVybm1lbnQgRW50aXR5MQswCQYDVQQGEwJJ
  50. TjEUMBIGA1UECBMLTWFoYXJhc2h0cmExDzANBgNVBAcTBk11bWJhaTEcMBoGA1UE
  51. ChMTU1RBVEUgQkFOSyBPRiBJTkRJQTEkMCIGA1UECxMbSU5URVJORVQgQkFOS0lO
  52. RyBERVBBUlRNRU5UMRkwFwYDVQQDExB5b25vYnVzaW5lc3Muc2JpMIIBIjANBgkq
  53. hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAOZYxBsK/5187m1dNJZsCQLG9cSre62
  54. VWjDvgtJnXuVLIs5NM2d3c/iks0ILK+Dx24HLqhXZ/9xm23ziexsaf1nqXqiMU5W
  55. n5Y2hsWwEp3I0Pa9mNVp/K2zeliX6aiO/3FldI0UodJi8mJXu8lTdFfv6LKPExJp
  56. +nBNKCsnBFHDBjBUUxya4AEXFqiIBUIkXSeKZ6kibmLMa8CioVSfzWdPmklNQJ8R
  57. /vVo5tg+owV55FP+Wnl0BcMKm4aG+QXiBqv3rpKHmDohJ4j9DOEz1C9JayP4Rdpz
  58. Ir3dvTwpyxZG3xwBi0a9m1QNRp9Smk5ayMMGOsfQMO4e9hlztZopgwIDAQABo4IC
  59. 9TCCAvEwHwYDVR0jBBgwFoAUak5Qv5honVt7IHXUWQF5SGaSMgYwHQYDVR0OBBYE
  60. FF3BGmz7C6gCe0WLzlMgv2UWHu3cMDEGA1UdEQQqMCiCEHlvbm9idXNpbmVzcy5z
  61. YmmCFHd3dy55b25vYnVzaW5lc3Muc2JpMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE
  62. FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdQYDVR0fBG4wbDA0oDKgMIYuaHR0cDov
  63. L2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0RVZSU0FDQUcyLmNybDA0oDKgMIYu
  64. aHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0RVZSU0FDQUcyLmNybDBL
  65. BgNVHSAERDBCMDcGCWCGSAGG/WwCATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3
  66. dy5kaWdpY2VydC5jb20vQ1BTMAcGBWeBDAEBMHMGCCsGAQUFBwEBBGcwZTAkBggr
  67. BgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMD0GCCsGAQUFBzAChjFo
  68. dHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRFVlJTQUNBRzIuY3J0
  69. MAwGA1UdEwEB/wQCMAAwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgD2XJQv0Xcw
  70. IhRUGAgwlFaO400TGTO/3wwvIAvMTvFk4wAAAXMuy1fbAAAEAwBHMEUCIQDbdqFJ
  71. fLvbZ0gkRmJf6e8YWaII5sQdasLSWkhljDNzMwIgQ6C2LDPGSQzF3GhZ2Zk6w6Mm
  72. EIBHRkjsBYvSYpNhlvcAdgBc3EOS/uarRUSxXprUVuYQN/vV+kfcoXOUsl7m9scO
  73. ygAAAXMuy1gKAAAEAwBHMEUCIQDb9zstnk4m6mstTBBRMG4ajqAHMfUbpITWxrDE
  74. xA6nfwIgRiPFMpiAMQO1DgSzxZJAhEduSP/vUI5axwoWm2ROpwswDQYJKoZIhvcN
  75. AQELBQADggEBADAvVutwG+yglgUfZhb18kanKPTxoCAw6MI+a29sDPY/+O5JG8Lh
  76. lYRmN3vqQfeswCFfTdk25KtjSzqSRHAZ/syrvLFOwcxjXMzf0Rh7rz/f0hw0437v
  77. vlDPgCDZo7Cp8RO9eZ5cy8ybyRT/iLKXqoI0c1dp4kMa1/wHhJFKBrnhYRHRP/Fa
  78. 3k8sqzDiKrNawuiTzkB3FrKVWUlc01/HzrViO2Gj/U7n0YRRQNMPwkPBbmPYDmM5
  79. VfAIs3yKLWZyjeqZVaWaui0KhZH0EQInRU22WNM0qyMKyC3YfvrpSoEBRLDUIrqc
  80. 6i62SGMFi+YzpcHrstaQrjLw+cnfVla83Bk=
  81. -----END CERTIFICATE-----
  82. EOD;
  83. $publicKey = extractPublicKeyFromCertificate($certificate);
  84. $salt = generateHexSalt();
  85. $aesKey = generateAESKey($salt);
  86. $payload = '{
  87. "aPIReqRefNo":"' . $aPIReqRefNo . '",
  88. "corporateID":"ABC12345678",
  89. "corpSecParams":"je2Wu3lGHtdTgSNniehbw/dCiY/+dA3X+4/B8wxHAAJCM4CdQXiXuQRY5FzMwgA7n8Ki+zmJbYrIg14KEeGg6jBrW4SDd9Awkwp9RwNskimION8dW3oDoD5KbqEfkoB55tVOK8BVO/1I7cXOeX1XAwyGHp65NM/Wb14Of8UtGtV+ZFVD1EX7A0SOx8hpEgPCKArkZRhokaXgR7+oSici59t/bQvNy+3iIhfO5mZYIr2KtdEDh8CdYZjjUZAqRlTo5dzrqVSi2PuYsgTo5/PXvY2UWA0duZrJG2+XSUJvFxDEHI97MIz7IQnn2uRnOBlfZeeNkTj2yn1CHqqjE3j4Xw==",
  90. "salt":"' . $salt . '"
  91. }';
  92. $compressedPayload = gzcompress($payload);
  93. $encryptedPayload = encryptPayloadAES($compressedPayload, $aesKey);
  94. try {
  95. $encryptedKey = encryptWithRSA(hex2bin($salt), $publicKey);
  96. } catch (Exception $e) {
  97. die('RSA Encryption Error: ' . $e->getMessage());
  98. }
  99. $base64EncodedKey = base64Encode($encryptedKey);
  100. $base64EncodedPayload = base64Encode($encryptedPayload);
  101. $hashedPayload = base64Encode(hash('sha512', $base64EncodedPayload, true));
  102. $data = '{
  103. "payload" : "' . $base64EncodedPayload . '",
  104. "hashValue" : "' . $hashedPayload . '"
  105. }';
  106. $secretId = '2f30ec155df3d81530b301c9d1b6d8e2';
  107. $ClientId = 'ebd348f2e28c64fe5fa0a5e7b2586634';
  108. $headers = [
  109. 'X-IBM-Client-Id' => $ClientId,
  110. 'X-IBM-Client-Secret' => $secretId,
  111. 'key' => $base64EncodedKey,
  112. ];
  113. $response = Http::withHeaders($headers)
  114. ->post('https://uatapibanking.yonobusiness.sbi/erpuat/uat/corp/cinb/authenticationService', [
  115. 'payload' => $base64EncodedPayload,
  116. 'hashValue' => $hashedPayload
  117. ]);
  118. }
  119. }