diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java b/app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java index b1506eb..05d2b1e 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java @@ -66,6 +66,8 @@ public class BitcoinAddressValidator { byte[] result = new byte[25]; byte[] numBytes = num.toByteArray(); + if (numBytes.length > result.length) return null; + if (num.bitLength() == 200) { System.arraycopy(numBytes, 1, result, 0, 25); } else { diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/KeyStoreHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/KeyStoreHelper.java index 6db0631..2e3521c 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/KeyStoreHelper.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/KeyStoreHelper.java @@ -284,7 +284,9 @@ public class KeyStoreHelper { private static byte[] decrypt(String alias, byte[] data) { try { - PrivateKey privateKey = getPrivateKeyEntry(alias).getPrivateKey(); + KeyStore.PrivateKeyEntry pke = getPrivateKeyEntry(alias); + if (pke == null) return null; + PrivateKey privateKey = pke.getPrivateKey(); Cipher cipher = Cipher.getInstance(SecurityConstants.CIPHER_RSA_ECB_PKCS1); cipher.init(Cipher.DECRYPT_MODE, privateKey); @@ -305,7 +307,8 @@ public class KeyStoreHelper { */ private static byte[] signData(String alias, byte[] data) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException { - + KeyStore.PrivateKeyEntry pke = getPrivateKeyEntry(alias); + if (pke == null) return null; PrivateKey privateKey = getPrivateKeyEntry(alias).getPrivateKey(); Signature s = Signature.getInstance(SecurityConstants.SIGNATURE_SHA256withRSA); s.initSign(privateKey);