Changelog
phil/standard-webhooksAll notable changes to phil/standard-webhooks will be documented in this file.
Updates should follow the Keep a CHANGELOG principles.
NEXT - YYYY-MM-DD
Added
- Headers and timestamps:
WebhookIdwithgenerate(),WebhookTimestamp,Tolerance,WebhookHeaders.WebhookTimestamp::fromHeader()shows a refused header throughInvalidWebhookValue::shown(), cut to 32 bytes and with control, quote, backslash and non-ASCII bytes escaped, never the unverified value whole. - Signature headers:
Signature,SignatureList. - Envelope:
Envelope,VerifiedWebhook. - Keys: the interfaces
SigningKeyandVerificationKey;Ed25519SecretKey,Ed25519PublicKey,HmacSecret— tested against the RFC 8032 vector (Ed25519) and the Standard Webhooksv1vector (HMAC) — andKeys, which reads a key by its prefix. - Signing and verifying:
Signer,Verifier,SignedContent,Scheme,Base64.HmacSecret::verifiesAny()computes the HMAC once for a whole signature list, andVerifieruses it for each HMAC key. - Receiving:
WebhookReceiver. - Trusted keys: the port
VerificationKeyProviderandFixedKeys, whosefromStrings()keeps the keys out of a stack trace. - De-duplication: the port
ProcessedWebhookRepository. - The exceptions under
Exception\:WebhookException,InvalidWebhookValue,WebhookRejected,RejectionReason. - The documentation in
doc/, one file per topic, indexed by the README. CONTRIBUTING.md,SECURITY.mdandCODE_OF_CONDUCT.md.