Remove the use of FileInputStream.available()
Bug: 2976294
Change-Id: I34b13cedbf1d2338163ef74454817c318a3a24f5
diff --git a/keystore/java/android/security/SystemKeyStore.java b/keystore/java/android/security/SystemKeyStore.java
index abdb0ae..1093219 100644
--- a/keystore/java/android/security/SystemKeyStore.java
+++ b/keystore/java/android/security/SystemKeyStore.java
@@ -20,6 +20,8 @@
import android.os.FileUtils;
import android.os.Process;
+import org.apache.harmony.luni.util.InputStreamHelper;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -108,26 +110,19 @@
return keyFile;
}
- public String retrieveKeyHexString(String keyName) {
+ public String retrieveKeyHexString(String keyName) throws IOException {
return toHexString(retrieveKey(keyName));
}
- public byte[] retrieveKey(String keyName) {
-
+ public byte[] retrieveKey(String keyName) throws IOException {
File keyFile = getKeyFile(keyName);
+
if (!keyFile.exists()) {
return null;
}
- try {
- FileInputStream fis = new FileInputStream(keyFile);
- int keyLen = fis.available();
- byte[] retKey = new byte[keyLen];
- fis.read(retKey);
- fis.close();
- return retKey;
- } catch (IOException ioe) { }
- throw new IllegalArgumentException();
+ FileInputStream fis = new FileInputStream(keyFile);
+ return InputStreamHelper.readFullyAndClose(fis);
}
public void deleteKey(String keyName) {