cvm-version 0.14.10 or later.
Declare and grant keys
Addattested-keys to your tinfoil-config.yml and reference each key under its container’s keys field. This example shows the relevant fields of an existing configuration:
Declare up to 32 keys. Each must be granted to exactly one container. IDs start with a lowercase letter and contain lowercase letters, digits, and hyphens, up to 63 characters.
tls and hpke are reserved.
Optional uid and gid set numeric file ownership. Both default to 0 and accept values from 0 to 65534. Choose an owner that lets your application read the private key.
Use the key files
The container receives a read-only directory at/run/tinfoil/keys/<id>/:
Your application loads these files or converts them into its protocol’s required format, preserving the same key pair. Key generation does not configure the application or expose a network port.
Do not declare mounts that cover the key directory. A parent
/run tmpfs is supported.
The granted application can read and copy its private key, so its handling of that key is part of the workload you trust. A container with cvm_admin: true has authority over the entire enclave, including other containers’ keys.
Verify the public key
The public key appears in the verified attestation document’scrypto_material section with:
id: the declared key ID.format:https://tinfoil.sh/key/spki/v1.data: the full SPKI DER public key encoded as lowercase hexadecimal.
CryptoMaterialData(id, envelope.KeySPKIV1Format). The application parses the public key and checks that its algorithm is suitable for the protocol.

