Jelajahi Sumber

upgrade: allow enable/disable manifest TAM for unencrypted repos

Recent borg wrote TAM authenticated **archives**
even for unencrypted repos (encryption "none"),
so we also do that for the manifest.

It's kind of fake as there is no secret key involved then,
but it simplifies the code.
Thomas Waldmann 1 tahun lalu
induk
melakukan
7d0d11b979
1 mengubah file dengan 2 tambahan dan 7 penghapusan
  1. 2 7
      src/borg/archiver.py

+ 2 - 7
src/borg/archiver.py

@@ -1647,11 +1647,6 @@ class Archiver:
                 cache.commit()
                 cache.commit()
         elif args.tam:
         elif args.tam:
             manifest, key = Manifest.load(repository, (Manifest.Operation.CHECK,), force_tam_not_required=args.force)
             manifest, key = Manifest.load(repository, (Manifest.Operation.CHECK,), force_tam_not_required=args.force)
-
-            if not hasattr(key, 'change_passphrase'):
-                print('This repository is not encrypted, cannot enable TAM.')
-                return EXIT_ERROR
-
             if not manifest.tam_verified or not manifest.config.get(b'tam_required', False):
             if not manifest.tam_verified or not manifest.config.get(b'tam_required', False):
                 print('Manifest contents:')
                 print('Manifest contents:')
                 for archive_info in manifest.archives.list(sort_by=['ts']):
                 for archive_info in manifest.archives.list(sort_by=['ts']):
@@ -1659,7 +1654,7 @@ class Archiver:
                 manifest.config[b'tam_required'] = True
                 manifest.config[b'tam_required'] = True
                 manifest.write()
                 manifest.write()
                 repository.commit(compact=False)
                 repository.commit(compact=False)
-            if not key.tam_required:
+            if not key.tam_required and hasattr(key, 'change_passphrase'):
                 key.tam_required = True
                 key.tam_required = True
                 key.change_passphrase(key._passphrase)
                 key.change_passphrase(key._passphrase)
                 print('Key updated')
                 print('Key updated')
@@ -1673,7 +1668,7 @@ class Archiver:
             manifest, key = Manifest.load(repository, Manifest.NO_OPERATION_CHECK, force_tam_not_required=True)
             manifest, key = Manifest.load(repository, Manifest.NO_OPERATION_CHECK, force_tam_not_required=True)
             if tam_required(repository):
             if tam_required(repository):
                 os.unlink(tam_required_file(repository))
                 os.unlink(tam_required_file(repository))
-            if key.tam_required:
+            if key.tam_required and hasattr(key, 'change_passphrase'):
                 key.tam_required = False
                 key.tam_required = False
                 key.change_passphrase(key._passphrase)
                 key.change_passphrase(key._passphrase)
                 print('Key updated')
                 print('Key updated')