Ejemplo n.º 1
0
 def _on_list_files_failed(self, response, info, customer_idurl,
                           supplier_idurl, key_id):
     if strng.to_text(response.Payload) == 'key not registered':
         if _Debug:
             lg.dbg(
                 _DebugLevel,
                 'supplier %r of customer %r do not possess public key %r yet, sending it now'
                 % (
                     supplier_idurl,
                     customer_idurl,
                     key_id,
                 ))
         result = key_ring.transfer_key(key_id,
                                        supplier_idurl,
                                        include_private=False,
                                        include_signature=False)
         result.addCallback(lambda r: self._on_key_transfer_success(
             customer_idurl, supplier_idurl, key_id))
         result.addErrback(lambda err: lg.err('failed sending key %r : %r' %
                                              (
                                                  key_id,
                                                  err,
                                              )))
     else:
         lg.err(
             'failed requesting ListFiles() with %r for customer %r from supplier %r'
             % (
                 key_id,
                 customer_idurl,
                 supplier_idurl,
             ))
     return None
Ejemplo n.º 2
0
 def _on_supplier_modified(self, evt):
     from access import key_ring
     from crypt import my_keys
     from userid import global_id
     from userid import my_id
     if evt.data['new_idurl']:
         my_keys_to_be_republished = []
         for key_id in my_keys.known_keys():
             if not key_id.startswith('share_'):
                 continue
             _glob_id = global_id.ParseGlobalID(key_id)
             if _glob_id['idurl'] == my_id.getLocalIDURL():
                 my_keys_to_be_republished.append(key_id)
         for key_id in my_keys_to_be_republished:
             key_ring.transfer_key(key_id,
                                   trusted_idurl=evt.data['new_idurl'],
                                   include_private=False)
Ejemplo n.º 3
0
def send_group_pub_key_to_suppliers(group_key_id):
    l = []
    for supplier_idurl in contactsdb.suppliers():
        if supplier_idurl:
            d = key_ring.transfer_key(group_key_id, supplier_idurl, include_private=False)
            if _Debug:
                d.addCallback(lg.cb, debug=_Debug, debug_level=_DebugLevel, method='groups.write_group_key_to_suppliers')
                d.addErrback(lg.errback, debug=_Debug, debug_level=_DebugLevel, method='groups.write_group_key_to_suppliers')
            # TODO: build some kind of retry mechanism - if some supplier did not received the key
            l.append(d)
    return DeferredList(l, consumeErrors=True)
Ejemplo n.º 4
0
def send_group_pub_key_to_suppliers(group_key_id):
    l = []
    for supplier_idurl in contactsdb.suppliers():
        if supplier_idurl:
            d = key_ring.transfer_key(group_key_id, supplier_idurl, include_private=False, include_signature=False)
            if _Debug:
                d.addCallback(lg.cb, debug=_Debug, debug_level=_DebugLevel, method='groups.write_group_key_to_suppliers')
                d.addErrback(lg.errback, debug=_Debug, debug_level=_DebugLevel, method='groups.write_group_key_to_suppliers')
            # TODO: build some kind of retry mechanism - in case of a particular supplier did not receive the key
            # it must be some process with each supplier that first verifies a list of my public keys supplier currently possess
            # and then transfer the missing keys or send a note to erase "unused" keys to be able to cleanup old keys
            l.append(d)
    return DeferredList(l, consumeErrors=True)
Ejemplo n.º 5
0
 def _on_supplier_modified(self, evt):
     from logs import lg
     from access import key_ring
     from crypt import my_keys
     from userid import global_id
     from userid import my_id
     if evt.data['new_idurl']:
         my_keys_to_be_republished = []
         for key_id in my_keys.known_keys():
             if not key_id.startswith('group_'):
                 continue
             _glob_id = global_id.ParseGlobalID(key_id)
             if _glob_id['idurl'] == my_id.getIDURL():
                 # only send public keys of my own groups
                 my_keys_to_be_republished.append(key_id)
         for group_key_id in my_keys_to_be_republished:
             d = key_ring.transfer_key(group_key_id, trusted_idurl=evt.data['new_idurl'], include_private=False, include_signature=False)
             d.addErrback(lambda *a: lg.err('transfer key failed: %s' % str(*a)))