You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.1 KiB

  1. // This version uses https://github.com/arnaucube/blindsecp256k1-js
  2. // signer public parameters
  3. let signerR, signerQ;
  4. // user parameters
  5. let m, mBlinded, userSecretData, sig;
  6. console.log("A", blindsecp256k1.messageToBigNumber("0x0a"))
  7. function newRequest() {
  8. m = document.getElementById("msg").value;
  9. axios.get('/request')
  10. .then(function (res) {
  11. console.log("/request res:", res.data);
  12. signerR = blindsecp256k1.Point.fromAffine(blindsecp256k1.ecparams,
  13. blindsecp256k1.newBigFromString(res.data.signerR.x),
  14. blindsecp256k1.newBigFromString(res.data.signerR.y));
  15. signerQ = blindsecp256k1.Point.fromAffine(blindsecp256k1.ecparams,
  16. blindsecp256k1.newBigFromString(res.data.signerQ.x),
  17. blindsecp256k1.newBigFromString(res.data.signerQ.y));
  18. document.getElementById("signerR").innerHTML = "signerR: " + signerR;
  19. document.getElementById("signerQ").innerHTML = "signerQ: " + signerQ;
  20. console.log("blind msg");
  21. let blindRes = blindsecp256k1.blind(m, signerR);
  22. mBlinded = blindRes.mBlinded;
  23. userSecretData = blindRes.userSecretData;
  24. console.log("blindRes:", mBlinded, userSecretData);
  25. })
  26. .catch(function (error) {
  27. console.error(error);
  28. alert(error);
  29. });
  30. }
  31. function askBlindSign() {
  32. console.log("askBlindSign");
  33. let data = {
  34. m: mBlinded.toString(),
  35. r: {
  36. x: signerR.affineX.toString(),
  37. y: signerR.affineY.toString()
  38. }
  39. };
  40. axios.post('/blindsign', data)
  41. .then(function (res) {
  42. console.log("/blindSign res:", res.data);
  43. document.getElementById("sBlind").innerHTML = "sBlind: " + res.data.sBlind;
  44. sig = blindsecp256k1.unblind(
  45. blindsecp256k1.newBigFromString(res.data.sBlind),
  46. userSecretData);
  47. console.log("unblind", sig);
  48. document.getElementById("sig").innerHTML = "sig.s: " + sig.s + ", sig.f: " + sig.f.affineX.toString() +", "+sig.f.affineY.toString();
  49. })
  50. .catch(function (error) {
  51. console.error(error);
  52. alert(error);
  53. });
  54. }
  55. function verify() {
  56. let verified = blindsecp256k1.verify(m, sig, signerQ);
  57. console.log("verify", verified);
  58. document.getElementById("verified").innerHTML = "signature verification, verified: " + verified;
  59. }