"""Delta signing utilities for BeVault.""" from __future__ import annotations import hashlib import hmac import json from .core import HedgeDelta def sign_delta(delta: HedgeDelta, key: bytes) -> str: """Sign a HedgeDelta deterministically using HMAC-SHA256.""" payload = json.dumps(delta.to_signable_dict(), sort_keys=True, separators=(",", ":")) return hmac.new(key, payload.encode("utf-8"), hashlib.sha256).hexdigest() def verify_delta(delta: HedgeDelta, key: bytes, signature: str) -> bool: """Verify a delta signature in a deterministic way.""" return hmac.compare_digest(sign_delta(delta, key), signature) __all__ = ["sign_delta", "verify_delta"]