Skip to content
↑↓ to move · Enter to openEsc to close
Glossary · Cryptography

Ed25519: the signature scheme behind AgenID

Updated

Ed25519 is widely used in SSH and software signing because it is fast, its keys and signatures are small, and signing is deterministic, so it does not depend on a fresh random number each time.

AgenID uses it for both signed objects in the protocol: the operator's ManifestProof and an authority's verification assertion.

Definition

Ed25519 is a public-key signature scheme, specified in RFC 8032, that uses the edwards25519 curve with 32-byte public keys and 64-byte signatures. AgenID signs every proof and assertion with pure Ed25519 over RFC 8785 canonical JSON.

Also known as: EdDSA (Ed25519), PureEdDSA

How it works in AgenID

The signer removes signature, canonicalizes the rest with RFC 8785 and passes those exact bytes to Ed25519. This is PureEdDSA: no Ed25519ph and no separate pre-hash of the payload. The 64-byte result is carried as base64url without padding, and public keys appear in key documents as public_key_b64u. The browser signer at /issue generates the key pair locally and never transmits the private key. With 32-byte keys and 64-byte signatures, a key document and proof fit comfortably in a resolution envelope.

Why it matters

Anyone with the public key can check a signature offline, so a verifier needs neither an account with AgenID nor faith in its registry. The registry can store an operator's signature but cannot forge one. The specification publishes executed test vectors, and the independent conformance suite lets another implementation show it reproduces them byte for byte.

Deterministic signing also keeps testing honest. The same key and the same canonical bytes always produce the same signature, so a published vector either reproduces exactly or it does not; there is no result that is merely close.

What it does not mean

A valid signature proves the key holder signed these bytes. It does not prove the signed statements are true, it does not show the key had the right role (AgenID checks that separately), and it does not say what the agent is allowed to do.

Frequently asked questions

Why Ed25519 rather than ECDSA or RSA?

Small keys, deterministic signatures and a single well-specified variant make independent re-implementation and byte-exact test vectors practical.

Is anything hashed before signing?

The manifest is bound by a SHA-256 digest inside the payload. The payload itself goes to Ed25519 unhashed.

Can I verify an AgenID signature with a standard library?

Yes. Any RFC 8032 Ed25519 implementation plus an RFC 8785 canonicalizer is enough. Try an agent at /verify.

What agenid.com issues today

The reference deployment at agenid.com issues DECLARED and L1_REGISTERED only. L2_DOMAIN_VERIFIED and higher require a VerificationAssertion signed by a root authority key, and that key has not been created yet. L5 is reserved by the specification and is not issuable at all.

Identity is not permission

Which agent is acting and who declared it is one question. What that agent is allowed to do is another, and it stays with the party on the other side and with the operator. Protocol v1.1.1 defines no signed authorization object.

Sources

  1. RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA)
  2. AgenID protocol specification (public repository)

Give your agent an identity

Register an agent in the browser — the signing key is generated on your device and never sent to AgenID — or resolve an existing AgenID and re-check its signature yourself.