mirror of
https://github.com/luxfi/blst.git
synced 2026-10-30 17:01:37 +00:00
55 lines
1.5 KiB
HTML
55 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head><meta charset="UTF-8"><title>runnable.html</title></head>
|
|
<body>
|
|
<script type="text/javascript" src="blst.js"></script>
|
|
<div id="output"></div>
|
|
<script type="text/javascript">
|
|
var output = {
|
|
div: document.getElementById("output"),
|
|
log: function(str) {
|
|
this.div.appendChild(document.createTextNode(str));
|
|
this.div.appendChild(document.createElement("br"));
|
|
}
|
|
}
|
|
|
|
output.log("testing...");
|
|
|
|
blst['onRuntimeInitialized'] = function() {
|
|
var msg = "assertion"; // this what we're signing
|
|
var DST = "MY-DST"; // domain separation tag
|
|
|
|
var SK = new blst.SecretKey();
|
|
SK.keygen("*".repeat(32));
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// generate public key and signature
|
|
|
|
var pk = new blst.P1(SK);
|
|
var pk_for_wire = pk.serialize();
|
|
|
|
var sig = new blst.P2();
|
|
var sig_for_wire = sig.hash_to(msg, DST, pk_for_wire)
|
|
.sign_with(SK)
|
|
.serialize();
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// at this point 'pk_for_wire', 'sig_for_wire' and 'msg' are
|
|
// "sent over network," so now on "receiver" side
|
|
|
|
sig = new blst.P2_Affine(sig_for_wire);
|
|
pk = new blst.P1_Affine(pk_for_wire);
|
|
|
|
if (!pk.in_group()) throw "disaster"; // vet the public key
|
|
|
|
var ctx = new blst.Pairing(true, DST);
|
|
ctx.aggregate(pk, sig, msg, pk_for_wire);
|
|
ctx.commit();
|
|
if (!ctx.finalverify()) throw "disaster";
|
|
|
|
output.log("OK");
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|