accept crypto format version in deltatar ctor
authorPhilipp Gesang <philipp.gesang@intra2net.com>
Fri, 19 May 2017 15:22:17 +0000 (17:22 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 2 Apr 2018 11:34:09 +0000 (13:34 +0200)
deltatar/deltatar.py

index 8b8c19d..b2d9c31 100644 (file)
@@ -98,6 +98,7 @@ class DeltaTar(object):
 
     # parameter version to use when encrypting; note that this has no effect
     # on decryption since the required settings are determined from the headers
+    crypto_version      = DELTATAR_HEADER_VERSION
     crypto_paramversion = None
 
     # when encrypting or decrypting, these hold crypto handlers; created before
@@ -154,6 +155,7 @@ class DeltaTar(object):
     def __init__(self, excluded_files=[], included_files=[],
                  filter_func=None, mode="", password=None,
                  crypto_key=None, nacl=None,
+                 crypto_version=DELTATAR_HEADER_VERSION,
                  crypto_paramversion=DELTATAR_PARAMETER_VERSION,
                  logger=None, index_mode=None, index_name_func=None,
                  volume_name_func=None):
@@ -199,6 +201,9 @@ class DeltaTar(object):
         - password: used to encrypt and decrypt backups. Encryption will be
           enabled automatically if a password is supplied.
 
+        - crypto_version: version of the format, determining the kind of PDT
+          object header.
+
         - crypto_paramversion: optionally request encryption conforming to
           a specific parameter version. Defaults to the standard PDT value
           which as of 2017 is the only one available.
@@ -245,6 +250,9 @@ class DeltaTar(object):
         if password is not None:
             self.password = password
 
+        if crypto_version is not None:
+            self.crypto_version = crypto_version
+
         if crypto_paramversion is not None:
             self.crypto_paramversion = crypto_paramversion
 
@@ -545,7 +553,7 @@ class DeltaTar(object):
             return crypto.Encrypt (password=password,
                                    key=key,
                                    nacl=nacl,
-                                   version=DELTATAR_HEADER_VERSION,
+                                   version=self.crypto_version,
                                    paramversion=self.crypto_paramversion)
         if mode == CRYPTO_MODE_DECRYPT:
             return crypto.Decrypt (password=password, key=key)