Skip to main content
The validation gate is an optional feature for customers running signers on their own infrastructure. When enabled, the signer sends an HTTP request to an endpoint you control before performing a signature or key export. If your handler returns 200 OK, the operation proceeds. Any other response rejects it. This gives you full control over which operations your signers are allowed to perform, based on your own business logic.

How it works

1

Signer receives a request

A signing or key export request reaches the signer through the normal DFNS flow.
2

Signer calls your validation gate handler

Before performing the operation, the signer sends an HTTP POST request with a JSON body to the URL you configured. The payload contains information about the operation (see Request payload below).
3

Your handler decides

Your handler inspects the payload and returns:
  • 200 OK to approve the operation
  • Any other status code to reject it
4

Signer acts on the response

If approved, the signer proceeds with the signing or key export. If rejected, the operation fails and the rejection is propagated back to the caller.

Request payload

Your handler receives a POST request with a JSON body.

signerInfo fields

The signerInfo object contains trusted information provided by the signer itself. These values are derived from the signer’s own state and are not user-supplied.

Examples

Signing request with HD derivation:
Key export request:

Response handling

Your handler must return 200 OK to approve the operation. The signer treats any other response as a rejection: When your handler rejects a request, return a meaningful response body. The signer includes it in the error message propagated to the caller.

Setup

The validation gate is configured as part of the signer deployment, through the signer’s command-line options: --validation-gate-secret and --validation-gate-disable-tls are only valid when --validation-gate-url is set.

Request authentication (HMAC)

When a shared secret is configured, the signer signs the raw request body with HMAC-SHA256 and sends the signature with each request: Verify the signature in your handler before trusting the payload.

TLS

The TLS material for the connection to your handler is delivered in the signer’s key pack, created with the signer CLI’s make-pack subcommand: Three modes are supported:
  • mTLS: all three options are provided (server CA + client key + client certificate).
  • TLS (no client authentication): only --validation-gate-tls-server-ca is provided.
  • Disabled: no TLS material is provided, and --validation-gate-disable-tls is explicitly passed.
If the key pack contains no validation gate TLS certificates and --validation-gate-disable-tls is not set, the signer refuses to start.

Limitations

The validation gate is not compatible with ECDSA pre-signatures: when the gate is enabled, signing requests that use a pre-signature are rejected, because the signer cannot provide the key’s identity to your handler for those requests. For help configuring the validation gate in your deployment, contact our .
Last modified on August 27, 2026