Astroport.ONE/www/dunikey.js

55 lines
2.1 KiB
JavaScript

import * as dKey from "./crypto.js";
addEventsListeners([
document.getElementById("idSec"),
document.getElementById("pass"),
], "keyup change",
async function () {
const idSec = document.getElementById("idSec").value;
const pass = document.getElementById("pass").value;
const keys = await dKey.idSecPass2cleanKeys(idSec, pass);
document.getElementById("seed").value = keys.seed;
document.getElementById("secretkey").value = keys.secretKey;
document.getElementById("pubkey").value = keys.publicKey;
});
addEventsListeners([
document.getElementById("seed"),
], "keyup change",
async function () {
let rawSeed;
const seed = document.getElementById("seed").value;
console.log(seed.length);
if (seed.length === 64) rawSeed = dKey.b16.decode(seed);
else rawSeed = dKey.b58.decode(seed);
const keys = await dKey.seed2keyPair(rawSeed);
document.getElementById("secretkey").value = dKey.b58.encode(keys.secretKey);
document.getElementById("pubkey").value = dKey.b58.encode(keys.publicKey);
});
addEventsListeners([
document.getElementById("compute"),
], "click",
async function () {
const filename = document.getElementById("filename").value;
const secretkey = document.getElementById("secretkey").value;
const pubkey = document.getElementById("pubkey").value;
exportAsFile(filename, `pub: ${pubkey}\nsec: ${secretkey}`);
});
function exportAsFile(fileName, data) {
const a = document.createElement('a');
a.setAttribute('download', fileName + '.dunikey.yml');
a.setAttribute('href', 'data:text/yaml;charset=utf-8,' + encodeURIComponent(data));
clickOn(a);
}
function clickOn(element) {
const event = new MouseEvent('click', {'view': window, 'bubbles': true, 'cancelable': true});
element.dispatchEvent(event);
}
function addEventsListeners(triggerNodes, events, functions) {
if (!triggerNodes.length) triggerNodes = [triggerNodes];
if (typeof events !== "object") events = events.split(" ");
if (typeof functions !== "object") functions = [functions];
for (let n of triggerNodes) events.forEach(e => functions.forEach(f => n.addEventListener(e, f)));
}