docs/documentation/platform/pki/code-signing/signers.mdx
In Infisical, a signer is a named code-signer bound to an X.509 certificate with the codeSigning extended key usage (EKU). Each signer represents a signing capability within a project, for example release-signer for production releases or ci-signer for CI pipeline artifacts.
Private keys never leave the Infisical server. When a signing operation is requested, the server retrieves the key, computes the signature, and returns only the signature bytes. This ensures that signing keys cannot be exfiltrated from build environments.
codeSigning EKU.<Note>
Only certificates with the `codeSigning` extended key usage will be available when creating a signer. If you don't see your certificate, verify that it was issued with the correct EKU.
</Note>

Fill in the following fields:
- **Name**: A slug-friendly name for the signer such as `release-signer`.
- **Description**: An optional description of the signer's purpose.
- **Certificate**: The code-signing certificate to bind to this signer.
- **Signing Policy** (optional): The signing policy that governs signing access for this signer. If omitted, signing is allowed without approval.
Press **Create** to save the signer.
The available signing algorithms depend on the certificate's key type:
| Algorithm | Description |
|---|---|
RSASSA_PKCS1_V1_5_SHA256 | RSA PKCS#1 v1.5 with SHA-256 |
RSASSA_PKCS1_V1_5_SHA384 | RSA PKCS#1 v1.5 with SHA-384 |
RSASSA_PKCS1_V1_5_SHA512 | RSA PKCS#1 v1.5 with SHA-512 |
RSASSA_PSS_SHA256 | RSA-PSS with SHA-256 |
RSASSA_PSS_SHA384 | RSA-PSS with SHA-384 |
RSASSA_PSS_SHA512 | RSA-PSS with SHA-512 |
| Algorithm | Description |
|---|---|
ECDSA_SHA256 | ECDSA with SHA-256 |
ECDSA_SHA384 | ECDSA with SHA-384 |
ECDSA_SHA512 | ECDSA with SHA-512 |
You can also sign data programmatically by making an API request to the Sign endpoint:
curl --request POST \
--url https://app.infisical.com/api/v1/pki/signers/{signerId}/sign \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data '{
"data": "<base64-encoded-data>",
"signingAlgorithm": "RSASSA_PKCS1_V1_5_SHA256",
"isDigest": true,
"clientMetadata": {
"tool": "custom-pipeline",
"hostname": "build-server-1"
}
}'