Add automatic crypted databases open via dotenvs (#1404)

* Rename confusing variables

* Fix some project warnings

* Fix code style

* Add constant for the default page size

* Move KeyFormats enum to CipherSettings

* Fix code style

* Fix memory leak

* Stop relying on CipherDialog for encryption settings management

* Fix code style

* Add .env format for QSettings

* Add automatic crypted databases open via dotenvs

This adds support for `.env` files next to the crypted databases that
are to be opened that contains the needed cipher settings.

The only required one is the plain-text password as a value for the key
with the name of the database like this:

    myCryptedDatabase.sqlite = MyPassword

This way, databases with a different extension are supported too:

    myCryptedDatabase.db = MyPassword

You can also specify a custom page size adding a different line
(anywhere in the file) like this:

    myCryptedDatabase.db_pageSize = 2048

If not specified, `1024` is used.

You can also specify the format of the specified key using the
associated integer id:

    anotherCryptedDatabase.sqlite = 0xCAFEBABE
    anotherCryptedDatabase.sqlite_keyFormat = 1

where `1` means a Raw key. If not specified, `0` is used, which means a
simple text Passphrase.

Dotenv files (`.env`) are already used on other platforms and by
different tools to manage environment variables, and it's recommended
to be ignored from version control systems, so they won't leak.

* Add new files to CMakeLists

* Move DotenvFormat include to the implementation

* Fix build error

* Remove superfluous method

(related to ac51c23)

* Remove superfluous checks

* Fix memory leaks

(introduced by 94bbb46)

* Fix code style

* Make dotenv related variable and comment clearer

* Remove duplicated code

* Remove unused forward declaration

(introduced by e5a0293)
This commit is contained in:
Iulian Onofrei
2018-07-10 21:46:17 +03:00
committed by Martin Kleusberg
parent c861f1b9d9
commit 3cdc65a63f
13 changed files with 267 additions and 76 deletions
+8
View File
@@ -17,6 +17,8 @@ set(TESTSQLOBJECTS_SRC
../Settings.cpp
testsqlobjects.cpp
../Data.cpp
../CipherSettings.cpp
../DotenvFormat.cpp
)
set(TESTSQLOBJECTS_HDR
@@ -32,6 +34,8 @@ set(TESTSQLOBJECTS_MOC_HDR
../sqlitetablemodel.h
../Settings.h
testsqlobjects.h
../CipherSettings.h
../DotenvFormat.h
)
if(sqlcipher)
@@ -92,6 +96,8 @@ set(TESTREGEX_SRC
../Settings.cpp
TestRegex.cpp
../Data.cpp
../CipherSettings.cpp
../DotenvFormat.cpp
)
set(TESTREGEX_HDR
@@ -107,6 +113,8 @@ set(TESTREGEX_MOC_HDR
../sqlitetablemodel.h
../Settings.h
TestRegex.h
../CipherSettings.h
../DotenvFormat.h
)
if(sqlcipher)