Exemple #1
0
    def __init__(self, homedir=None):
        # Ensure that there is a homedir for GNUPGHOME.
        if not homedir:
            homedir = '/tmp/p3store-gpg-{}'.format(os.getuid())
        self._homedir = homedir
        self.ensure_homedir()

        # Init a GPG context.
        self._gpgme = Context()
        self._gpgme.passphrase_cb = self._password_callback
Exemple #2
0
def vault(sid):
    vault = os.path.join(os.environ['SIMBOL_USER_ETC'], 'simbol.vault')
    if os.path.exists(vault):
        from io import BytesIO
        o = BytesIO()
        with open(vault, 'r') as ifH:
            from gpgme import Context
            ctx = Context()
            ctx.armor = True
            ctx.decrypt(ifH, o)
        return dict(
            (_.split(None, 1) for _ in o.getvalue().split('\n') if _)
        ).get(secret, '').strip()
Exemple #3
0
    def __init__(self, homedir, keyfpr=None):
        gpgbin = path.join(homedir, 'gpg')
        ctx = self._context = Context()
        self._fpr = keyfpr
        self._key = None

        self.passphrase = None

        if not path.exists(homedir):
            makedirs(homedir, 0o700)

            open(path.join(homedir, 'gpg-agent.conf'),
                 'w').writelines(l + '\n' for l in ['default-cache-ttl 0'])

            open(gpgbin, 'w').writelines(
                l + '\n' for l in
                ['#!/bin/bash', 'exec gpg --pinentry-mode loopback "$@"'])

            chmod(gpgbin, 0o700)

        ctx.set_engine_info(PROTOCOL_OpenPGP, gpgbin, homedir)
        ctx.passphrase_cb = self._passphrase_cb