24 lines
1.0 KiB
Python
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
|