Aglet

Verify webhook timestamp tolerance and signatures

Timestamp verification must keep signature authenticity separate from recency. Run valid recent and boundary deliveries beside stale, malformed, wrong-secret, and altered-body cases. Inspect the stage and disposition, not only a boolean verifier result. Use controlled receiver time for every case.

Check whether the outcome improved

  1. Define freshness outcomes

    Write expected signature, parsed time, freshness, receipt, review, and effect for recent, boundary, stale, invalid-unit, malformed, wrong-secret, and altered-body inputs. State which cases remain quarantined. Keep receiver time beside the expected result.

  2. Run clock and body cases

    Feed fixtures through the real verifier with controlled receiver time. Confirm valid recent input passes, stale input fails or reviews, and body changes fail signature even when timestamps are current. Record stage result explicitly.

  3. Check deployment and recovery

    Repeat boundary fixtures after process restart or time-source change, then review a stale event through the safe path. Verify no tolerance setting silently accepts replay and no rejected event reaches effects. Keep stale input outside effects during every check.

What to carry forward

Accept when authenticity and freshness have distinct outcomes, recent events pass, stale or altered input stays out of effects, and clock changes are visible. Keep sender timing partial when uncontrolled. Record tolerance, fixtures, and receiver revision.

Technical background: Coinbase developer documentation.

Keep the decision with the work.

Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.

Create an account See the product workflow