Beispiel #1
0
def from_keybase(username):
    """Will attempt to retrieve a GPG public key from
    Keybase, importing if neccesary"""
    public_key = key_from_keybase(username)
    fingerprint = public_key['fingerprint'][-8:].upper().encode('ascii')
    key = public_key['bundle'].encode('ascii')
    if not has_gpg_key(fingerprint):
        LOG.debug("Importing gpg key for %s", username)
        if not import_gpg_key(key):
            raise aomi.exceptions.KeybaseAPI("import key for %s" % username)

    return fingerprint
Beispiel #2
0
def from_keybase(username):
    """Will attempt to retrieve a GPG public key from
    Keybase, importing if neccesary"""
    public_key = key_from_keybase(username)
    fingerprint = public_key['fingerprint'][-8:].upper().encode('ascii')
    key = public_key['bundle'].encode('ascii')
    if not has_gpg_key(fingerprint):
        LOG.debug("Importing gpg key for %s", username)
        if not import_gpg_key(key):
            raise aomi.exceptions.KeybaseAPI("import key for %s" % username)

    return fingerprint
Beispiel #3
0
def import_keybase(useropt):
    """Imports a public GPG key from Keybase"""
    public_key = None
    u_bits = useropt.split(':')
    username = u_bits[0]
    if len(u_bits) == 1:
        public_key = cryptorito.key_from_keybase(username)
    else:
        fingerprint = u_bits[1]
        public_key = cryptorito.key_from_keybase(username, fingerprint)

    if cryptorito.has_gpg_key(public_key['fingerprint']):
        sys.exit(2)

    cryptorito.import_gpg_key(public_key['bundle'].encode('ascii'))
    sys.exit(0)
Beispiel #4
0
def grok_keys(config):
    """Will retrieve a GPG key from either Keybase or GPG directly"""
    key_ids = []
    for key in config['pgp_keys']:
        if key.startswith('keybase:'):
            key_id = from_keybase(key[8:])
            LOG.debug("Encrypting for keybase user %s", key[8:])
        else:
            if not has_gpg_key(key):
                raise aomi.exceptions.GPG("Do not actually have key %s" % key)

            LOG.debug("Encrypting for gpg id %s", key)
            key_id = key

        validate_gpg_fingerprint(key_id)
        key_ids.append(key_id)

    return key_ids
Beispiel #5
0
def grok_keys(config):
    """Will retrieve a GPG key from either Keybase or GPG directly"""
    key_ids = []
    for key in config['pgp_keys']:
        if key.startswith('keybase:'):
            key_id = from_keybase(key[8:])
            LOG.debug("Encrypting for keybase user %s", key[8:])
        else:
            if not has_gpg_key(key):
                raise aomi.exceptions.GPG("Do not actually have key %s" % key)

            LOG.debug("Encrypting for gpg id %s", key)
            key_id = key

        validate_gpg_fingerprint(key_id)
        key_ids.append(key_id)

    return key_ids
Beispiel #6
0
    def test_unhappypath(self):
        flexmock(subprocess) \
            .should_receive('check_output') \
            .replace_with(key_blank)

        self.assertFalse(cryptorito.has_gpg_key(TEST_KEY))
Beispiel #7
0
    def test_happypath(self):
        flexmock(subprocess) \
            .should_receive('check_output') \
            .replace_with(key_resp)

        assert (cryptorito.has_gpg_key(TEST_KEY))
Beispiel #8
0
def has_key(key):
    """Checks to see if we actually have a key installed"""
    if not cryptorito.has_gpg_key(key):
        sys.exit(1)

    sys.exit(0)