|
// This version uses https://github.com/arnaucube/blindsecp256k1-js
|
|
|
|
// signer public parameters
|
|
let signerR, signerQ;
|
|
// user parameters
|
|
let m, mBlinded, userSecretData, sig;
|
|
|
|
console.log("A", blindsecp256k1.messageToBigNumber("0x0a"))
|
|
|
|
function newRequest() {
|
|
m = document.getElementById("msg").value;
|
|
|
|
axios.get('/request')
|
|
.then(function (res) {
|
|
console.log("/request res:", res.data);
|
|
signerR = blindsecp256k1.Point.fromAffine(blindsecp256k1.ecparams,
|
|
blindsecp256k1.newBigFromString(res.data.signerR.x),
|
|
blindsecp256k1.newBigFromString(res.data.signerR.y));
|
|
signerQ = blindsecp256k1.Point.fromAffine(blindsecp256k1.ecparams,
|
|
blindsecp256k1.newBigFromString(res.data.signerQ.x),
|
|
blindsecp256k1.newBigFromString(res.data.signerQ.y));
|
|
document.getElementById("signerR").innerHTML = "signerR: " + signerR;
|
|
|
|
document.getElementById("signerQ").innerHTML = "signerQ: " + signerQ;
|
|
|
|
console.log("blind msg");
|
|
let blindRes = blindsecp256k1.blind(m, signerR);
|
|
mBlinded = blindRes.mBlinded;
|
|
userSecretData = blindRes.userSecretData;
|
|
console.log("blindRes:", mBlinded, userSecretData);
|
|
})
|
|
.catch(function (error) {
|
|
console.error(error);
|
|
alert(error);
|
|
});
|
|
}
|
|
|
|
function askBlindSign() {
|
|
console.log("askBlindSign");
|
|
let data = {
|
|
m: mBlinded.toString(),
|
|
r: {
|
|
x: signerR.affineX.toString(),
|
|
y: signerR.affineY.toString()
|
|
}
|
|
};
|
|
axios.post('/blindsign', data)
|
|
.then(function (res) {
|
|
console.log("/blindSign res:", res.data);
|
|
document.getElementById("sBlind").innerHTML = "sBlind: " + res.data.sBlind;
|
|
|
|
sig = blindsecp256k1.unblind(
|
|
blindsecp256k1.newBigFromString(res.data.sBlind),
|
|
userSecretData);
|
|
console.log("unblind", sig);
|
|
document.getElementById("sig").innerHTML = "sig.s: " + sig.s + ", sig.f: " + sig.f.affineX.toString() +", "+sig.f.affineY.toString();
|
|
})
|
|
.catch(function (error) {
|
|
console.error(error);
|
|
alert(error);
|
|
});
|
|
}
|
|
|
|
function verify() {
|
|
let verified = blindsecp256k1.verify(m, sig, signerQ);
|
|
console.log("verify", verified);
|
|
document.getElementById("verified").innerHTML = "signature verification, verified: " + verified;
|
|
}
|