zenroom
Version:
wrapper of Zenroom, a secure and small virtual machine for crypto language processing
100 lines (89 loc) • 4.75 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ITERATIONS = 300;
const nanobench_1 = __importDefault(require("nanobench"));
const index_1 = require("./index");
const GENERATE_KEYRING = `
# Here we are loading all the scenarios needed for the keys creations
Scenario 'ecdh': Create the key
Scenario 'ethereum': Create key
Scenario 'reflow': Create the key
Scenario 'schnorr': Create the key
Scenario 'eddsa': Create the key
Given nothing
# Here we are creating the keys
When I create the ecdh key
When I create the ethereum key
When I create the reflow key
When I create the schnorr key
When I create the bitcoin key
When I create the eddsa key
Then print the 'keyring'
`;
const GENERATE_PUBKEYS = `
# Loading scenarios
Scenario 'ecdh': Create the public key
Scenario 'ethereum': Create the address
Scenario 'reflow': Create the public key
Scenario 'schnorr': Create the public key
Scenario 'eddsa': Create the public key
# Loading the private keys
Given I have the 'keyring'
# Generating the public keys
When I create the ecdh public key
When I create the reflow public key
When I create the schnorr public key
When I create the bitcoin public key
When I create the eddsa public key
# With Ethereum the 'ethereum address' is what we want to create, rather than a public key
When I create the ethereum address
# Here we pring all the output
Then print the 'ecdh public key'
Then print the 'eddsa public key'
Then print the 'reflow public key'
Then print the 'schnorr public key'
Then print the 'bitcoin public key'
Then print the 'ethereum address'
`;
const SIGN = `
Scenario 'ecdh': create the signature of an object
Given I have the 'keyring'
Given that I have a 'string' named 'myMessage'
When I create the signature of 'myMessage'
When I rename the 'signature' to 'myMessage.signature'
Then print the 'myMessage'
Then print the 'myMessage.signature'
`;
const SIGN_DATA = `
{
"myMessage": "Dear Bob, your name is too short, goodbye - Alice."
}
`;
const VERIFY = `
rule check version 2.0.0
Scenario 'ecdh': Bob verifies the signature from Alice
Given I have a 'ecdh public key' from 'Alice'
Given I have a 'string' named 'myMessage'
Given I have a 'signature' named 'myMessage.signature'
When I verify the 'myMessage' has a signature in 'myMessage.signature' by 'Alice'
Then print the string 'ok'
Then print the 'myMessage'
`;
const signverify = async () => {
const keyring = (await (0, index_1.zencode_exec)(GENERATE_KEYRING)).result;
const pubkeys = (await (0, index_1.zencode_exec)(GENERATE_PUBKEYS, { keys: keyring })).result;
const sign = (await (0, index_1.zencode_exec)(SIGN, { data: SIGN_DATA, keys: keyring })).result;
const verify = (await (0, index_1.zencode_exec)(VERIFY, { data: sign, keys: `{"Alice": ${pubkeys}}` })).result;
verify;
};
(0, nanobench_1.default)('sign and verify ' + ITERATIONS + ' times', (b) => {
b.start();
for (let i = 0; i < ITERATIONS; i++) {
signverify();
}
b.end();
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmVuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUE7QUFDdEIsMERBQThCO0FBRzlCLG1DQUVpQjtBQUVqQixNQUFNLGdCQUFnQixHQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUJ2QixDQUFBO0FBQ0QsTUFBTSxnQkFBZ0IsR0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRCdkIsQ0FBQTtBQUNELE1BQU0sSUFBSSxHQUFHOzs7Ozs7Ozs7OztDQVdaLENBQUE7QUFFRCxNQUFNLFNBQVMsR0FBRzs7OztDQUlqQixDQUFBO0FBRUQsTUFBTSxNQUFNLEdBQUc7Ozs7Ozs7Ozs7Q0FVZCxDQUFBO0FBRUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDNUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUEsb0JBQVksRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlELE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFBLG9CQUFZLEVBQUMsZ0JBQWdCLEVBQUUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMvRSxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBQSxvQkFBWSxFQUFDLElBQUksRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUEsb0JBQVksRUFBQyxNQUFNLEVBQ3ZDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxPQUFPLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkQsTUFBTSxDQUFDO0FBQ1QsQ0FBQyxDQUFBO0FBRUQsSUFBQSxtQkFBSyxFQUFDLGtCQUFrQixHQUFDLFVBQVUsR0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNsRCxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDVixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDL0IsVUFBVSxFQUFFLENBQUM7SUFDZixDQUFDO0lBQ0QsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUEifQ==