Skip to content

Commit 59a4cde

Browse files
shesekjgriffiths
authored andcommitted
wasm: Add tests for functions utilizing JS length functions
Almost all of them, except: - scriptpubkey_csv_2of2_then_1_from_bytes - scriptpubkey_csv_2of2_then_1_from_bytes_opt - scriptpubkey_csv_2of3_then_2_from_bytes - elements_pegout_script_from_bytes - elements_pegin_contract_script_from_bytes
1 parent b4dcb30 commit 59a4cde

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

src/wasm_package/test.js

+42-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,47 @@ wally.map_free(keypaths)
7474

7575
// Test output buffers with a user-specified length (scrypt is the only instance of this)
7676
const try_scrypt = size => wally.scrypt(Buffer.from("password"), Buffer.from("NaCl"), 1024, 8, 16, size)
77-
assert(try_scrypt(32).toString('hex'), 'fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b373162')
78-
assert(try_scrypt(64).toString('hex'), 'fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640')
77+
assert.equal(try_scrypt(32).toString('hex'), 'fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b373162')
78+
assert.equal(try_scrypt(64).toString('hex'), 'fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640')
79+
80+
// Test base58 conversion (depends on a JS length function)
81+
assert.equal(wally.base58_to_bytes('1EMBaSSyxMQPV2fmUsdB7mMfMoocgfiMNw', 0).toString('hex'), '00926ac8843cbca0ee59aa857188324d6d5b76c1c6f0bcc3b0')
82+
assert.equal(wally.base58_n_to_bytes('1EMBaSSyxMQPV2fmUsdB7mMfMoocgfiMNw', 34, 0).toString('hex'), '00926ac8843cbca0ee59aa857188324d6d5b76c1c6f0bcc3b0')
83+
84+
// Test AES (depends on a JS length function)
85+
assert.equal(wally.aes(Buffer.from('2b7e151628aed2a6abf7158809cf4f3c', 'hex'), Buffer.from('ae2d8a571e03ac9c9eb76fac45af8e51', 'hex'), wally.AES_FLAG_ENCRYPT).toString('hex'), 'f5d3d58503b9699de785895a96fdbaaf')
86+
assert.equal(wally.aes(Buffer.from('2b7e151628aed2a6abf7158809cf4f3c', 'hex'), Buffer.from('f5d3d58503b9699de785895a96fdbaaf', 'hex'), wally.AES_FLAG_DECRYPT).toString('hex'), 'ae2d8a571e03ac9c9eb76fac45af8e51')
87+
assert.equal(wally.aes_cbc(Buffer.from('b6bb953ba709b450bfba14f8e8c6b423', 'hex'), Buffer.from('1d3793f6b9ceb8d1c70726bc890f1f10', 'hex'), Buffer.from('212c4fab8ad5a7de2361ebe033cb', 'hex'), wally.AES_FLAG_ENCRYPT).toString('hex'), '9a8a46a2e63518933dd3ad846b04dc08')
88+
assert.equal(wally.aes_cbc(Buffer.from('b6bb953ba709b450bfba14f8e8c6b423', 'hex'), Buffer.from('1d3793f6b9ceb8d1c70726bc890f1f10', 'hex'), Buffer.from('9a8a46a2e63518933dd3ad846b04dc08', 'hex'), wally.AES_FLAG_DECRYPT).toString('hex'), '212c4fab8ad5a7de2361ebe033cb')
89+
90+
// Test WIF conversion (depends on a JS length function)
91+
assert.equal(wally.wif_to_public_key('KxDQjJwvLdNNGhsipGgmceWaPjRndZuaQB9B2tgdHsw5sQ8Rtqje', 0x80).toString('hex'), '02fcba7ecf41bc7e1be4ee122d9d22e3333671eb0a3a87b5cdf099d59874e1940f') // compressed
92+
assert.equal(wally.wif_to_public_key('5J3MnPC5qQCBiAiQ4uwmzvMkN1Yu2VJMFmSR2LQvzHyfG3aFeWg', 0x80).toString('hex'), '04fcba7ecf41bc7e1be4ee122d9d22e3333671eb0a3a87b5cdf099d59874e1940f6e51e74615a5de78c420d41a1daec0d79eb9fa9206f7bb539104d42c9a0d685e') // same key, uncompressed
93+
94+
// Test multisig scripts (depends on a JS length function)
95+
const r = (s, n) => Array(n+1).join(s) // repeat `s` `n` times
96+
, PK3 = Buffer.from(r('11', 33*3), 'hex') // Fake three compressed pubkeys
97+
, RS_1of2 = Buffer.from('5121'+r('11',33)+'21'+r('11',33)+'52ae', 'hex') // Fake 1of2 redeem script
98+
, SIG = Buffer.from(r('11', 64), 'hex') // Fake sig
99+
assert.equal(wally.scriptpubkey_multisig_from_bytes(PK3, 2, 0).toString('hex'),
100+
'52'+r('21'+r('11', 33), 3)+'53ae')
101+
assert.equal(wally.scriptsig_multisig_from_bytes(RS_1of2, SIG, [0x01], 0).toString('hex'),
102+
'00'+'4730440220'+r('11',32)+'0220'+r('11',32)+'01475121'+r('11',33)+'21'+r('11',33)+'52ae')
103+
104+
// Test format_bitcoin_message (depends on a JS length function)
105+
const MSG_PREFIX_HEX = Buffer.from('\x18Bitcoin Signed Message:\n').toString('hex')
106+
, test_msg = (msg, varint_hex) => assert.equal(wally.format_bitcoin_message(msg, 0).toString('hex'), MSG_PREFIX_HEX + varint_hex + msg.toString('hex'))
107+
test_msg(Buffer.from('aaa'), '03')
108+
test_msg(Buffer.from(r('a', 253)), 'fdfd00')
109+
assert.equal(wally.format_bitcoin_message(Buffer.from('a'), wally.BITCOIN_MESSAGE_FLAG_HASH).length, wally.SHA256_LEN)
110+
111+
// Test script_push_from_bytes (depends on a JS length function)
112+
const test_script_push = (data, prefix_hex) => assert.equal(wally.script_push_from_bytes(data, 0).toString('hex'), prefix_hex + data.toString('hex'))
113+
test_script_push(Buffer.from(r('00', 75), 'hex'), '4b')
114+
test_script_push(Buffer.from(r('00', 76), 'hex'), '4c4c')
115+
test_script_push(Buffer.from(r('00', 255), 'hex'), '4cff')
116+
test_script_push(Buffer.from(r('00', 256), 'hex'), '4d0001')
117+
assert.equal(wally.script_push_from_bytes(Buffer.from('foo'), wally.WALLY_SCRIPT_HASH160).length, wally.HASH160_LEN + 1)
118+
assert.equal(wally.script_push_from_bytes(Buffer.from('bar'), wally.WALLY_SCRIPT_SHA256).length, wally.SHA256_LEN + 1)
79119

80120
console.log('Tests passed.')

0 commit comments

Comments
 (0)