OpenID Connect for Verifiable Credential Issuance (OIDC4VCI) implementation for TrustWeave.
Overview
OIDC4VCI is a protocol that enables credential issuance using OpenID Connect flows. It provides a standardized way for issuers to offer credentials and for holders to request and receive them.
importcom.trustweave.credential.oidc4vci.Oidc4VciServiceimportcom.trustweave.credential.oidc4vci.exchange.Oidc4VciExchangeProtocolimportcom.trustweave.credential.exchange.*importokhttp3.OkHttpClientvalkms=// Your KMS instancevalhttpClient=OkHttpClient()valoidc4vciService=Oidc4VciService(credentialIssuerUrl="https://issuer.example.com",kms=kms,httpClient=httpClient)valprotocol=Oidc4VciExchangeProtocol(oidc4vciService)valregistry=CredentialExchangeProtocolRegistry()registry.register(protocol)
valoffer=registry.offerCredential(protocolName="oidc4vci",request=CredentialOfferRequest(issuerDid="did:key:issuer",holderDid="did:key:holder",credentialPreview=CredentialPreview(attributes=listOf(CredentialAttribute("name","Alice"),CredentialAttribute("email","alice@example.com"))),options=mapOf("credentialIssuer"to"https://issuer.example.com","credentialTypes"tolistOf("VerifiableCredential","PersonCredential"),"grants"tomapOf("authorization_code"tomapOf("issuer_state"to"state123")))))// The offer contains an offer URI that can be shared with the holdervalofferUri=(offer.offerDataasOidc4VciOffer).offerUri// Format: openid-credential-offer://?credential_issuer=...