Configuration
Generate a Signer Secret
You must generate a signer secret to ensure that no one — including Crossmint — can access or control your wallet. This secret:The Crossmint SDK automatically derives chain-specific signing keys from this secret, scoped to your project ID, environment, and target chain. A single secret can be safely reused across chains within a project.
- Must be either 64 hex characters (case-insensitive) or use the prefixed format
xmsk1_<64-hex-chars>. - Remains on your server and is never transmitted to Crossmint. The SDK derives a private/public keypair from it locally and uses public-key infrastructure (PKI) for authorization — only the public key is ever shared.
CROSSMINT_SIGNER_SECRET environment variable on your server:HKDF-SHA256 Key Derivation Tool
Use this tool to generate a master signer secret for your server-side or agent wallet environment. The secret is generated entirely in your browser — nothing is transmitted to any server.Generate Your Own Key Programmatically
You can also generate a signer secret programmatically:Under the Hood
A server signer is, at its core, a secret that gets deterministically mapped into a private key compatible with the underlying blockchain network. You provide a master secret, and the Crossmint SDK derives chain-specific signing keys from it — so a single secret works across all supported chains within a project.How Key Derivation Works
A 32-byte (256-bit) random value serves as your master secret. The SDK derives chain-specific private keys from this master secret using HKDF-SHA256, scoped to your project ID, environment, and target chain:projectId and environment are extracted automatically from your server API key by the SDK — the same master secret produces entirely different signing keys per project, environment, and chain. This means a single secret can be safely reused across chains within a single project.
You can derive the public address using Crossmint’s wallets SDK — see the derive-server-signer helper for reference.
How Are Server Signer Locators Derived
When referencing a server signer in API calls (for example, when submitting approvals or registering it as an operational signer), use the locator formatserver:<address>:
<address> is the public address derived from your signer secret for the target chain. The SDK computes this automatically when you use type: "server" — you only need the locator format when working with the REST API directly.
