Skip to content

Commit

Permalink
[resolves trustwallet#260] implement AddressTests
Browse files Browse the repository at this point in the history
  • Loading branch information
Defuera committed May 26, 2019
1 parent e948c54 commit e0394c5
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 9 deletions.
7 changes: 6 additions & 1 deletion src/Aeternity/Address.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ TW::Aeternity::Address::Address(const PublicKey &publicKey) {

/// Initializes an address from a string representation.
TW::Aeternity::Address::Address(const std::string &string) {
// todo
if (!isValid(string)) {
throw std::invalid_argument("Invalid address");
}

auto payload = string.substr(Identifiers::prefixTransaction.size(), string.size());
bytes = Base58::bitcoin.decodeCheck(payload);
}

/// Returns a string representation of the Bravo address.
Expand Down
4 changes: 2 additions & 2 deletions src/Aeternity/Signer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,11 @@ std::string Aeternity::Signer::sign(const TW::PrivateKey &privateKey, Transactio
auto msg = buildMessageToSign(txRaw);

/// sign ed25519
auto sigRaw = privateKey.sign(msg, TWCurveED25519); // todo result is different, then aeternity sdk
auto sigRaw = privateKey.sign(msg, TWCurveED25519);
auto signature = ChecksumEncoder::encode(Identifiers::prefixSignature, sigRaw);

/// encode the message using rlp
auto rlpTxRaw = buildRlpTxRaw(txRaw, sigRaw);
auto rlpTxRawHex = hex(rlpTxRaw); //todo only for debugging

/// encode the rlp message with the prefix
auto signedEncodedTx = ChecksumEncoder::encode(Identifiers::prefixTransaction, rlpTxRaw);
Expand All @@ -52,6 +51,7 @@ Data TW::Aeternity::Signer::parseRawTransaction(const std::string &transaction)
auto start = txWithChecksum.begin();
auto end = txWithChecksum.end() - ChecksumEncoder::checkSumSize;
Data txRaw(start, end);

return txRaw;
}

Expand Down
4 changes: 1 addition & 3 deletions src/Aeternity/Transaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@ std::string TW::Aeternity::Transaction::encode() {
append(encoded, Ethereum::RLP::encode(payload));

const Data &raw = Ethereum::RLP::encodeList(encoded);
auto tx = TW::Base64::encode(raw);
auto result = ChecksumEncoder::encode(Identifiers::prefixTransaction, raw);

return result;
return ChecksumEncoder::encode(Identifiers::prefixTransaction, raw);
}

//// buildIDTag assemble an id() object
Expand Down
3 changes: 1 addition & 2 deletions src/Aion/Transaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ Data Transaction::encode() const noexcept {
append(encoded, Ethereum::RLP::encode(to.bytes));
append(encoded, Ethereum::RLP::encode(amount));
append(encoded, Ethereum::RLP::encode(payload));
append(encoded,
Ethereum::RLP::encode(uint128_t(155157377101))); // Huge timestamp
append(encoded, Ethereum::RLP::encode(uint128_t(155157377101))); // Huge timestamp
append(encoded, RLP::encodeLong(gasLimit));
append(encoded, RLP::encodeLong(gasPrice));
append(encoded, RLP::encodeLong(uint128_t(1))); // Aion transaction type
Expand Down
23 changes: 23 additions & 0 deletions tests/Aeternity/AddressTests.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright © 2017-2019 Trust.
//
// This file is part of Trust. The full Trust copyright notice, including
// terms governing use, modification, and redistribution, is contained in the
// file LICENSE at the root of the source code distribution tree.

#include <Aeternity/Address.h>
#include <HexCoding.h>
#include <gtest/gtest.h>

using namespace TW;
using namespace TW::Aeternity;

TEST(AeternityAddress, FromPublicKey) {
auto publicKey = PublicKey(parse_hex("ee93a4f66f8d16b819bb9beb9ffccdfcdc1412e87fee6a324c2a99a1e0e67148"), TWPublicKeyTypeED25519);
auto address = Address(publicKey);
ASSERT_EQ(address.string(), "ak_2p5878zbFhxnrm7meL7TmqwtvBaqcBddyp5eGzZbovZ5FeVfcw");
}

TEST(AeternityAddress, FromString) {
auto address = Address("ak_2p5878zbFhxnrm7meL7TmqwtvBaqcBddyp5eGzZbovZ5FeVfcw");
ASSERT_EQ(address.string(), "ak_2p5878zbFhxnrm7meL7TmqwtvBaqcBddyp5eGzZbovZ5FeVfcw");
}
2 changes: 1 addition & 1 deletion tests/Aeternity/SignerTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ TEST(AeternitySigner, Sign) {

auto signature = Signer::sign(privateKey, transaction);

EXPECT_EQ(signature, "sg_CwTqP+LAnMNKoxDkq4FuOQ8LVte4EjYuOrCnbWtCREUw+WMqapVGiL9V6CO9F93gcIt9YNehmYdmcB3XJ9pSAYnrNz4=");
EXPECT_EQ(signature, "sg_2dlw1eTrh79Yri5+urBSwVMJ86dSvCVtWc/nxIJrhIehxLzbtEdddjNyGJFc700p09KSd01oVTrpoCfiFsFvB3kDla0=");
}

1 change: 1 addition & 0 deletions tests/CoinTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ TEST(Coin, ValidateAddressARK){

TEST(Coin, ValidateAddressAeternity) {
EXPECT_TRUE(validateAddress(TWCoinTypeAeternity, "ak_11111111111111111111111111111111273Yts"));
EXPECT_FALSE(validateAddress(TWCoinTypeAeternity, "ak_11111111111111111111111111111111273Ytt"));// wrong checksum
EXPECT_FALSE(validateAddress(TWCoinTypeAeternity,"ka_11111111111111111111111111111111273Yts")); // wrong prefix
EXPECT_FALSE(validateAddress(TWCoinTypeAeternity,"ak_111111111111111111111111111111111173Yts")); // wrong size
EXPECT_FALSE(validateAddress(TWCoinTypeAeternity, "")); // empty address
Expand Down

0 comments on commit e0394c5

Please sign in to comment.