Credential Exchange Guide

This guide walks through the full lifecycle of W3C Verifiable Credentials in Trust Hub.

1. Setup

from trusthub import TrustAgent, CredentialIssuer, CredentialVerifier, CredentialHolder
from trusthub.crypto.signing import PQCSigner

resolver = DIDResolver()
admin = TrustAgent.create(org="acme", entity_type="human", resolver=resolver)
agent = TrustAgent.create(org="acme", entity_type="agent", resolver=resolver)

signer = PQCSigner(MLDSALevel.LEVEL_3)

2. Issue

issuer = CredentialIssuer(signer=signer, keypair=admin._signing_keypair)
credential = issuer.issue(
    issuer_did=admin.did,
    subject_did=agent.did,
    credential_types=["AgentCapability"],
    claims={"capability": "tool:search"},
)

3. Hold & Present

holder = CredentialHolder(holder_did=agent.did)
holder.store(credential)

presentation = holder.create_presentation(
    credential_ids=[credential.id],
    signer=signer,
    keypair=agent._signing_keypair,
)

4. Verify

verifier = CredentialVerifier(resolver=resolver, signer=signer)
assert verifier.verify(credential)
print("Credential verified!")