Skip to content

Commit 995b1d1

Browse files
committed
fix: tron message sign
1 parent b8c1fab commit 995b1d1

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

src/Tron/MessageSigner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace TW::Tron {
1414
Data generateMessage(const std::string& message) {
1515
std::string prefix(1, MessageSigner::TronPrefix);
1616
std::stringstream ss;
17-
ss << prefix << MessageSigner::MessagePrefix << message;
17+
ss << prefix << MessageSigner::MessagePrefix << message.length() << message;
1818
Data signableMessage = Hash::keccak256(data(ss.str()));
1919
return signableMessage;
2020
}

src/Tron/MessageSigner.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class MessageSigner {
2424
/// \param signature signature to verify the message against
2525
/// \return true if the message match the signature, false otherwise
2626
static bool verifyMessage(const PublicKey& publicKey, const std::string& message, const std::string& signature) noexcept;
27-
static constexpr auto MessagePrefix = "TRON Signed Message:\n32";
27+
static constexpr auto MessagePrefix = "TRON Signed Message:\n";
2828
static constexpr std::uint8_t TronPrefix{0x19};
2929
};
3030

tests/chains/Tron/TronMessageSignerTests.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,16 @@ namespace TW::Tron {
1515
PrivateKey tronKey(parse_hex("75065f100e38d3f3b4c5c4235834ba8216de62272a4f03532c44b31a5734360a"));
1616
auto msg = "Hello World";
1717
auto signature = Tron::MessageSigner::signMessage(tronKey, msg);
18-
ASSERT_EQ(signature, "9bb6d11ec8a6a3fb686a8f55b123e7ec4e9746a26157f6f9e854dd72f5683b450397a7b0a9653865658de8f9243f877539882891bad30c7286c3bf5622b900471b");
1918
auto pubKey = tronKey.getPublicKey(TWPublicKeyTypeSECP256k1Extended);
19+
20+
ASSERT_EQ(signature, "bc0753c070cc55693097df11bc11e1a7c4bd5e1a40b9dc94c75568e59bcc9d6b50a7873ef25b469e494490a54de37327b4bc7fc825c81a377b555e34fb7261ba1c");
2021
ASSERT_TRUE(Tron::MessageSigner::verifyMessage(pubKey, msg, signature));
22+
23+
auto msg2 = "A much longer message to test the signing and verification process";
24+
auto signature2 = Tron::MessageSigner::signMessage(tronKey, msg2);
25+
26+
ASSERT_EQ(signature2, "93aee5f753cf889e0749c74dd0c5996cce889883ae079e09ede462e16d65d06a4f43d1ed2745e9f3c1690695628269bd58f057a4a93953cc50e66b4a05bc0f451b");
27+
ASSERT_TRUE(Tron::MessageSigner::verifyMessage(pubKey, msg2, signature2));
2128
}
2229

2330
TEST(TWTronMessageSigner, SignAndVerifyLegacy) {
@@ -27,7 +34,12 @@ namespace TW::Tron {
2734

2835
const auto pubKey = WRAP(TWPublicKey, TWPrivateKeyGetPublicKey(privateKey.get(), TWCoinTypeTron));
2936
const auto signature = WRAPS(TWTronMessageSignerSignMessage(privateKey.get(), message.get()));
30-
EXPECT_EQ(std::string(TWStringUTF8Bytes(signature.get())), "9bb6d11ec8a6a3fb686a8f55b123e7ec4e9746a26157f6f9e854dd72f5683b450397a7b0a9653865658de8f9243f877539882891bad30c7286c3bf5622b900471b");
37+
EXPECT_EQ(std::string(TWStringUTF8Bytes(signature.get())), "bc0753c070cc55693097df11bc11e1a7c4bd5e1a40b9dc94c75568e59bcc9d6b50a7873ef25b469e494490a54de37327b4bc7fc825c81a377b555e34fb7261ba1c");
3138
EXPECT_TRUE(TWTronMessageSignerVerifyMessage(pubKey.get(), message.get(), signature.get()));
39+
40+
const auto message2 = STRING("A much longer message to test the signing and verification process");
41+
const auto signature2 = WRAPS(TWTronMessageSignerSignMessage(privateKey.get(), message2.get()));
42+
EXPECT_EQ(std::string(TWStringUTF8Bytes(signature2.get())), "93aee5f753cf889e0749c74dd0c5996cce889883ae079e09ede462e16d65d06a4f43d1ed2745e9f3c1690695628269bd58f057a4a93953cc50e66b4a05bc0f451b");
43+
EXPECT_TRUE(TWTronMessageSignerVerifyMessage(pubKey.get(), message2.get(), signature2.get()));
3244
}
3345
}

0 commit comments

Comments
 (0)