From 571ed13f0bf24422dde4656fd7793bc97f3c6124 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 16 Sep 2020 20:30:40 +0200 Subject: [PATCH] Read buffer helper --- app/src/main/java/eu/faircode/email/ActivitySetup.java | 6 ++---- app/src/main/java/eu/faircode/email/Helper.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 1580fd34d6..61cd8576a1 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -717,10 +717,8 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac else { byte[] salt = new byte[16]; byte[] prefix = new byte[16]; - if (raw.read(salt) != salt.length) - throw new IOException("Invalid file size"); - if (raw.read(prefix) != prefix.length) - throw new IOException("Invalid file size"); + Helper.readBuffer(raw, salt); + Helper.readBuffer(raw, prefix); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, KEY_ITERATIONS, KEY_LENGTH); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 4f96faa6ab..674e327cfd 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -1124,6 +1124,16 @@ public class Helper { } } + public static void readBuffer(InputStream is, byte[] buffer) throws IOException { + int left = buffer.length; + while (left > 0) { + int count = is.read(buffer, buffer.length - left, left); + if (count < 0) + throw new IOException("EOF"); + left -= count; + } + } + static void copy(File src, File dst) throws IOException { try (InputStream in = new FileInputStream(src)) { try (FileOutputStream out = new FileOutputStream(dst)) {