Hexadecimal Key: cadbc48d55536287

RSA Encrypted Key: nM36Cw25sA/UN7tlJzF5GF9sPIUK9uK9CQ38wLiU+q2j0/yk7FbsgqwCYHASENcElqpuLzU8HUwVELzBJPB9MxkJ78m/YUu+f73XAA9NeFvrawWh2G0iQl+Dempu29q4fBopa80c2wAWJHzHnNX14nyq3gh3EmsAsTquB2icz3y6EGbAgt5QaiD/zUU9bABvuVSBoNntieAjY2tcZeCw9QuNznRqcJyVWD/eJLIoL8l+ZsD117Q/z69mbuV81BsTwnctKDsoRjnwZUYbDdfYgBCheYw2q9ZPNjHs6k52pTDAx5xXeRSp/iilYSH8GJAhiNn1qjOJRhA23qpQI3Crog==

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

Encrypted Payload: +R9c+N1fchApyM0Z0vtICARuoqkB847tX1D644JAnXrFGqD+VbNvk/a7pJzRpaZAfdVhEmRjTmMNXbSOX4yBtF549RDvZoe6To04j95b72Vvgj4aWQ91agWlmnGVpkyuLklhlX9E02LvvTI2okOwcBeXltTPk9+HhZCfojR2DXWBonHCXIrPx5Npm21sm2bfpRdxC4WfhyheD5CdNKprSeigMgUA9z/6si8Y07st1GltfYpqgC19g2tU2bqLISLH71FqMVot5hylJNVx+IgPjiKyMEMOnzMSQjZb1oNx9URv+vx5wsNLC6ctn9VVdRDJ9fuZ6jKEErjdQ/emnNwP5r5N85RBsThTSbKyCEP/4i8=

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

Decrypted Payloads:

SHA-512 Hash: ab03acbd3652b67ed0952700ca2e4113872835e1e6d0ba3ded2ebdde5ed51818efd8f1847b4750275eb7a5d37586b04c9d2f9ce65a7668af840f51a9b6ca50b0

Document
API Referance No

YBAPIREQ150420269581805890

Plain Text Request

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

Header Values

{ "X-IBM-Client-Id" : "ebd348f2e28c64fe5fa0a5e7b2586634", "X-IBM-Client-Secret": "2f30ec155df3d81530b301c9d1b6d8e2", "key":"nM36Cw25sA/UN7tlJzF5GF9sPIUK9uK9CQ38wLiU+q2j0/yk7FbsgqwCYHASENcElqpuLzU8HUwVELzBJPB9MxkJ78m/YUu+f73XAA9NeFvrawWh2G0iQl+Dempu29q4fBopa80c2wAWJHzHnNX14nyq3gh3EmsAsTquB2icz3y6EGbAgt5QaiD/zUU9bABvuVSBoNntieAjY2tcZeCw9QuNznRqcJyVWD/eJLIoL8l+ZsD117Q/z69mbuV81BsTwnctKDsoRjnwZUYbDdfYgBCheYw2q9ZPNjHs6k52pTDAx5xXeRSp/iilYSH8GJAhiNn1qjOJRhA23qpQI3Crog==" }

Encrypted Request

{"payload":"+R9c+N1fchApyM0Z0vtICARuoqkB847tX1D644JAnXrFGqD+VbNvk\/a7pJzRpaZAfdVhEmRjTmMNXbSOX4yBtF549RDvZoe6To04j95b72Vvgj4aWQ91agWlmnGVpkyuLklhlX9E02LvvTI2okOwcBeXltTPk9+HhZCfojR2DXWBonHCXIrPx5Npm21sm2bfpRdxC4WfhyheD5CdNKprSeigMgUA9z\/6si8Y07st1GltfYpqgC19g2tU2bqLISLH71FqMVot5hylJNVx+IgPjiKyMEMOnzMSQjZb1oNx9URv+vx5wsNLC6ctn9VVdRDJ9fuZ6jKEErjdQ\/emnNwP5r5N85RBsThTSbKyCEP\/4i8=","hashValue":"ab03acbd3652b67ed0952700ca2e4113872835e1e6d0ba3ded2ebdde5ed51818efd8f1847b4750275eb7a5d37586b04c9d2f9ce65a7668af840f51a9b6ca50b0"}

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. }