The Inji VCI Client is a library built to simplify credential issuance via OpenID for Verifiable Credential Issuance (OID4VCI) protocol.
It supports Issuer Initiated (Credential Offer) and Wallet Initiated (Trusted Issuer) flows, with secure proof handling, PKCE support, and custom error handling.
The implementation follows
- OpenID for Verifiable Credential Issuance - draft 11
- OpenID for Verifiable Credential Issuance - draft 13
- Request credentials from OID4VCI-compliant credential issuers
- Supports both the Verifiable Credential download flows defined in the OID4VCI specification:
- Issuer Initiated Flow (Credential Offer Flow).
- Wallet Initiated Flow (Trusted Issuer Flow).
- Authorization server discovery for both download flows
- PKCE-compliant OAuth 2.0 Authorization Code flow (RFC 7636)
- PKCE session is managed internally by the library
- Well-defined exception handling with
VCI-XXXerror codes (see more on this) - Support for multiple Credential formats:
ldp_vcmso_mdocvc+sd-jwt/dc+sd-jwt
- Presentation During Issuance (PDI) support for both download flows (For more details on PDI support, please refer to the Presentation During Issuance documentation)
⚠️ Consumer of this library is responsible for processing and rendering the credential after it is downloaded.
This library is officially supported and available in both Kotlin and Swift, ensuring seamless integration across Android and iOS platforms. The references for both implementations are provided below: