zenroom
Version:
wrapper of Zenroom, a secure and small virtual machine for crypto language processing
97 lines (86 loc) • 4.59 kB
JavaScript
const ITERATIONS = 300;
import bench from 'nanobench';
import { zencode_exec, // zenroom_exec,
// zenroom_hash_init, zenroom_hash_update, zenroom_hash_final, zenroom_hash
} from "./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 zencode_exec(GENERATE_KEYRING)).result;
const pubkeys = (await zencode_exec(GENERATE_PUBKEYS, { keys: keyring })).result;
const sign = (await zencode_exec(SIGN, { data: SIGN_DATA, keys: keyring })).result;
const verify = (await zencode_exec(VERIFY, { data: sign, keys: `{"Alice": ${pubkeys}}` })).result;
verify;
};
bench('sign and verify ' + ITERATIONS + ' times', (b) => {
b.start();
for (let i = 0; i < ITERATIONS; i++) {
signverify();
}
b.end();
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmVuY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFBO0FBQ3RCLE9BQU8sS0FBSyxNQUFNLFdBQVcsQ0FBQztBQUc5QixPQUFPLEVBQUMsWUFBWSxFQUFFLGdCQUFnQjtBQUN0QywyRUFBMkU7RUFDMUUsTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxnQkFBZ0IsR0FBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CdkIsQ0FBQTtBQUNELE1BQU0sZ0JBQWdCLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E0QnZCLENBQUE7QUFDRCxNQUFNLElBQUksR0FBRzs7Ozs7Ozs7Ozs7Q0FXWixDQUFBO0FBRUQsTUFBTSxTQUFTLEdBQUc7Ozs7Q0FJakIsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHOzs7Ozs7Ozs7O0NBVWQsQ0FBQTtBQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzVCLE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5RCxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sWUFBWSxDQUFDLGdCQUFnQixFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0UsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxZQUFZLENBQUMsTUFBTSxFQUN2QyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsT0FBTyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3ZELE1BQU0sQ0FBQztBQUNULENBQUMsQ0FBQTtBQUVELEtBQUssQ0FBQyxrQkFBa0IsR0FBQyxVQUFVLEdBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ1YsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQy9CLFVBQVUsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFBIn0=