Loading vLEI.wiki
Fetching knowledge base...
Fetching knowledge base...
This comprehensive explanation has been generated from 26 GitHub source documents. All source documents are searchable here.
Last updated: October 7, 2025
This content is meant to be consumed by AI agents via MCP. Click here to get the MCP configuration.
Note: In rare cases it may contain LLM hallucinations.
For authoritative documentation, please consult the official GLEIF vLEI trainings and the ToIP Glossary.
A verfer is a cryptographic primitive in the CESR (Composable Event Streaming Representation) encoding scheme that represents a public key and provides signature verification capabilities. The term originates from the cesride implementation terminology, documented by Jason Colburne in the WebOfTrust cesride repository.
As a CESR primitive, a verfer is a serialization of a cryptographic value—specifically a public key—that includes both the raw key material and a prepended derivation code that specifies the cryptographic algorithm or suite used to generate that key. This qualification makes the verfer self-describing and enables parsers to correctly interpret the key material without external schema information.
The verfer serves as the public-facing component of asymmetric key pairs used throughout KERI for establishing control authority over AIDs (Autonomic Identifiers) and verifying the authenticity of signed messages and events.
All verfer implementations must provide the standard CESR primitive methods:
.qb64(): Qualified Base64 string representation.qb64b(): Qualified Base64 bytes representation.qb2(): Qualified binary bytes representation.code(): Derivation code extraction.raw(): Raw unqualified key materialThese methods enable consistent serialization and deserialization across different contexts.
When implementing verfer handling:
Typical signature verification using verfers:
Verfers support multiple cryptographic signature schemes through CESR's derivation code system. The KERI specification and CESR specification define support for various algorithms including:
The specific algorithm is encoded in the derivation code prefix, making each verfer self-typing—the type information travels with the data.
Verfers inherit the security properties of their underlying signature schemes:
Key sizes vary by algorithm:
The CESR encoding adds the derivation code prefix, resulting in slightly larger serialized representations.
A verfer follows CESR's qualified primitive format, consisting of:
The derivation code serves multiple purposes:
In the text domain, verfers are encoded as Base64 URL-safe strings with the derivation code prepended. For example, an Ed25519 verfer might appear as:
DKxy2sgzfplyr-tgwIxS19f2OchFHtLwPWD3v4oYimBx
Where:
D is the one-character derivation code for Ed25519In the binary domain, verfers use a compact binary encoding where the derivation code is represented as binary values rather than text characters. This provides more efficient storage and transmission while maintaining the same semantic information.
CESR's composability property ensures that verfers can be concatenated with other primitives in either text or binary domains and converted between domains without loss of information or boundary corruption. This is achieved through careful alignment of encoding boundaries and the use of derivation codes that preserve separability during domain transformations.
Verfers appear prominently in establishment events—inception and rotation events that define or change the key state of an AID.
Inception events include:
Rotation events include:
The verfers in establishment events define the authoritative key set that can sign subsequent events and messages.
In multi-signature AIDs, multiple verfers are specified in the keys field along with a signing threshold. For example, a 2-of-3 multisig configuration would include three verfers and specify that signatures from at least two of the corresponding signers are required for valid event signing.
The MultiHab architecture in KERIpy demonstrates how verfers are used to construct multi-signature establishment events, with helper methods to extract verfers from signing member identifiers (smids).
The primary operational use of verfers is signature verification. When a validator receives a signed key event message, the verification process involves:
This verification establishes the authenticity and non-repudiation of the event.
Verfers are used to identify and verify witnesses and watchers in KERI's distributed infrastructure:
In ACDC (Authentic Chained Data Container) credentials, verfers appear in:
The signer primitive is the private key counterpart to the verfer. While a verfer represents a public key and verifies signatures, a signer represents a private key and creates signatures. The relationship is:
The diger primitive represents a cryptographic digest (hash). Digers are closely related to verfers in KERI's pre-rotation mechanism:
These signature primitives are the outputs of signing operations that verfers verify:
The salter primitive represents a seed and can generate new signers. The relationship to verfers is:
According to the cesride documentation, all CESR primitives including verfers implement a standard method interface:
.qb64(): Returns the qualified Base64 representation as a string.qb64b(): Returns the qualified Base64 representation as bytes.qb2(): Returns the qualified binary representation as bytes.code(): Returns the derivation code.raw(): Returns the raw unqualified key material as bytesThese methods enable consistent handling of verfers across different serialization contexts and programming languages.
In KERIpy, verfers are stored and retrieved through the key state management system:
The CESR encoding of verfers enables interoperability across different KERI implementations:
Verfer operations have different performance characteristics:
The verfer primitive is a foundational component of KERI's cryptographic architecture, providing the public key representation and signature verification capabilities essential for establishing secure attribution and control authority. Its integration with CESR encoding ensures that verfers are self-describing, composable, and interoperable across different implementations and serialization formats. Understanding verfers is essential for working with KERI key event logs, ACDC credentials, and the broader KERI ecosystem.