@@ -74,7 +74,47 @@ wally.map_free(keypaths)
74
74
75
75
// Test output buffers with a user-specified length (scrypt is the only instance of this)
76
76
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 )
79
119
80
120
console . log ( 'Tests passed.' )
0 commit comments