idea160-exprove-open-source/tests/test_crypto_sign.py

24 lines
1.0 KiB
Python

import json
from exprove.contracts import LocalExecutionTask, SharedMarketContext, PlanDelta, Attestation
from exprove.contracts import compute_delta
from exprove.crypto import generate_signing_key, verify_key_hex_from_signing_key, sign_message_hex, verify_signature_hex
def test_sign_and_verify_plan_delta():
task = LocalExecutionTask(task_id="t-sig", instrument="AAPL", venue="V1", objective="VWAP", constraints={})
ctx = SharedMarketContext(signals={"depth": 5}, version=1, contract_id="c-sig")
delta = compute_delta(task, ctx)
# canonical payload for signing
payload = json.dumps(delta.to_dict(), sort_keys=True).encode("utf-8")
sk = generate_signing_key()
vk_hex = verify_key_hex_from_signing_key(sk)
sig_hex = sign_message_hex(sk, payload)
# attach signature to attestation and verify
a = Attestation(entry=delta.to_json(), signer=vk_hex, timestamp=0.0, contract_id=ctx.contract_id, version=1, signature=sig_hex)
assert verify_signature_hex(vk_hex, payload, a.signature) is True