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