> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.adid.dev/llms.txt.
> For full documentation content, see https://docs.adid.dev/llms-full.txt.

# VC Verification Flow

**Used in:** §5.3 Verification Engine, §12.8
**Audience:** Verifier, Holder, Backend Developer
**IA ID:** D5

```mermaid
sequenceDiagram
  autonumber
  participant Verifier
  participant VPortal as Verifier portal
  participant Holder
  participant Wallet
  participant API
  participant DIDRegistry
  participant RevocationRegistry

  Verifier->>VPortal: Build proof request (PEx v2)
  VPortal->>Holder: Share request (URL / QR)
  Holder->>Wallet: Open request
  Wallet->>Wallet: Match credential, build VP
  Wallet->>API: POST /api/v1/presentations/verify
  API->>DIDRegistry: resolveDID(issuer)
  DIDRegistry-->>API: issuer publicKey
  API->>API: Verify VP signature (holder)
  API->>API: Verify each VC signature (issuer)
  API->>RevocationRegistry: getStatus(statusListId, idx)
  RevocationRegistry-->>API: bit value
  API->>API: Schema match + trust framework check
  API-->>Wallet: { verified: true|false, reasons[] }
  Wallet-->>Holder: Outcome
  API-->>VPortal: Verification record (history)
```

**Reading guide:** Endpoint is **public** (no auth) per `router.go:67` — verifiers can integrate without signing in. Trust framework enforcement is performed against `verifier.trusted_issuers` for the verifier's tenant.

***