From 2011c536128161ccf396c22a65561dd08dde79d6 Mon Sep 17 00:00:00 2001 From: Premysl Vyhnal <44365000+pvyhnal-generalbytes@users.noreply.github.com> Date: Tue, 11 Jun 2019 12:14:41 +0200 Subject: [PATCH] BATM-864 enable ltc1 addresses --- .../api/wallet/ltc/WalletToolsLTC.java | 24 ++++++++++++++++--- .../api/wallet/btc/WalletToolsBTCTest.java | 3 +++ .../api/wallet/ltc/WalletToolsLTCTest.java | 7 ++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/bitrafael-client/src/main/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTC.java b/bitrafael-client/src/main/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTC.java index da49b14..015a5dd 100644 --- a/bitrafael-client/src/main/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTC.java +++ b/bitrafael-client/src/main/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTC.java @@ -351,16 +351,24 @@ public Classification classify(String input) { input = input.substring(0,input.indexOf("?")); } - if ((input.startsWith("L") || input.startsWith("3") || input.startsWith("M")) && input.length() <= 34) { + if ((input.startsWith("L") || input.startsWith("3") || input.startsWith("M")) && input.length() <= 34) { //most likely address lets check it try { if (isAddressValidInternal(input)) { - return new Classification(Classification.TYPE_ADDRESS,IClient.LTC,input); + return new Classification(Classification.TYPE_ADDRESS, IClient.LTC, input); } } catch (AddressFormatException e) { e.printStackTrace(); } - }else if (((input.startsWith("6")) && input.length() >= 51) || ((input.startsWith("T")) && input.length() >= 51)) { + } else if (input.startsWith("ltc1")) { + try { + if (isAddressValidBech32Internal(input)) { + return new Classification(Classification.TYPE_ADDRESS, IClient.LTC, input); + } + } catch (AddressFormatException e) { + e.printStackTrace(); + } + } else if (((input.startsWith("6")) && input.length() >= 51) || ((input.startsWith("T")) && input.length() >= 51)) { //most likely private key try { DumpedPrivateKey dp = DumpedPrivateKey.fromBase58(MainNetParams.get(), input); @@ -392,6 +400,16 @@ private static boolean isAddressValidInternal(String address) { return true; } + private static boolean isAddressValidBech32Internal(String address) { + try { + Bech32.decode(address); + } catch (AddressFormatException e) { + e.printStackTrace(); + return false; + } + return true; + } + @Override public Set supportedCryptoCurrencies() { final HashSet result = new HashSet(); diff --git a/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/btc/WalletToolsBTCTest.java b/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/btc/WalletToolsBTCTest.java index 0917513..77544a9 100644 --- a/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/btc/WalletToolsBTCTest.java +++ b/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/btc/WalletToolsBTCTest.java @@ -52,5 +52,8 @@ public void classify() { Assert.assertEquals("BTC", walletToolsBTC.classify("3CuvPRVeG3jWhm1dLSACKDN9PMPuY6FVXT", "BTC").getCryptoCurrency()); Assert.assertEquals("BTC", walletToolsBTC.classify("112pN943KyuQY26epMwFFvcj85EVVc2fnJ", "BTC").getCryptoCurrency()); Assert.assertEquals("BTC", walletToolsBTC.classify("bc1qlgp42vadfqkdjr0wdwvfnpqlvs5cg3xnl5zukw", "BTC").getCryptoCurrency()); + Assert.assertEquals("BTC", walletToolsBTC.classify("bitcoin:3CuvPRVeG3jWhm1dLSACKDN9PMPuY6FVXT", "BTC").getCryptoCurrency()); + Assert.assertEquals("BTC", walletToolsBTC.classify("bitcoin:112pN943KyuQY26epMwFFvcj85EVVc2fnJ", "BTC").getCryptoCurrency()); + Assert.assertEquals("BTC", walletToolsBTC.classify("bitcoin:bc1qlgp42vadfqkdjr0wdwvfnpqlvs5cg3xnl5zukw", "BTC").getCryptoCurrency()); } } \ No newline at end of file diff --git a/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTCTest.java b/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTCTest.java index 3341c77..9fd93ce 100644 --- a/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTCTest.java +++ b/bitrafael-client/src/test/java/com/generalbytes/bitrafael/api/wallet/ltc/WalletToolsLTCTest.java @@ -35,7 +35,14 @@ public void getWalletAddress() { @Test public void classify() { + Assert.assertEquals("LTC", walletToolsLTC.classify("ltc1q3cv28h4f33dj7msgm85va0epdw6298rxsparl7", "LTC").getCryptoCurrency()); + Assert.assertEquals("LTC", walletToolsLTC.classify("litecoin:ltc1q3cv28h4f33dj7msgm85va0epdw6298rxsparl7", "LTC").getCryptoCurrency()); Assert.assertEquals("LTC", walletToolsLTC.classify("MV5sqqgY5qG3rxBciUQgz9dSYSKiyxN2n3", "LTC").getCryptoCurrency()); + Assert.assertEquals("LTC", walletToolsLTC.classify("litecoin:MV5sqqgY5qG3rxBciUQgz9dSYSKiyxN2n3", "LTC").getCryptoCurrency()); Assert.assertEquals("LTC", walletToolsLTC.classify("LZpVz2zJ9Mq4tUx2UeSiFHRqKfN54BL6yr", "LTC").getCryptoCurrency()); + Assert.assertEquals("LTC", walletToolsLTC.classify("litecoin:LZpVz2zJ9Mq4tUx2UeSiFHRqKfN54BL6yr", "LTC").getCryptoCurrency()); + + Assert.assertNull(walletToolsLTC.classify("ltc1QQQQQQQQQ3cv28h4f33dj7msgm85va0epdw6298rxsparl7", "LTC").getCryptoCurrency()); + Assert.assertNull(walletToolsLTC.classify("MV5sqqgY5qG3rxBciUXXXXXdSYSKiyxN2n3", "LTC").getCryptoCurrency()); } } \ No newline at end of file