link_version = 5 x, handshake_data = core_crypto.Handshake.create_TAP_C_DATA(n.onion_key) identity_hash = core_crypto.Hash.hash_bytes( n.identity_key.public_bytes( encoding=serialization.Encoding.DER, format=serialization.PublicFormat.PKCS1)) #defaults to SHA1 hash relay_extend_cell = cell.RelayExtend(circID=circutID, link_version=link_version, address=node.host, port=node.port, onion_skin=handshake_data, identity_fingerprint=identity_hash) relay_extend_cell_bytes = relay_extend_cell.pack_cell() Df_hash = Circuit.generate_hash_context(n.key_dict['Df']) core_crypto.Hash.hash_update(Df_hash, relay_extend_cell_bytes) updated_digest = core_crypto.Hash.hash_extract(Df_hash, reuse=True) # extending_node.key_dict['Df'] = core_crypto.Hash.update_digest(extending_node.key_dict['Df'], relay_extend_cell_bytes) relay_extend_cell.digest = updated_digest[:cell.RelayCell.DIGEST_LEN] print(relay_extend_cell.circID) print(relay_extend_cell.command) print(relay_extend_cell.relay_command) print(relay_extend_cell.recognized) print(relay_extend_cell.streamID) print(relay_extend_cell.digest) print(relay_extend_cell.length) print(relay_extend_cell.data) relay_extend_cell_bytes = relay_extend_cell.pack_cell()