# pkcs11ex v0.1.0 - Table of Contents

Hardware-backed digital signatures for Elixir, via PKCS#11. Layered library with first-class adapters for JWS (RFC 7797), PDF (PAdES), and XML (XML-DSig / XAdES). Backed by HSMs and hardware tokens through a Rust/Rustler bridge.

## Pages

- [pkcs11ex](readme.md)
- [pkcs11ex changelog](changelog.md)
- [Technical Specification: pkcs11ex](specs.md)
- [Public API Specification: pkcs11ex](api.md)

## Modules

- [Pkcs11ex.PKCS12.Bundle](Pkcs11ex.PKCS12.Bundle.md): A parsed PKCS#12 bundle.
- [Pkcs11ex.Slot.Pool](Pkcs11ex.Slot.Pool.md): Round-robin dispatcher for multi-session slot pools.
- [Pkcs11ex.Slot.Server](Pkcs11ex.Slot.Server.md): GenServer that owns a single slot's PKCS#11 module + persistent session.

- Layer 2 — Primitives
  - [Pkcs11ex](Pkcs11ex.md): Hardware-backed digital signatures for Elixir, via PKCS#11.

- Signer (SignCore.Signer impl)
  - [Pkcs11ex.Signer](Pkcs11ex.Signer.md): PKCS#11 implementation of the `SignCore.Signer` protocol.

- Convenience wrappers
  - [Pkcs11ex.JWS](Pkcs11ex.JWS.md): Convenience wrapper around `SignCore.JWS` pre-configured with the
PKCS#11 signer. Supports both detached (RFC 7797, default) and
attached (RFC 7515) JWS via the `attached: true` opt; supports
optional `:x5c` when a `kid` extra-header is supplied (verifier
resolves the cert via `:kid_certs`).

  - [Pkcs11ex.PDF](Pkcs11ex.PDF.md): Convenience wrapper around `SignCore.PDF` pre-configured with the
PKCS#11 signer.
  - [Pkcs11ex.X509](Pkcs11ex.X509.md): Backwards-compat alias for `SignCore.X509`. The struct, types,
and functions live in `sign_core` post-monorepo-split; this module
re-exposes them under the historical `Pkcs11ex.X509` name so
callers don't have to update their `alias` lines.

  - [Pkcs11ex.XML](Pkcs11ex.XML.md): Convenience wrapper around `SignCore.XML` pre-configured with the
PKCS#11 signer. Same shape as `Pkcs11ex.PDF`.

- Operational
  - [Pkcs11ex.Config](Pkcs11ex.Config.md): Configuration schema and validator for `pkcs11ex`.
  - [Pkcs11ex.PIN](Pkcs11ex.PIN.md): PIN-handling helpers.
  - [Pkcs11ex.PKCS12](Pkcs11ex.PKCS12.md): Read-only loader for PKCS#12 (`.p12` / `.pfx`) bundles.
  - [Pkcs11ex.Slot](Pkcs11ex.Slot.md): Public operational surface for configured slots.

- Exceptions
  - [Pkcs11ex.Error](Pkcs11ex.Error.md): Library exception used for `!`-variant raises and for configuration failures
that prevent the OTP application from starting.

## Mix Tasks

- [mix pkcs11ex.import_p12](Mix.Tasks.Pkcs11ex.ImportP12.md): Imports the private key + leaf certificate from a PKCS#12 (`.p12` / `.pfx`)
bundle into a configured PKCS#11 slot.

