Signatures
Cryptographic proof of approval using Ed25519
MCPTrust uses Ed25519, a modern elliptic curve signature scheme known for its speed and security.
The Signature File
When you run mcptrust sign, a file named mcp-lock.json.sig is created.
This file contains the detached signature of the canonicalized lockfile.
Signature Formats
- Ed25519 (v1/v2): Raw 64-byte detached signature.
- Sigstore (v3): JSON bundle containing verification material (certificate chain, recombination payload, and signature).
Keyless Signing (CI / OIDC)
MCPTrust also supports keyless signing via Sigstore, primarily designed for GitHub Actions. This mode relies on OIDC identities (like your repository's workflow identity) instead of managing private key files.
[!CAUTION] Privacy Note: Keyless signing logs an immutable record to the public Sigstore transparency log. This record may contain the OIDC identity (e.g., your customized workflow URL or email).
[!WARNING] Compatibility: Sigstore signatures (v3) use a different format than standard Ed25519 signatures. Ensure your team upgrades to the latest
mcptrustbefore enabling this flow.
Local vs. CI
- Local: Keyless signing may require an interactive browser flow to authenticate.
- CI (GitHub Actions): Uses the environment's OIDC token automatically (non-interactive).
Key Management
Private Key (private.key)
- Role: Used to approve changes.
- Storage: Offline, Vault, or secure 1Password entry.
- Risk: If stolen, an attacker can approve malicious tools.
Public Key (public.key)
- Role: Used to verify approvals.
- Storage: Committed to git, embedded in Docker images.
- Risk: Low. Public keys are meant to be shared.
Rotation
To rotate keys:
- Generate a new keypair with `mcptrust keygen`.
- Resign the lockfile with the new private key.
- Distribute the new public key to all verifiers.