Available Policies (VC)

expiration

Checks if a credential has expired based on its notAfter claim.

Use case: Ensure credentials are still valid and haven't expired.

Example:

{
  "policy": "expiration"
}

not-before

Validates that a credential is not being used before its notBefore or issuedAt date.

Use case: Prevent premature use of credentials that have future validity dates.

Example:

{
  "policy": "not-before"
}

schema

Validates credential data against a JSON Schema.

Use case: Ensure credential structure and data types match expected schema.

Example:

{
  "policy": "schema",
  "schema": {
    "type": "object",
    "properties": {
      "credentialSubject": {
        "type": "object",
        "properties": {
          "name": { "type": "string" }
        }
      }
    }
  },
  "defaultType": null
}

signature

Verifies the cryptographic signature of a credential.

Use case: Ensure credential authenticity and integrity.

Example:

{
  "policy": "signature"
}

allowed-issuer

Validates that the credential issuer is in an allowed list.

Use case: Restrict credentials to trusted issuers only.

Example:

{
  "policy": "allowed-issuer",
  "allowed_issuer": "did:example:issuer123"
}

Multiple issuers:

{
  "policy": "allowed-issuer",
  "allowed_issuer": ["did:example:issuer1", "did:example:issuer2"]
}

regex

Validates credential data at a specific path using a regular expression.

Use case: Pattern matching for specific credential fields (e.g., email format, ID numbers).

Example:

{
  "policy": "regex",
  "path": "$.credentialSubject.email",
  "regex": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",
  "regex_options": ["IGNORE_CASE"],
  "allowNull": false
}

credential-status

Checks credential status using W3C or IETF status list formats.

Use case: Verify credential hasn't been revoked or suspended.

Example (W3C StatusList2021):

{
  "policy": "credential-status",
  "argument": {
    "discriminator": "w3c",
        "value": 0,
        "purpose": "revocation",
        "type": "StatusList2021"
    }
}

Example (IETF):

{
  "policy": "credential-status",
  "argument": {
    "discriminator": "ietf",
    "value": 0
  }
}

Example (Multiple BitstringStatusList entries):

{
  "policy": "credential-status",
  "argument": {
    "discriminator": "w3c-list",
    "list" : [
      {
        "value": 0,
        "purpose": "revocation",
        "type": "BitstringStatusList"
      },
      {
        "value": 0,
        "purpose": "suspension",
        "type": "BitstringStatusList"
      }
    ]
  }
}

revoked-status-list

Checks revocation status using W3C StatusList2021 format.

Use case: Quick revocation check for StatusList2021 credentials.

Example:

{
  "policy": "revoked-status-list"
}

vical

Validates mdoc credentials using VICAL (Verifiable Issuer Certificate Authority List) data.

Use case: Verify mdoc authenticity and certificate chain using trusted VICAL data.

Example:

{
  "policy": "vical",
  "vical": "base64EncodedVicalData",
  "enableDocumentTypeValidation": false,
  "enableTrustedChainRoot": false,
  "enableSystemTrustAnchors": false,
  "enableRevocation": false
}

webhook

Calls an external HTTP endpoint to verify the credential.

Use case: Delegate verification to external systems or custom validation logic.

Example:

{
  "policy": "webhook",
  "url": "https://api.example.com/verify",
  "basicauth_username": "user",
  "basicauth_password": "pass",
  "bearerauth_token": null
}

Bearer token authentication:

{
  "policy": "webhook",
  "url": "https://api.example.com/verify",
  "bearerauth_token": "your-token-here"
}

Available Policies (VP)

Policies are organized by presentation format. All policies can be referenced by their ID string or configured as JSON objects.

JWT VC JSON Policies

jwt_vc_json/audience-check

Validates that the presentation audience matches the expected audience for the verification session.

Use case: Ensure the presentation is intended for the correct verifier.

Example:

{
  "policy": "jwt_vc_json/audience-check"
}

jwt_vc_json/nonce-check

Validates that the presentation nonce matches the expected nonce for the verification session.

Use case: Prevent replay attacks by ensuring the presentation was created for this specific session.

Example:

{
  "policy": "jwt_vc_json/nonce-check"
}

jwt_vc_json/envelope_signature

Verifies the presentation envelope signature using the holder's public key.

Use case: Ensure the presentation was signed by the holder and hasn't been tampered with.

Example:

{
  "policy": "jwt_vc_json/envelope_signature"
}

SD-JWT Policies

dc+sd-jwt/audience-check

Validates that the SD-JWT presentation audience matches the expected audience for the verification session.

Use case: Ensure the SD-JWT presentation is intended for the correct verifier.

Example:

{
  "policy": "dc+sd-jwt/audience-check"
}

dc+sd-jwt/nonce-check

Validates that the SD-JWT presentation nonce matches the expected nonce for the verification session.

Use case: Prevent replay attacks by ensuring the presentation was created for this specific session.

Example:

{
  "policy": "dc+sd-jwt/nonce-check"
}

dc+sd-jwt/kb-jwt_signature

Verifies the Key Binding JWT (KB-JWT) signature using the holder's public key.

Use case: Ensure the KB-JWT was signed by the holder and binds the presentation to the holder's key.

Example:

{
  "policy": "dc+sd-jwt/kb-jwt_signature"
}

dc+sd-jwt/sd_hash-check

Verifies SD-JWT key binding by recalculating and comparing the SD hash.

Use case: Ensure the presentation hash matches the expected hash, validating key binding integrity.

Example:

{
  "policy": "dc+sd-jwt/sd_hash-check"
}

mdoc Policies

mso_mdoc/device-auth

Verifies device authentication using device signature or MAC.

Use case: Ensure the mdoc presentation was authenticated by the device that holds the credential.

Example:

{
  "policy": "mso_mdoc/device-auth"
}

mso_mdoc/device_key_auth

Verifies holder-verified data authorization using KeyAuthorization from the MSO.

Use case: Ensure holder-verified data elements are authorized according to the issuer's KeyAuthorization.

Example:

{
  "policy": "mso_mdoc/device_key_auth"
}

mso_mdoc/issuer_auth

Verifies issuer authentication by validating the COSE_Sign1 signature using the issuer's certificate chain.

Use case: Ensure the issuer-signed data was authenticated by the credential issuer.

Example:

{
  "policy": "mso_mdoc/issuer_auth"
}

mso_mdoc/issuer_signed_integrity

Verifies issuer-signed data integrity by comparing value digests with the MSO.

Use case: Ensure issuer-signed data hasn't been tampered with by validating digest hashes.

Example:

{
  "policy": "mso_mdoc/issuer_signed_integrity"
}

mso_mdoc/mso

Verifies the Mobile Security Object (MSO) validity, including timestamps and digest algorithm support.

Use case: Ensure the MSO is valid and within its validity period.

Example:

{
  "policy": "mso_mdoc/mso"
}
Last updated on December 3, 2025