diff --git a/flag_encoder/index.html b/flag_encoder/index.html index 3a54238..a15c5df 100644 --- a/flag_encoder/index.html +++ b/flag_encoder/index.html @@ -21,46 +21,43 @@ var inpFlag = document.querySelector("#inp-flag"); var outpObscuredFlag = document.querySelector("#outp-obscured-flag"); var outpSignature = document.querySelector("#outp-signature"); + var secp256k1n = new BN('115792089237316195423570985008687907852837564279074904382605163141518161494337', 10); - function displayObscuredFlag() { - var k = inpFlag.value; - var t = "0x"; - for (i in k) { - t += k.charCodeAt(i).toString(16).padStart(2, "0"); + function getPrivateKey() { + var s = inpFlag.value; + var k = new BN(0); + var h = "0x"; + for (i in s) { + var c = s.charCodeAt(i); + k = k.muln(16).addn(c); + h += c.toString(16).padStart(2, "0"); } - try { - outpObscuredFlag.value = addressFromKey(t); - } catch { + if (k.mod(secp256k1n).eqn(0)) { + return null; + } + return h; + } + + function updateOutputValues(ev) { + var k = getPrivateKey(); + if (k === null) { outpObscuredFlag.value = ""; - } - } - function displaySignature() { - var m = inpContestantAddress.value; - var k = inpFlag.value; - var t = "0x"; - for (i in k) { - t += k.charCodeAt(i).toString(16).padStart(2, "0"); - } - try { - outpSignature.value = signMessage(m, t); - } catch { outpSignature.value = ""; + } else { + outpObscuredFlag.value = addressFromKey(k); + var m = inpContestantAddress.value; + if (m.slice(0, 2) !== "0x") { + outpSignature.value = ""; + } else { + outpSignature.value = signMessage(m, k); + } } } - function onContestantAddressChange(ev) { - displaySignature(); - } - function onFlagChange(ev) { - displayObscuredFlag(); - displaySignature(); - } + inpContestantAddress.oninput = updateOutputValues; + inpFlag.oninput = updateOutputValues; - inpContestantAddress.oninput = onContestantAddressChange; - inpFlag.oninput = onFlagChange; - - displayObscuredFlag(); - displaySignature(); + updateOutputValues();