diff --git a/src/documents/management/commands/document_exporter.py b/src/documents/management/commands/document_exporter.py index 1be32dd80..f3bf65792 100644 --- a/src/documents/management/commands/document_exporter.py +++ b/src/documents/management/commands/document_exporter.py @@ -378,8 +378,8 @@ class Command(SecurityMixin, BaseCommand): metadata[EXPORTER_CRYPTO_SETTINGS_NAME] = { EXPORTER_CRYPTO_ALGO_NAME: self.kdf_algorithm, EXPORTER_CRYPTO_KEY_ITERATIONS_NAME: self.key_iterations, - EXPORTER_CRYPTO_SALT_NAME: self.salt, EXPORTER_CRYPTO_KEY_SIZE_NAME: self.key_size, + EXPORTER_CRYPTO_SALT_NAME: self.salt, } extra_metadata_path.write_text( json.dumps( @@ -563,6 +563,6 @@ class Command(SecurityMixin, BaseCommand): self.setup_crypto(passphrase=self.passphrase) for mail_account_record in manifest["mail_accounts"]: - mail_account_record["password"] = self.encrypt_string( - value=mail_account_record["password"], + mail_account_record["fields"]["password"] = self.encrypt_string( + value=mail_account_record["fields"]["password"], ) diff --git a/src/documents/management/commands/document_importer.py b/src/documents/management/commands/document_importer.py index 05cad41f7..46fb7e898 100644 --- a/src/documents/management/commands/document_importer.py +++ b/src/documents/management/commands/document_importer.py @@ -33,6 +33,8 @@ from documents.models import Tag from documents.parsers import run_convert from documents.settings import EXPORTER_ARCHIVE_NAME from documents.settings import EXPORTER_CRYPTO_ALGO_NAME +from documents.settings import EXPORTER_CRYPTO_KEY_ITERATIONS_NAME +from documents.settings import EXPORTER_CRYPTO_KEY_SIZE_NAME from documents.settings import EXPORTER_CRYPTO_SALT_NAME from documents.settings import EXPORTER_CRYPTO_SETTINGS_NAME from documents.settings import EXPORTER_FILE_NAME @@ -181,16 +183,16 @@ class Command(SecurityMixin, BaseCommand): ) elif EXPORTER_CRYPTO_SETTINGS_NAME in data: # Load up the values for setting up decryption - self.kdf_algorithm = data[EXPORTER_CRYPTO_SETTINGS_NAME][ + self.kdf_algorithm: str = data[EXPORTER_CRYPTO_SETTINGS_NAME][ EXPORTER_CRYPTO_ALGO_NAME ] - self.key_iterations = data[EXPORTER_CRYPTO_SETTINGS_NAME][ - EXPORTER_CRYPTO_ALGO_NAME + self.key_iterations: int = data[EXPORTER_CRYPTO_SETTINGS_NAME][ + EXPORTER_CRYPTO_KEY_ITERATIONS_NAME ] - self.key_size = data[EXPORTER_CRYPTO_SETTINGS_NAME][ - EXPORTER_CRYPTO_ALGO_NAME + self.key_size: int = data[EXPORTER_CRYPTO_SETTINGS_NAME][ + EXPORTER_CRYPTO_KEY_SIZE_NAME ] - self.salt = data[EXPORTER_CRYPTO_SETTINGS_NAME][ + self.salt: str = data[EXPORTER_CRYPTO_SETTINGS_NAME][ EXPORTER_CRYPTO_SALT_NAME ] @@ -420,4 +422,6 @@ class Command(SecurityMixin, BaseCommand): for record in self.manifest: if record["model"] == "paperless_mail.mailaccount": - record["password"] = self.decrypt_string(value=record["password"]) + record["fields"]["password"] = self.decrypt_string( + value=record["fields"]["password"], + ) diff --git a/src/documents/management/commands/mixins.py b/src/documents/management/commands/mixins.py index b0ad5315e..87a246695 100644 --- a/src/documents/management/commands/mixins.py +++ b/src/documents/management/commands/mixins.py @@ -101,7 +101,7 @@ class SecurityMixin: f"{self.kdf_algorithm} is an unknown key derivation function", ) - key = base64.urlsafe_b64encode(kdf.derive(passphrase.encode())) + key = base64.urlsafe_b64encode(kdf.derive(passphrase.encode("utf-8"))) self.fernet = Fernet(key) diff --git a/src/documents/settings.py b/src/documents/settings.py index 5c2c74404..9dff44c95 100644 --- a/src/documents/settings.py +++ b/src/documents/settings.py @@ -7,5 +7,5 @@ EXPORTER_ARCHIVE_NAME = "__exported_archive_name__" EXPORTER_CRYPTO_SETTINGS_NAME = "__crypto__" EXPORTER_CRYPTO_SALT_NAME = "__salt_hex__" EXPORTER_CRYPTO_KEY_ITERATIONS_NAME = "__key_iters__" -EXPORTER_CRYPTO_KEY_SIZE_NAME = "__key_iters__" +EXPORTER_CRYPTO_KEY_SIZE_NAME = "__key_size__" EXPORTER_CRYPTO_ALGO_NAME = "__key_algo__"