Skip to content

Commit 10b3d03

Browse files
committed
[Cashtab] [xecjs-message upgrade p2/3] Sign msgs with ecash prefix in xecjs-message
Summary: T2783 Depends on D12645 Sign msgs with ecash signature Test Plan: npm start Sign a message Confirm dev log displays 'Both methods not broken' Verify a message Confirm verification Reviewers: #bitcoin_abc, emack Reviewed By: #bitcoin_abc, emack Differential Revision: https://reviews.bitcoinabc.org/D12646
1 parent 716956d commit 10b3d03

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

web/cashtab/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/cashtab/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
"webpack-manifest-plugin": "^4.0.2",
9393
"wif": "^2.0.6",
9494
"workbox-webpack-plugin": "^6.4.1",
95-
"xecjs-message": "^1.0.5-b"
95+
"xecjs-message": "^1.0.5-c"
9696
},
9797
"scripts": {
9898
"start": "node scripts/start.js",

web/xecjs-message/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,7 @@
3939
**removed**
4040

4141
- All segwit support
42+
43+
**added**
44+
45+
- Support for signing a message with standard eCash prefix

web/xecjs-message/index.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ function decodeSignature(buffer) {
3636
}
3737

3838
function 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)

web/xecjs-message/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "xecjs-message",
3-
"version": "1.0.5b",
3+
"version": "1.0.5c",
44
"description": "xecjs-message",
55
"keywords": [
66
"xecjs-message",

0 commit comments

Comments
 (0)