(self, target, passphrase, algorithm, create=False)
| 701 | return success |
| 702 | |
| 703 | def save(self, target, passphrase, algorithm, create=False): |
| 704 | key_data = self._save(passphrase, algorithm) |
| 705 | if self.STORAGE == KeyBlobStorage.KEYFILE: |
| 706 | if create and os.path.isfile(target): |
| 707 | # if a new keyfile key repository is created, ensure that an existing keyfile of another |
| 708 | # keyfile key repo is not accidentally overwritten by careless use of the BORG_KEY_FILE env var. |
| 709 | # see issue #6036 |
| 710 | raise Error('Aborting because key in "%s" already exists.' % target) |
| 711 | with SaveFile(target) as fd: |
| 712 | fd.write(f"{self.FILE_ID} {bin_to_hex(self.repository_id)}\n") |
| 713 | fd.write(key_data) |
| 714 | fd.write("\n") |
| 715 | elif self.STORAGE == KeyBlobStorage.REPO: |
| 716 | self.logically_encrypted = passphrase != "" # nosec B105 |
| 717 | key_data = key_data.encode("utf-8") # remote repo: msgpack issue #99, giving bytes |
| 718 | target.save_key(key_data) |
| 719 | else: |
| 720 | raise TypeError("Unsupported borg key storage type") |
| 721 | self.target = target |
| 722 | |
| 723 | def remove(self, target): |
| 724 | if self.STORAGE == KeyBlobStorage.KEYFILE: |
no test coverage detected