Test for deterministic outputs (#134)
This commit is contained in:
@@ -7,47 +7,58 @@
|
||||
const { assert, u8aToHex } = require('@polkadot/util');
|
||||
|
||||
function bip39_generate (wasm) {
|
||||
const RESULT = wasm.bip39Generate(21);
|
||||
const res = wasm.bip39Generate(21);
|
||||
|
||||
console.log('\tPHR', RESULT);
|
||||
console.log('\tPHR', res);
|
||||
|
||||
assert(RESULT.split(' ').length === 21, 'ERROR: Invalid bip39 Phase length');
|
||||
assert(res.split(' ').length === 21, 'ERROR: Invalid bip39 Phase length');
|
||||
}
|
||||
|
||||
function bip39_generate_subsequent (wasm) {
|
||||
const val1 = wasm.bip39Generate(24);
|
||||
const val2 = wasm.bip39Generate(24);
|
||||
|
||||
console.log('\tVL1', val1);
|
||||
console.log('\tVL2', val2);
|
||||
|
||||
assert(val1 !== val2, 'ERROR: Subsequent mnemonics are the same');
|
||||
}
|
||||
|
||||
function bip39_validate (wasm) {
|
||||
const RESULT = wasm.bip39Validate(wasm.bip39Generate(12));
|
||||
const res = wasm.bip39Validate(wasm.bip39Generate(12));
|
||||
|
||||
console.log('\tVAL', RESULT);
|
||||
console.log('\tVAL', res);
|
||||
|
||||
assert(RESULT, 'ERROR: Invalid bip39 validation');
|
||||
assert(res, 'ERROR: Invalid bip39 validation');
|
||||
}
|
||||
|
||||
function bip39_toEntropy (wasm) {
|
||||
const RESULT = u8aToHex(wasm.bip39ToEntropy('legal winner thank year wave sausage worth useful legal winner thank yellow'));
|
||||
const res = u8aToHex(wasm.bip39ToEntropy('legal winner thank year wave sausage worth useful legal winner thank yellow'));
|
||||
|
||||
console.log('\tENT', RESULT);
|
||||
console.log('\tENT', res);
|
||||
|
||||
assert(RESULT === '0x7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f', 'ERROR: Invalid bip39 entropy');
|
||||
assert(res === '0x7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f', 'ERROR: Invalid bip39 entropy');
|
||||
}
|
||||
|
||||
function bip39_toMiniSecret (wasm) {
|
||||
const RESULT = u8aToHex(wasm.bip39ToMiniSecret('legal winner thank year wave sausage worth useful legal winner thank yellow', 'Substrate'));
|
||||
const res = u8aToHex(wasm.bip39ToMiniSecret('legal winner thank year wave sausage worth useful legal winner thank yellow', 'Substrate'));
|
||||
|
||||
console.log('\tMIN', RESULT);
|
||||
console.log('\tMIN', res);
|
||||
|
||||
assert(RESULT === '0x4313249608fe8ac10fd5886c92c4579007272cb77c21551ee5b8d60b78041685', 'ERROR: Invalid bip39 mini secret');
|
||||
assert(res === '0x4313249608fe8ac10fd5886c92c4579007272cb77c21551ee5b8d60b78041685', 'ERROR: Invalid bip39 mini secret');
|
||||
}
|
||||
|
||||
function bip39_toSeed (wasm) {
|
||||
const RESULT = u8aToHex(wasm.bip39ToSeed('seed sock milk update focus rotate barely fade car face mechanic mercy', ''));
|
||||
const res = u8aToHex(wasm.bip39ToSeed('seed sock milk update focus rotate barely fade car face mechanic mercy', ''));
|
||||
|
||||
console.log('\tSEE', RESULT);
|
||||
console.log('\tSEE', res);
|
||||
|
||||
assert(RESULT === '0x3c121e20de068083b49c2315697fb59a2d9e8643c24e5ea7628132c58969a027', 'ERROR: Invalid bip39 mini secret');
|
||||
assert(res === '0x3c121e20de068083b49c2315697fb59a2d9e8643c24e5ea7628132c58969a027', 'ERROR: Invalid bip39 mini secret');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
bip39_generate,
|
||||
bip39_generate_subsequent,
|
||||
bip39_toEntropy,
|
||||
bip39_toMiniSecret,
|
||||
bip39_toSeed,
|
||||
|
||||
@@ -44,6 +44,17 @@ function sr25519_verifyExisting (wasm) {
|
||||
assert(isValid, 'ERROR: Unable to verify signature');
|
||||
}
|
||||
|
||||
function sr25519_sign_deterministic (wasm) {
|
||||
const [, pk, sk] = randomPair(wasm);
|
||||
const sig1 = u8aToHex(wasm.sr25519Sign(pk, sk, stringToU8a('this is a message')));
|
||||
const sig2 = u8aToHex(wasm.sr25519Sign(pk, sk, stringToU8a('this is a message')));
|
||||
|
||||
console.log('\tSG1', sig1);
|
||||
console.log('\tSG2', sig2);
|
||||
|
||||
assert(sig1 !== sig2, 'ERROR: Signatures are deterministic');
|
||||
}
|
||||
|
||||
function sr25519_signAndVerify (wasm) {
|
||||
const [, pk, sk] = randomPair(wasm);
|
||||
const signature = wasm.sr25519Sign(pk, sk, stringToU8a('this is a message'));
|
||||
@@ -119,5 +130,6 @@ module.exports = {
|
||||
sr25519_devFromSeed,
|
||||
sr25519_pairFromSeed,
|
||||
sr25519_signAndVerify,
|
||||
sr25519_sign_deterministic,
|
||||
sr25519_verifyExisting
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user