Merge branch 'release/2.5.0.0beta11'

This commit is contained in:
J-Jamet
2018-05-13 18:23:37 +02:00
7 changed files with 33 additions and 8 deletions

View File

@@ -1,3 +1,6 @@
KeepassDX (2.5.0.0beta11)
* Fix crash in beta10 version
KeepassDX (2.5.0.0beta10) KeepassDX (2.5.0.0beta10)
* Dynamically change Algorithm and Key Derivation Function in settings * Dynamically change Algorithm and Key Derivation Function in settings
* Upgrade translations * Upgrade translations

View File

@@ -8,8 +8,8 @@ android {
applicationId "com.kunzisoft.keepass" applicationId "com.kunzisoft.keepass"
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 27 targetSdkVersion 27
versionCode = 10 versionCode = 11
versionName = "2.5.0.0beta10" versionName = "2.5.0.0beta11"
multiDexEnabled true multiDexEnabled true
testApplicationId = "com.kunzisoft.keepass.tests" testApplicationId = "com.kunzisoft.keepass.tests"

View File

@@ -215,6 +215,8 @@ public class Database {
} }
private void saveData(Context ctx, Uri uri) throws IOException, PwDbOutputException { private void saveData(Context ctx, Uri uri) throws IOException, PwDbOutputException {
String errorMessage = "Failed to store database.";
if (uri.getScheme().equals("file")) { if (uri.getScheme().equals("file")) {
String filename = uri.getPath(); String filename = uri.getPath();
File tempFile = new File(filename + ".tmp"); File tempFile = new File(filename + ".tmp");
@@ -226,7 +228,8 @@ public class Database {
if (pmo != null) if (pmo != null)
pmo.output(); pmo.output();
} catch (Exception e) { } catch (Exception e) {
throw new IOException("Failed to store database."); Log.e(TAG, errorMessage, e);
throw new IOException(errorMessage, e);
} finally { } finally {
if (fos != null) if (fos != null)
fos.close(); fos.close();
@@ -242,7 +245,7 @@ public class Database {
File orig = new File(filename); File orig = new File(filename);
if (!tempFile.renameTo(orig)) { if (!tempFile.renameTo(orig)) {
throw new IOException("Failed to store database."); throw new IOException(errorMessage);
} }
} }
else { else {
@@ -253,7 +256,8 @@ public class Database {
if (pmo != null) if (pmo != null)
pmo.output(); pmo.output();
} catch (Exception e) { } catch (Exception e) {
throw new IOException("Failed to store database."); Log.e(TAG, errorMessage, e);
throw new IOException(errorMessage, e);
} finally { } finally {
if (os != null) if (os != null)
os.close(); os.close();
@@ -392,14 +396,18 @@ public class Database {
} }
public KdfEngine getKdfEngine() { public KdfEngine getKdfEngine() {
return getPwDatabase().getKdfEngine(); KdfEngine kdfEngine = getPwDatabase().getKdfEngine();
if (kdfEngine == null)
return KdfFactory.aesKdf;
return kdfEngine;
} }
public void assignKdfEngine(KdfEngine kdfEngine) { public void assignKdfEngine(KdfEngine kdfEngine) {
switch (getPwDatabase().getVersion()) { switch (getPwDatabase().getVersion()) {
case V4: case V4:
PwDatabaseV4 db = ((PwDatabaseV4) getPwDatabase()); PwDatabaseV4 db = ((PwDatabaseV4) getPwDatabase());
if (!db.getKdfParameters().kdfUUID.equals(kdfEngine.getDefaultParameters().kdfUUID)) if (db.getKdfParameters() == null
|| !db.getKdfParameters().kdfUUID.equals(kdfEngine.getDefaultParameters().kdfUUID))
db.setKdfParameters(kdfEngine.getDefaultParameters()); db.setKdfParameters(kdfEngine.getDefaultParameters());
setNumberKeyEncryptionRounds(kdfEngine.getDefaultKeyRounds()); setNumberKeyEncryptionRounds(kdfEngine.getDefaultKeyRounds());
setMemoryUsage(kdfEngine.getDefaultMemoryUsage()); setMemoryUsage(kdfEngine.getDefaultMemoryUsage());

View File

@@ -100,7 +100,6 @@ public class PwDbHeaderOutputV4 extends PwDbHeaderOutput {
writeHeaderField(PwDbHeaderV4.PwDbHeaderV4Fields.TransformRounds, LEDataOutputStream.writeLongBuf(db.getNumberKeyEncryptionRounds())); writeHeaderField(PwDbHeaderV4.PwDbHeaderV4Fields.TransformRounds, LEDataOutputStream.writeLongBuf(db.getNumberKeyEncryptionRounds()));
} else { } else {
writeHeaderField(PwDbHeaderV4.PwDbHeaderV4Fields.KdfParameters, KdfParameters.serialize(db.getKdfParameters())); writeHeaderField(PwDbHeaderV4.PwDbHeaderV4Fields.KdfParameters, KdfParameters.serialize(db.getKdfParameters()));
// TODO verify serialize in all cases
} }
if (header.encryptionIV.length > 0) { if (header.encryptionIV.length > 0) {

View File

@@ -293,6 +293,9 @@ public class PwDbV4Output extends PwDbOutput<PwDbHeaderV4> {
} }
random.nextBytes(header.encryptionIV); random.nextBytes(header.encryptionIV);
if (mPM.getKdfParameters() == null) {
mPM.setKdfParameters(KdfFactory.aesKdf.getDefaultParameters());
}
KdfEngine kdf = KdfFactory.get(mPM.getKdfParameters()); KdfEngine kdf = KdfFactory.get(mPM.getKdfParameters());
kdf.randomize(mPM.getKdfParameters()); kdf.randomize(mPM.getKdfParameters());

View File

@@ -0,0 +1,6 @@
* Dynamically change Algorithm and Key Derivation Function in settings
* Upgrade translations
* New red volcano theme, fix classic dark theme
* Add Material Icon Pack to the Free version
* Update fingerprint state with checkbox
* Fix bugs / crash in beta10 version

View File

@@ -0,0 +1,6 @@
* Modification dynamique de l'algorithme et de la fonction de dérivation de clé dans les paramètres
* Mise à jour des traductions
* Nouveau thème red volcano, correction du thème sombre classic
* Ajout du Pack d'Icones Material à la version gratuite
* Mise à jour de l'état de l'empreinte digitale avec la boite à cocher
* Corrections de bugs / crash dans la version beta10