Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. function serializeData(data) {
  2. let serialized = '';
  3.  
  4. if (typeof data == 'object') {
  5. if (Array.isArray(data)) {
  6. serialized += data.sort().join('');
  7. } else {
  8. data = sortObject(data);
  9.  
  10. for (let key in data) {
  11. let value = data[key];
  12.  
  13. serialized += key + serializeData(value);
  14. }
  15. }
  16. } else {
  17. serialized += data;
  18. }
  19.  
  20. return serialized;
  21. }
  22.  
  23. function sortObject(obj) {
  24. return Object.keys(obj)
  25. .sort()
  26. .reduce(function(result, key) {
  27. result[key] = obj[key];
  28. return result;
  29. }, {});
  30. }
  31.  
  32. function sign(method, uuid, data) {
  33. const crypto = require('crypto');
  34. const openssl_sign = crypto.createSign('SHA256');
  35. let plaintext = `${method}${uuid}${serializeData(data)}`;
  36.  
  37. // plaintext is exactly the same as Trustly's default in the signaturetester page. So serializing is not the issue.
  38.  
  39. openssl_sign.update(plaintext);
  40.  
  41. const key = `
  42. -----BEGIN RSA PRIVATE KEY-----
  43. MIIEpAIBAAKCAQEA7o2YVcNZvhc4xDZEyW4pic7wdqtEtwyXDnIJuXC4rhuNdFdQ
  44. a4aLhe+MKNqSMYqewkvEzfvIXcZlA1ibUGUi+tjhYUo8g+vD6WAJ+iLovBd9wbu1
  45. IKg4qLR61RC0RfaNSDalv4xQ6N06HwAcyp14me6HR5JpDW2Cph2S1cogZYCAc3oi
  46. TxGFeZqG7TvEPvy/8fnPVDsoALR3HksdP8qZDPprTWmOBffh02SPluHair5cmi8g
  47. fNrGuF3rfvF1efWLsyMTl2MmfBPGVEaA8ioIA1OiuVth5Wc5MCrS8Mxfbnw6DSnY
  48. Ke+RhIc2N+FEci6R1811CcnT0HxHyobbSQM+0wIDAQABAoIBAQCTtdFRqXh0H+Ti
  49. ecf2AeRulFiI4lvWDFGsfChRTt7Lz/uywi3lppXWBRIAafaD/pV3MXtXIERc7G+3
  50. trHVAgq60Hgdyd3WwbG5W+JRpDP/43vW7eelpQQQUlCMhZ9aguPQhyXyiWvABNvs
  51. PiGVxBPdHLlfM+Ugj2KKgV1eS53ruoeue8kBquaFc0urHBddvqQh0PZQyqi9EHng
  52. /IEqXobAoIwKG0fX7g9Rj71NLT5fedCxk2BZ1BR7U9LZbY8AW5TBI9A2RF8jE8mo
  53. ZePj12H5Ff7OFqae4VG0P1oWa++ucqIsNxmBvU/XYlKmcXClICrSdyuGkDsxXILB
  54. U8gVENPhAoGBAP0rXc+G5MkddqITH1AVAf1Tl8wRgFpdJmgkEhNJrtWTnybo55ST
  55. C+h6cDX2vxh86+OkPGsner4eHHKyWBrkl6DLH3K//oiIOQ64sEPmjsRvldLyv0os
  56. Jqvpue2Rdhaw3tcBVCaLYBg7prZE1nt/emsNqYKV0UdIRgD9FmxojumHAoGBAPE4
  57. ZKXEiqfrB4yK7ZQS08L+iwrlQaUJ+PTzrBFPxGVhpBA3i3mxkOirjTm5Taip+Di+
  58. aEmAJOu2l3swRWwo2AstGgCd7mleP4XYTY/6mnHt4Lx/FkwGN3BL6P7fdouYlO33
  59. nTv5AcY4FSaKRQF7Q/x7C05YPXo6MKYMtdfe2+NVAoGARSLXnnme9tEF+aKxNWRX
  60. Q7/VP1Q0MfkoKN5Y1U2U4hxLJQwLWcaCRP1SsVntu5k5rdPG8Bg667o7WJMdflKY
  61. mb9+mg6WSuCwfDWxZQmMSVaTmqTR2kaOVPoh3R+RGQc6A4sIWPJMzrFTiIjp7ZXV
  62. b3CursuM+CNjgpeazQYMqPcCgYEAm6bpAzJkyl/VejH3hfH0JUI9FGXEyys5M069
  63. PFp9f3HW/QPqgzc6K3jvY00YOHqdCniLMMp4iIVFEB+g3F8qsWOEANvoCKPhV4uw
  64. 2PQ7jsKRnvBeweXNBjBlg3lMtF1b1IZQNm/CXla4Byt3xbH1t8jqDb7QxLshwzQ2
  65. brqGpxUCgYAP+ZXLmOUCbGq2HVQeAMo7r6bztYBJvREtvYT2bntKFWGrXb7m9k3W
  66. F1fuVgfc5xjbu5k6+MV6KJe5bbpfJKv0QLmRi0THvh0jANKqP0/id3Iz3QsyCYFs
  67. 0r/OvWuNJo+kT7TnzdlacR9OWZ/Y7fMZUtdfx88tqWJ/4BP3phRi5A==
  68. -----END RSA PRIVATE KEY-----
  69. `;
  70.  
  71. const signature_b64 = openssl_sign.sign(key, 'base64');
  72. console.log(signature_b64);
  73. }
  74.  
  75. sign('Deposit', '258a2184-2842-b485-25ca-293525152425', {"Username":"merchant_username","Password":"merchant_password","NotificationURL":"URL_to_your_notification_service","EndUserID":"12345","MessageID":"your_unique_deposit_id","Attributes":{"Locale":"sv_SE","Currency":"SEK","IP":"123.123.123.123","MobilePhone":"+46709876543","Firstname":"John","Lastname":"Doe","NationalIdentificationNumber":"790131-1234"}})
  76.  
  77. //5ctJ++3oKu+Il1ybyzJZr6XiRX3//3lYIX9V2JXSz7+vQDmr5eX03SIhf86r+WfaJV+ArqPq3V3ooGbJNnJ7qcX0VCOF/hVwPsqfTSBL9Vp4+O6Qm46uTZBuxgVNib45ZmiTPacBaLyOquB4gBaP+j0hJcka9XBBjJXjoRUHknX17UTgC/dDyVyh8Vk4ZMDsT7a4I5vSeXuxpx/5de6Fr5kJhYGY7lD2k4sQw+wQFJpO2vdAqiXMrqMUGI+dqexclZE+rDkae+CTCpmAyQGtzKWefEOZS8upIM/rP0lZ9Owjn7js1BDOk1LT53ZIBCp+HFTxcKNCnVxkEEQC2nNi6g==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement