@@ -129,14 +129,27 @@ describe('ecrecover', function() {
129
129
'8ae8cb685a7a9f29494b07b287c3f6a103b73fa178419d10d1184861a40f6afe' ,
130
130
'hex'
131
131
)
132
- const v = Buffer . from ( 'f2ded8deec6714' , 'hex' )
132
+
133
133
const r = Buffer . from ( 'ec212841e0b7aaffc3b3e33a08adf32fa07159e856ef23db85175a4f6d71dc0f' , 'hex' )
134
134
const s = Buffer . from ( '4b8e02b96b94064a5aa2f8d72bd0040616ba8e482a5dd96422e38c9a4611f8d5' , 'hex' )
135
- const chainID = Buffer . from ( '796f6c6f763378' , 'hex' )
136
- const sender = ecrecover ( msgHash , v , r , s , chainID )
137
- assert . ok ( sender . equals ( senderPubKey ) , 'sender pubkey correct' )
138
- const chainIDNumber = parseInt ( chainID . toString ( 'hex' ) , 16 )
139
- const vNumber = parseInt ( v . toString ( 'hex' ) , 16 )
135
+
136
+ const vBuffer = Buffer . from ( 'f2ded8deec6714' , 'hex' )
137
+ const chainIDBuffer = Buffer . from ( '796f6c6f763378' , 'hex' )
138
+ let sender = ecrecover ( msgHash , vBuffer , r , s , chainIDBuffer )
139
+ assert . ok ( sender . equals ( senderPubKey ) , 'sender pubkey correct (Buffer)' )
140
+
141
+ const vBN = new BN ( vBuffer )
142
+ const chainIDBN = new BN ( chainIDBuffer )
143
+ sender = ecrecover ( msgHash , vBN , r , s , chainIDBN )
144
+ assert . ok ( sender . equals ( senderPubKey ) , 'sender pubkey correct (BN)' )
145
+
146
+ const vHexString = '0xf2ded8deec6714'
147
+ const chainIDHexString = '0x796f6c6f763378'
148
+ sender = ecrecover ( msgHash , vHexString , r , s , chainIDHexString )
149
+ assert . ok ( sender . equals ( senderPubKey ) , 'sender pubkey correct (HexString)' )
150
+
151
+ const chainIDNumber = parseInt ( chainIDBuffer . toString ( 'hex' ) , 16 )
152
+ const vNumber = parseInt ( vBuffer . toString ( 'hex' ) , 16 )
140
153
assert . throws ( ( ) => {
141
154
// If we would use numbers for the `v` and `chainId` parameters, then it should throw.
142
155
// (The numbers are too high to perform arithmetic on)
0 commit comments