Skip to content

Commit 7d5fa6d

Browse files
authored
Merge pull request #5840 from BitGo/eric/SC-1424-encodeMessage-hex
fix(abstract-eth): return eip 191 encoded message as a hex string
2 parents 9802de7 + 6ae1979 commit 7d5fa6d

File tree

4 files changed

+19
-20
lines changed

4 files changed

+19
-20
lines changed

examples/js/send-message.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,20 @@ const walletId = null;
1616
const walletPassphrase = '';
1717

1818
Promise.coroutine(function* () {
19-
bitgo.authenticateWithAccessToken({ accessToken: accessToken });
19+
bitgo.authenticateWithAccessToken({ accessToken: accessToken });
2020

21-
const walletInstance = yield basecoin.wallets().get({ id: walletId });
21+
const walletInstance = yield basecoin.wallets().get({ id: walletId });
2222

23-
const messageRaw = 'Shamir has too many secrets';
24-
const messageEncoded = `\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`;
23+
const messageRaw = 'Shamir has too many secrets';
24+
const messageEncoded = basecoin.encodeMessage(messageRaw);
2525

26-
const messageTxn = yield walletInstance.signMessage({
27-
message: {
28-
messageRaw,
29-
messageEncoded,
30-
},
31-
walletPassphrase,
32-
})
33-
34-
console.log(messageTxn);
26+
const messageTxn = yield walletInstance.signMessage({
27+
message: {
28+
messageRaw,
29+
messageEncoded,
30+
},
31+
walletPassphrase,
32+
});
3533

34+
console.log(messageTxn);
3635
})();

modules/abstract-eth/src/abstractEthLikeNewCoins.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2430,11 +2430,11 @@ export abstract class AbstractEthLikeNewCoins extends AbstractEthLikeCoin {
24302430
/**
24312431
* Transform message to accommodate specific blockchain requirements.
24322432
* @param {string} message - the message to prepare
2433-
* @return {string} the prepared message.
2433+
* @return {string} the prepared message as a hex encoded string.
24342434
*/
24352435
encodeMessage(message: string): string {
24362436
const prefix = `\u0019Ethereum Signed Message:\n${message.length}`;
2437-
return prefix.concat(message);
2437+
return Buffer.from(prefix.concat(message)).toString('hex');
24382438
}
24392439

24402440
/**

modules/bitgo/test/v2/unit/wallet.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3448,7 +3448,7 @@ describe('V2 Wallet:', function () {
34483448
signature: txHash,
34493449
messageRaw,
34503450
coin: 'teth',
3451-
messageEncoded: '\u0019Ethereum Signed Message:\n4test',
3451+
messageEncoded: Buffer.from('\u0019Ethereum Signed Message:\n4test').toString('hex'),
34523452
};
34533453

34543454
beforeEach(async function () {
@@ -3499,7 +3499,7 @@ describe('V2 Wallet:', function () {
34993499
signMessage.should.deepEqual(expectedWithCoinField);
35003500
const actualArg = signMessageTssSpy.getCalls()[0].args[0] as WalletSignMessageOptions;
35013501
actualArg.message?.messageEncoded?.should.equal(
3502-
`\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`
3502+
Buffer.from(`\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`).toString('hex')
35033503
);
35043504
});
35053505

@@ -3516,7 +3516,7 @@ describe('V2 Wallet:', function () {
35163516
signMessage.should.deepEqual(expectedWithCoinField);
35173517
const actualArg = signMessageTssSpy.getCalls()[0].args[0] as WalletSignMessageOptions;
35183518
actualArg.message?.messageEncoded?.should.equal(
3519-
`\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`
3519+
Buffer.from(`\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`).toString('hex')
35203520
);
35213521
});
35223522

@@ -3532,7 +3532,7 @@ describe('V2 Wallet:', function () {
35323532
signMessage.should.deepEqual(expectedWithCoinField);
35333533
const actualArg = signMessageTssSpy.getCalls()[0].args[0] as WalletSignMessageOptions;
35343534
actualArg.message?.messageEncoded?.should.equal(
3535-
`\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`
3535+
Buffer.from(`\u0019Ethereum Signed Message:\n${messageRaw.length}${messageRaw}`).toString('hex')
35363536
);
35373537
});
35383538

modules/sdk-core/src/bitgo/wallet/wallet.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3497,7 +3497,7 @@ export class Wallet implements IWallet {
34973497
reqId: params.reqId || new RequestTracer(),
34983498
messageRaw: params.message.messageRaw,
34993499
messageEncoded: params.message.messageEncoded,
3500-
bufferToSign: Buffer.from(params.message.messageEncoded ?? ''),
3500+
bufferToSign: Buffer.from(params.message.messageEncoded ?? '', 'hex'),
35013501
});
35023502
assert(signedMessageRequest.messages, 'Unable to find messages in signedMessageRequest');
35033503
assert(

0 commit comments

Comments
 (0)