diff --git a/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java b/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java index 12129d0778..0db51c081f 100644 --- a/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java +++ b/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java @@ -154,6 +154,7 @@ public class CurrencyUtil { result.add(new CryptoCurrency("NBT", "NuBits")); result.add(new CryptoCurrency("NSR", "NuShares")); result.add(new CryptoCurrency("NXT", "Nxt")); + result.add(new CryptoCurrency("888", "OctoCoin")); result.add(new CryptoCurrency("OK", "OKCash")); result.add(new CryptoCurrency("OMNI", "Omni")); result.add(new CryptoCurrency("OPAL", "Opal")); diff --git a/gui/src/main/java/io/bitsquare/gui/util/validation/altcoins/OctocoinAddressValidator.java b/gui/src/main/java/io/bitsquare/gui/util/validation/altcoins/OctocoinAddressValidator.java index 06e610b238..f7daec38e9 100644 --- a/gui/src/main/java/io/bitsquare/gui/util/validation/altcoins/OctocoinAddressValidator.java +++ b/gui/src/main/java/io/bitsquare/gui/util/validation/altcoins/OctocoinAddressValidator.java @@ -1,27 +1,26 @@ package io.bitsquare.gui.util.validation.altcoins; -import java.util.Arrays; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.Arrays; public class OctocoinAddressValidator{ private final static String ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; public static boolean ValidateAddress(String addr) { if (addr.length() < 26 || addr.length() > 35) return false; - byte[] decoded = DecodeBase58(addr, 58, 25); + byte[] decoded = decodeBase58(addr, 58, 25); if (decoded == null) return false; - - byte[] hash = Sha256(decoded, 0, 21, 2); - - return Arrays.equals(Arrays.copyOfRange(hash, 0, 4), Arrays.copyOfRange(decoded, 21, 25)); + + byte[] hash = getSha256(decoded, 0, 21, 2); + return hash != null && Arrays.equals(Arrays.copyOfRange(hash, 0, 4), Arrays.copyOfRange(decoded, 21, 25)); } - - private static byte[] DecodeBase58(String input, int base, int len) { + + private static byte[] decodeBase58(String input, int base, int len) { byte[] output = new byte[len]; for (int i = 0; i < input.length(); i++) { char t = input.charAt(i); - + int p = ALPHABET.indexOf(t); if (p == -1) return null; for (int j = len - 1; j >= 0; j--, p /= 256) { @@ -30,17 +29,17 @@ public class OctocoinAddressValidator{ } if (p != 0) return null; } - + return output; } - - private static byte[] Sha256(byte[] data, int start, int len, int recursion) { + + private static byte[] getSha256(byte[] data, int start, int len, int recursion) { if (recursion == 0) return data; - + try { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(Arrays.copyOfRange(data, start, start + len)); - return Sha256(md.digest(), 0, 32, recursion - 1); + return getSha256(md.digest(), 0, 32, recursion - 1); } catch (NoSuchAlgorithmException e) { return null; }