コード例 #1
0
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()