def __init__(self, *args, **kwargs): super(GDBM, self).__init__(*args, **kwargs) first_key = self.firstkey() if first_key is not None: packet = next(parse_binary_packet_data(self[first_key])) self._preferred_header_format = packet.header_format else: self._preferred_header_format = constants.OLD_PACKET_HEADER_TYPE
def get_transferrable_key(self, fingerprint): if len(fingerprint) != 40: # Actually a key ID - find the fingerprint first. fingerprint = ([k for k in self.keys() if k.endswith(fingerprint)] + [None])[0] if fingerprint is None: return None self.lock_db() try: with gdbm.open(self.filename, 'r') as db: packet_data = db[fingerprint] packets = list(parse_binary_packet_data(packet_data)) if packets: if packets[0].type == constants.PUBLIC_KEY_PACKET_TYPE: return TransferablePublicKey.from_packets(packets) elif packets[0].type == constants.SECRET_KEY_PACKET_TYPE: return TransferableSecretKey.from_packets(packets) finally: self.unlock_db()
def get_transferrable_key(self, fingerprint): if len(fingerprint) != 40: # Actually a key ID - find the fingerprint first. fingerprint = ([ k for k in self.keys() if k.endswith(fingerprint) ] + [None] )[0] if fingerprint is None: return None self.lock_db() try: with gdbm.open(self.filename, 'r') as db: packet_data = db[fingerprint] packets = list(parse_binary_packet_data(packet_data)) if packets: if packets[0].type == constants.PUBLIC_KEY_PACKET_TYPE: return TransferablePublicKey.from_packets(packets) elif packets[0].type == constants.SECRET_KEY_PACKET_TYPE: return TransferableSecretKey.from_packets(packets) finally: self.unlock_db()