Configure the CoRIM verifier#

Note: The CoRIM verifier is experimental. It is the direction for NVIDIA’s attestation-verification workflow, but its behavior, interfaces, supported evidence, and EAR output may change.

This page describes configuration for the CoRIM verifier. It is separate from the legacy attestation configuration, which uses an attestation context and a claims collection. For the end-to-end CoRIM workflow, see the CoRIM verifier guide.

HTTP and TLS#

The CoRIM store, OCSP client, and remote EAR verification APIs accept nvat_http_options_t. Pass NULL to use the SDK defaults, or create options with nvat_http_options_create_default() to configure retries, backoff, connection and request timeouts, and custom TLS CA locations. Use the same options handle for the components that should share those settings.

CoRIM sources#

Create nvat_corim_store_t before the local verifier. A new store includes the NVIDIA RIM allowlist prefix. Configure the store before passing it to nvat_local_corim_verifier_create(), which takes ownership on success.

Use nvat_corim_store_add_allowed_url_prefix() to permit additional HTTPS rim-locator prefixes. The prefix check applies to the URL provided in the evidence, before any rewrite.

Use nvat_corim_store_add_url_rewrite() when an allowed locator must be fetched from a mirror or staging endpoint. A rewrite substitutes the first matching prefix; rules are evaluated in insertion order. Because the original URL is still allowlisted, a rewrite does not broaden which evidence-supplied locators are accepted.

For repeated appraisals, enable the store cache before creating the verifier:

rc = nvat_corim_store_enable_in_memory_cache(
    store, 16 * 1024 * 1024, 300);  /* 16 MiB, five minutes */

The cache is bounded by total entry size and uses the effective URL after rewrites as its key. Select the size and lifetime to match the deployment’s reference-manifest update and availability requirements.

Verification controls#

CoRIM signature verification and certificate-revocation checking are enabled by default. Keep both enabled in production:

These controls are intended for controlled development fixtures, not as a way to work around trust or availability failures in a deployed verifier.

Fallback inputs and input digests#

When evidence has no RIM locators, register fallback locators with nvat_local_corim_verifier_add_backup_rim_locator(). When SPDM evidence does not provide ECTs, set fallback ConciseEvidence with nvat_local_corim_verifier_set_backup_spdm_coev(). These are fallbacks; they do not replace valid data supplied by the evidence.

The verifier emits ear_nvidia_inputs.digests using SHA-256 by default when a request does not specify digest algorithms. Change the default with nvat_local_corim_verifier_set_default_hash_algorithms(), or pass zero algorithms to disable this output. Algorithms requested by the input take precedence over the default.

Signed EAR verification#

At a remote relying-party boundary, use the HTTP options above with nvat_verify_ear(). Its optional nvat_jwt_validation_options_t controls the allowed clock skew for iat, nbf, and exp; a default options handle uses 60 seconds. See Signed EARs at a remote relying party for the authentication and policy flow.