コード例 #1
0
 def build_key((keydoc, activedoc)):
     if keydoc is None:
         raise errors.KeyNotFound(address)
     leap_assert(
         address in keydoc.content[KEY_UIDS_KEY],
         'Wrong address in key %s. Expected %s, found %s.' %
         (keydoc.content[KEY_FINGERPRINT_KEY], address,
          keydoc.content[KEY_UIDS_KEY]))
     key = build_key_from_dict(keydoc.content, activedoc.content)
     key._gpgbinary = self._gpgbinary
     return key
コード例 #2
0
ファイル: openpgp.py プロジェクト: rrosajp/bitmask-dev
    def get_all_keys(self, private=False):
        """
        Return all keys stored in local database.

        :param private: Include private keys
        :type private: bool

        :return: A Deferred which fires with a list of all keys in local db.
        :rtype: Deferred
        """
        HAS_ACTIVE = "has_active"

        active_docs = yield self._soledad.get_from_index(
            TAGS_PRIVATE_INDEX, KEYMANAGER_ACTIVE_TAG, '1' if private else '0')
        key_docs = yield self._soledad.get_from_index(TAGS_PRIVATE_INDEX,
                                                      KEYMANAGER_KEY_TAG,
                                                      '1' if private else '0')

        keys = []
        fp = lambda doc: doc.content[KEY_FINGERPRINT_KEY]
        for active in active_docs:
            fp_keys = filter(lambda k: fp(k) == fp(active), key_docs)

            if len(fp_keys) == 0:
                yield self._soledad.delete_doc(active)
                continue
            elif len(fp_keys) == 1:
                key = fp_keys[0]
            else:
                key = yield self._repair_key_docs(fp_keys)
            key.content[HAS_ACTIVE] = True
            keys.append(
                build_key_from_dict(key.content,
                                    active.content,
                                    gpgbinary=self._gpgbinary))

        unactive_keys = filter(lambda k: HAS_ACTIVE not in k.content, key_docs)
        keys += map(
            lambda k: build_key_from_dict(k.content, gpgbinary=self._gpgbinary
                                          ), unactive_keys)
        defer.returnValue(keys)
コード例 #3
0
def _get_key(address, key_fingerprint, key_data, private):
    kdict = {
        'uids': [address],
        'fingerprint': key_fingerprint,
        'key_data': key_data,
        'private': private,
        'length': 4096,
        'expiry_date': 0,
        'refreshed_at': 1311239602,
    }
    key = build_key_from_dict(kdict)
    return key
コード例 #4
0
        def merge_and_put((keydoc, activedoc)):
            if not keydoc:
                return put_new_key(activedoc)

            active_content = None
            if activedoc:
                active_content = activedoc.content
            oldkey = build_key_from_dict(keydoc.content, active_content)

            key.merge(oldkey)
            keydoc.set_json(key.get_json())
            d = self._soledad.put_doc(keydoc)
            d.addCallback(put_active, activedoc)
            return d
コード例 #5
0
 def test_build_key_from_dict(self):
     kdict = {
         'uids': [ADDRESS],
         'fingerprint': KEY_FINGERPRINT,
         'key_data': PUBLIC_KEY,
         'private': False,
         'length': 4096,
         'expiry_date': 0,
         'refreshed_at': 1311239602,
     }
     adict = {
         'address': ADDRESS,
         'private': False,
         'last_audited_at': 0,
         'validation': str(ValidationLevels.Weak_Chain),
         'encr_used': False,
         'sign_used': True,
     }
     key = build_key_from_dict(kdict, adict)
     self.assertEqual(kdict['uids'], key.uids, 'Wrong data in key.')
     self.assertEqual(kdict['fingerprint'], key.fingerprint,
                      'Wrong data in key.')
     self.assertEqual(kdict['key_data'], key.key_data, 'Wrong data in key.')
     self.assertEqual(kdict['private'], key.private, 'Wrong data in key.')
     self.assertEqual(kdict['length'], key.length, 'Wrong data in key.')
     self.assertEqual(None, key.expiry_date, 'Wrong data in key.')
     self.assertEqual(None, key.last_audited_at, 'Wrong data in key.')
     self.assertEqual(datetime.fromtimestamp(kdict['refreshed_at']),
                      key.refreshed_at, 'Wrong data in key.')
     self.assertEqual(adict['address'], key.address, 'Wrong data in key.')
     self.assertEqual(ValidationLevels.get(adict['validation']),
                      key.validation, 'Wrong data in key.')
     self.assertEqual(adict['encr_used'], key.encr_used,
                      'Wrong data in key.')
     self.assertEqual(adict['sign_used'], key.sign_used,
                      'Wrong data in key.')