@@ -36,7 +36,7 @@ function decodeSignature(buffer) {
3636}
3737
3838function magicHash ( message , messagePrefix ) {
39- messagePrefix = messagePrefix || '\u0018Bitcoin Signed Message:\n' ;
39+ messagePrefix = messagePrefix || '\u0016eCash Signed Message:\n' ;
4040 if ( ! Buffer . isBuffer ( messagePrefix ) ) {
4141 messagePrefix = Buffer . from ( messagePrefix , 'utf8' ) ;
4242 }
@@ -110,7 +110,11 @@ function verify(message, xecAddress, signature, messagePrefix) {
110110
111111 const parsed = decodeSignature ( signature ) ;
112112
113- const hashBitcoinSigned = magicHash ( message , messagePrefix ) ;
113+ // Since Electrum ABC supports bitcoin signed messages, test for them by default
114+ const hashBitcoinSigned = magicHash (
115+ message ,
116+ '\u0018Bitcoin Signed Message:\n' ,
117+ ) ;
114118 const publicKeyBitcoinSigned = secp256k1 . recover (
115119 hashBitcoinSigned ,
116120 parsed . signature ,
@@ -119,8 +123,8 @@ function verify(message, xecAddress, signature, messagePrefix) {
119123 ) ;
120124 const publicKeyHashBitcoinSigned = hash160 ( publicKeyBitcoinSigned ) ;
121125
122- // Also test ecash: signed
123- const hashEcashSigned = magicHash ( message , '\u0016eCash Signed Message:\n' ) ;
126+ // Test for default eCash prefix or user specified prefix
127+ const hashEcashSigned = magicHash ( message , messagePrefix ) ;
124128 const publicKeyEcashSigned = secp256k1 . recover (
125129 hashEcashSigned ,
126130 parsed . signature ,
@@ -140,6 +144,10 @@ function verify(message, xecAddress, signature, messagePrefix) {
140144 expected = Buffer . alloc ( decodedAddress . hash . length ) ;
141145 expected . set ( decodedAddress . hash ) ;
142146
147+ if ( bufferEquals ( actualEcashSigned , expected ) ) {
148+ console . log ( `eCash signed message` ) ;
149+ }
150+
143151 return (
144152 bufferEquals ( actualEcashSigned , expected ) ||
145153 bufferEquals ( actualBitcoinSigned , expected )
0 commit comments