safex-addressjs
Version:
Generate and checksum safex addresses
51 lines (40 loc) • 2.32 kB
JavaScript
const expect = require('chai').expect;
const wg = require('../index');
const { poor_mans_kdf } = require('../lib/Keccak');
describe('safex-addressjs', () => {
it('can generate wallet keys with random entropy', () => {
const seed = wg.sc_reduce32(wg.rand_32());
const keys = wg.create_address(seed);
expect(keys.public_addr.length).to.equal(101);
expect(keys.spend.pub.length).to.equal(64);
expect(keys.spend.sec.length).to.equal(64);
expect(keys.view.pub.length).to.equal(64);
expect(keys.view.sec.length).to.equal(64);
expect(wg.pubkeys_to_string(keys.spend.pub, keys.view.pub).length).to.equal(101);
});
it('can generate wallet keys with predetermined entropy', () => {
const entropy = 'some entropy string';
const seed = wg.sc_reduce32(poor_mans_kdf(entropy));
const keys = wg.create_address(seed);
expect(keys).to.eql({
'spend': {
'sec': '0fc6036f59ac0feb8a371bc2f6d998a1b0134ee9b0e437d7bd77015d22d1ad0e',
'pub': 'c81869389d5dbb71256f588a3e1db7ac27e3e2bd2c00a15bbe3243c773f2066e'
},
'view': {
'sec': '3523c3439dfa3b831a923989f6d4a8239e5b5d6455e8a36017886ce72adef007',
'pub': '3244d3263ca61a96d0dc87e734808b9453a59b4f693f01908e69a2c89bc11b4e'
},
'public_addr': 'Safex611rcxAUEYu3tg4yuQ88MWfg3ASuYeCr64kAeFkaMwhYyFTvpA7Pws5MjacwQffynDQhbiUAEHPTvvFS8eVaZ9sRiLfuuN3V'
});
expect(wg.pubkeys_to_string(keys.spend.pub, keys.view.pub)).to.equal(
'Safex611rcxAUEYu3tg4yuQ88MWfg3ASuYeCr64kAeFkaMwhYyFTvpA7Pws5MjacwQffynDQhbiUAEHPTvvFS8eVaZ9sRiLfuuN3V'
);
});
it('can verify address checksum', () => {
expect(wg.verify_checksum('SafexizbEHdGwdJjvtNrcQAf6FZBUSunfSDRbowxDNNGBPhfc6DzVeacEzxKNt3rFYEkyHLN7JNsWLHTM58DPA33iepZ4uqFFom9EXgCJJA36x4tk')).to.be.true;
expect(wg.verify_checksum('SafexizbEHdGwdJjvtNrcQAf6FZBUSunfSDRbowxDNNGBPhfc6DzVeacEzxKNt3rFYEkyHLN7JNsWLHTM58DPA33iepZ4uqFFom9EXgCJJA36x4tx')).to.be.false;
expect(wg.verify_checksum('SafeyizbEHdGwdJjvtNrcQAf6FZBUSunfSDRbowxDNNGBPhfc6DzVeacEzxKNt3rFYEkyHLN7JNsWLHTM58DPA33iepZ4uqFFom9EXgCJJA36x4tk')).to.be.false;
expect(wg.verify_checksum('SafeyizbEHdGwdJjvtNrcQAf6FZBUSunfSDRbowxDNNGBPhfc6DzVeacEzxKNt4rFYEkyHLN7JNsWLHTM58DPA33iepZ4uqFFom9EXgCJJA36x4tk')).to.be.false;
});
});