diff --git a/CHANGELOG b/CHANGELOG index aaafc2f8..2d4bb70d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ + * Fix databases broken with missing AES KDF UUID + KeePassDroid (2.5.17) * Fix KDBX3 -> 4 upgrade diff --git a/app/src/main/java/com/keepassdroid/crypto/keyDerivation/KdfParameters.java b/app/src/main/java/com/keepassdroid/crypto/keyDerivation/KdfParameters.java index d4f07c1f..9995d9c7 100644 --- a/app/src/main/java/com/keepassdroid/crypto/keyDerivation/KdfParameters.java +++ b/app/src/main/java/com/keepassdroid/crypto/keyDerivation/KdfParameters.java @@ -50,7 +50,15 @@ public static KdfParameters deserialize(byte[] data) throws IOException { return null; } - UUID uuid = Types.bytestoUUID(d.getByteArray(ParamUUID)); + byte[] uuidBytes = d.getByteArray((ParamUUID)); + UUID uuid; + if (uuidBytes != null) { + uuid = Types.bytestoUUID(uuidBytes); + } else { + // Correct issue where prior versions were writing empty UUIDs for AES + uuid = AesKdf.CIPHER_UUID; + } + if (uuid == null) { assert(false); return null;