Пример #1
0
class Key(PGPMessage):
    def __init__(self, passphrase=None):
        self._passphrase = passphrase
        super(Key, self).__init__()

    def reset(self):
        super(Key, self).reset()
        self.keys = ValueTracker()

    @property
    def passphrase(self):
        """Return a function to get the passphrase"""
        if not callable(self._passphrase):
            _passphrase = self._passphrase
            def get_passphrase(message, info):
                return _passphrase
            self._passphrase = get_passphrase
        return self._passphrase
    
    def parse(self, region):
        self.reset()
        self.consume(region)
        return self

    def key_dict(self, keys=None):
        if keys is None:
            keys = self.keys.consumed()

        result = {}
        for key, subkeys in keys:
            result[key['key_id']] = key['key']
            result.update(self.key_dict(subkeys))
        return result
    
    ####################
    ### ADDING KEYS
    ####################
    
    def add_key(self, info):
        """Start a new public key"""
        self.keys.end_item()
        self.keys.start_item(info)
    
    def add_sub_key(self, info):
        """Add a sub public key"""
        self.keys.start_item(info)