mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-21 03:21:43 -06:00
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:
committed by
Martin Kleusberg
parent
c861f1b9d9
commit
3cdc65a63f
@@ -49,34 +49,33 @@ CipherDialog::~CipherDialog()
|
||||
delete ui;
|
||||
}
|
||||
|
||||
CipherDialog::KeyFormats CipherDialog::keyFormat() const
|
||||
CipherSettings CipherDialog::getCipherSettings() const
|
||||
{
|
||||
return static_cast<CipherDialog::KeyFormats>(ui->comboKeyFormat->currentIndex());
|
||||
}
|
||||
CipherSettings::KeyFormats keyFormat = CipherSettings::getKeyFormat(ui->comboKeyFormat->currentIndex());
|
||||
QString password = ui->editPassword->text();
|
||||
int pageSize = ui->comboPageSize->itemData(ui->comboPageSize->currentIndex()).toInt();
|
||||
|
||||
QString CipherDialog::password() const
|
||||
{
|
||||
if(keyFormat() == KeyFormats::Passphrase)
|
||||
return QString("'%1'").arg(ui->editPassword->text().replace("'", "''"));
|
||||
else
|
||||
return QString("\"x'%1'\"").arg(ui->editPassword->text().mid(2)); // Remove the '0x' part at the beginning
|
||||
}
|
||||
CipherSettings cipherSettings;
|
||||
|
||||
int CipherDialog::pageSize() const
|
||||
{
|
||||
return ui->comboPageSize->itemData(ui->comboPageSize->currentIndex()).toInt();
|
||||
cipherSettings.setKeyFormat(keyFormat);
|
||||
cipherSettings.setPassword(password);
|
||||
cipherSettings.setPageSize(pageSize);
|
||||
|
||||
return cipherSettings;
|
||||
}
|
||||
|
||||
void CipherDialog::checkInputFields()
|
||||
{
|
||||
if(sender() == ui->comboKeyFormat)
|
||||
{
|
||||
if(keyFormat() == KeyFormats::Passphrase)
|
||||
CipherSettings::KeyFormats keyFormat = CipherSettings::getKeyFormat(ui->comboKeyFormat->currentIndex());
|
||||
|
||||
if(keyFormat == CipherSettings::KeyFormats::Passphrase)
|
||||
{
|
||||
ui->editPassword->setValidator(nullptr);
|
||||
ui->editPassword2->setValidator(nullptr);
|
||||
ui->editPassword->setPlaceholderText("");
|
||||
} else if(keyFormat() == KeyFormats::RawKey) {
|
||||
} else if(keyFormat == CipherSettings::KeyFormats::RawKey) {
|
||||
ui->editPassword->setValidator(rawKeyValidator);
|
||||
ui->editPassword2->setValidator(rawKeyValidator);
|
||||
ui->editPassword->setPlaceholderText("0x...");
|
||||
|
||||
Reference in New Issue
Block a user