Skip to content

Signing keys

Signing keys are utilized to perform cryptographic operations during the credential issuance process, inbound webhook requests, and other functionality that requires cryptography.

Purposes

The following signature algorithms are supported for different purposes:

ECDSA (P-256) EdDSA (Ed25519)
W3C
MDoc
SD-JWT
C2PA
CA management
OID4VP

Key types

Document Rails supports the following key types with the following signature algorithms:

ECDSA (P-256) EdDSA (Ed25519)
Local
Azure Key Vault
Google Cloud KMS

FIPS mode

When operating in FIPS mode, Document Rails disables support for EdDSA (Ed25519).

Key management

Creating keys

Signing keys of all types are created via a single API.

You can also utilize different services for the key and the certificate (for example, Google Cloud KMS keys with Azure Key Vault certificates).

Review the corresponding key type documentation for more information on how to utilize them.

Managing existing keys

import { listKeys } from "@vaultie/document-rails";

const response = await listKeys(
    client,
    accessToken,
    organizationId
);
import { updateKey, AzureAuthenticationType, CertificateType } from "@vaultie/document-rails";

await updateKey(
    client,
    accessToken,
    organizationId,
    keyId,
    {
        // You can either `key` or `certificate`, or both of them.
        //
        // Setting `certificate` to `null` instead of omitting the field
        // will remove the certificate entirely.
        certificate: {
            type: CertificateType.Azure,
            authentication: {
                type: AzureAuthenticationType.VirtualMachineManagedIdentity,
            },
            vault_url: "https://testing.vault.azure.net/objectType/objectName/1",
            name: "testcert",
            version: "bb066f61702345fa8be48761e32c89f8",
        },
    }
);
import { deleteKey } from "@vaultie/document-rails";

await deleteKey(
    client,
    accessToken,
    organizationId,
    keyId
);
import { restoreKey } from "@vaultie/document-rails";

await restoreKey(
    client,
    accessToken,
    organizationId,
    keyId
);