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
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)
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)
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)
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)))