Source code for twindb_backup.modifiers.gpg
# -*- coding: utf-8 -*-
"""
Module defines modifier that implements asymmetric encryption with gpg
"""
import os
from twindb_backup.modifiers.base import Modifier, ModifierException
[docs]class Gpg(Modifier):
"""Asymmetric encryption"""
def __init__(self, input_stream, recipient, keyring, secret_keyring=None):
"""
Modifier that encrypts the input_stream with gpg.
:param input_stream: Input stream. Must be file object
:type input_stream: file
:param recipient: A string the identifiers a recipient.
Can be an email for example.
:type recipient: str
:param keyring: Path to public keyring. Must exist.
:type keyring: str
:param secret_keyring: Path to secret keyring.
:type keyring: str
:raise: ModifierException if keyring doesn't exist.
"""
if os.path.exists(keyring):
self.keyring = keyring
else:
raise ModifierException("Keyring file %s does not exit" % keyring)
self.secret_keyring = secret_keyring
self.recipient = recipient
super(Gpg, self).__init__(input_stream)
@property
def _modifier_cmd(self):
"""get compression program cmd"""
return [
"gpg",
"--no-default-keyring",
"--trust-model",
"always",
"--keyring",
self.keyring,
"--recipient",
self.recipient,
"--encrypt",
"--yes",
"--batch",
]
@property
def _unmodifier_cmd(self):
"""get decompression program cmd"""
return [
"gpg",
"--no-default-keyring",
"--trust-model",
"always",
"--secret-keyring",
self.secret_keyring,
"--keyring",
self.keyring,
"--recipient",
self.recipient,
"--decrypt",
"--yes",
"--batch",
]