Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. function validateDigistoreSha() {
  2. const THANKYOU_PAGE_KEY = "XXXXXXXXXXXXXX";
  3.  
  4. const data = new URLSearchParams(window.location.search);
  5.  
  6. function hexString(buffer) {
  7. const byteArray = new Uint8Array(buffer);
  8.  
  9. const hexCodes = [...byteArray].map(value => {
  10. const hexCode = value.toString(16);
  11. const paddedHexCode = hexCode.padStart(2, "0");
  12. return paddedHexCode;
  13. });
  14.  
  15. return hexCodes.join("");
  16. }
  17.  
  18. function digestMessage(message) {
  19. const encoder = new TextEncoder();
  20. const data = encoder.encode(message);
  21. return window.crypto.subtle.digest("SHA-512", data);
  22. }
  23.  
  24. function digistore_signature(thankyouPageKey, input) {
  25. input.delete("sha_sign");
  26.  
  27. input.sort();
  28.  
  29. let shaString = "";
  30.  
  31. input.forEach((value, key) => {
  32. const empty =
  33. typeof value === "undefined" || value === "" || value === false;
  34.  
  35. if (!empty) {
  36. shaString += `${key}=${value}${thankyouPageKey}`;
  37. }
  38. });
  39.  
  40. const shaSign = digestMessage(shaString).then(digestValue =>
  41. hexString(digestValue).toUpperCase()
  42. );
  43.  
  44. return shaSign;
  45. }
  46.  
  47. async function shaSignValid() {
  48. const receivedSignature = data.get("sha_sign");
  49. const expectedSignature = await digistore_signature(
  50. THANKYOU_PAGE_KEY,
  51. data
  52. );
  53. return receivedSignature == expectedSignature;
  54. }
  55.  
  56. return shaSignValid();
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement