- openvibe-sdk/events: verifyDeliveryV2(raw, headers, secret, { toleranceSec = 300, now }) checks
X-OpenVibe-Signature-V2 (t=<ts>,v2=<HMAC-SHA256 of "<ts>.<raw body>">) in constant time and
refuses timestamps outside ±toleranceSec or disagreeing with X-OpenVibe-Timestamp
- parseDelivery(raw, headers, secret, { requireV2 = false, toleranceSec, now }): a present v2
header must verify and be fresh (never a v1 fallback); without one, v1 only while requireV2 is off
- signDeliveryV2() and signDeliveryHeaders() for tests; verifyDelivery/signDelivery (v1) unchanged
- mock Events deliverEvents() sends v1 + v2 headers, signed afresh on every attempt
- types, ESM, README (Receiving event webhooks), CHANGELOG; version 0.4.0 (not tagged)