# MessageSignatures v0.1.0 - Table of Contents

> RFC 9421 HTTP Message Signatures for Elixir: create and verify signatures over HTTP message components with strict signature-base canonicalization.

## Pages

- [MessageSignatures](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- Core
  - [MessageSignatures](MessageSignatures.md): RFC 9421 HTTP Message Signatures: create and verify signatures over HTTP
message components.
  - [MessageSignatures.Component](MessageSignatures.Component.md): A covered-component identifier (RFC 9421 Section 2): an sf-string naming
either a derived component or an HTTP field, plus optional parameters.
  - [MessageSignatures.Error](MessageSignatures.Error.md): Error struct returned by all `MessageSignatures` functions.
  - [MessageSignatures.Key](MessageSignatures.Key.md): Loads PEM-encoded keys into the `{algorithm, key_material}` pairs used
by signing and verification operations.

  - [MessageSignatures.Message](MessageSignatures.Message.md): A transport-agnostic HTTP message used for signing and verification.
  - [MessageSignatures.SignatureBase](MessageSignatures.SignatureBase.md): Builds the RFC 9421 §2.5 signature base — the exact byte string that is
signed and verified. This string is THE interop debugging artifact;
`MessageSignatures.signature_base/3` exposes it publicly.

  - [MessageSignatures.SignatureParams](MessageSignatures.SignatureParams.md): The covered components + signature parameters of one signature: the value
of a `Signature-Input` dictionary member, and (identically serialized)
the value of the `@signature-params` base line.
  - [MessageSignatures.VerifyResult](MessageSignatures.VerifyResult.md): A successful verification: which signature verified, under which key and
algorithm, and what it covered.

- Behaviours
  - [MessageSignatures.KeyResolver](MessageSignatures.KeyResolver.md): Resolves verification keys by `keyid`.
  - [MessageSignatures.NonceChecker](MessageSignatures.NonceChecker.md): Replay-protection hook for verification.

- Integrations
  - [MessageSignatures.Plug](MessageSignatures.Plug.md): Verifies RFC 9421 signatures on incoming requests.
  - [MessageSignatures.Req](MessageSignatures.Req.md): A `Req` request step that signs outgoing requests per RFC 9421.

