Supported standards
Credo keeps exchange protocols and credential formats separate, so most formats work with more than one protocol. For which ones to start with, see Choose your setup.
Credential formats and protocols
| Format | OpenID4VC | ISO mdoc | DIDComm | ||||
|---|---|---|---|---|---|---|---|
| OpenID4VCI | OpenID4VP | DC API | Proximity | DC API | Issue Credential v2 | Present Proof v2 | |
SD-JWT VCdc+sd-jwt | Supported | Supported | Supported | Not supported | Not supported | Not supported | Not supported |
mdocISO 18013-5 | Supported | Supported | Supported | Supported: The BLE or NFC transport comes from a native module* | Supported: ISO/IEC 18013-7 Annex C* | Not supported | Not supported |
W3C VC 1.1, JWTjwt_vc_json | Supported | Supported | Supported | Not supported | Not supported | Not supported | Supported: Through DIF Presentation Exchange* |
W3C VC 1.1, JSON-LDldp_vc | Partly supported: Issuing between Credo agents needs workarounds* | Partly supported: Presenting with DCQL fails when Credo creates the presentation* | Partly supported: Presenting with DCQL fails when Credo creates the presentation* | Not supported | Not supported | Supported | Supported: Through DIF Presentation Exchange* |
W3C VC 2.0, SD-JWTvc+sd-jwt | Supported | Supported | Supported | Not supported | Not supported | Supported: Aries RFC 0881* | Not supported |
W3C VC 2.0, Data Integrityeddsa-jcs-2022 | Not supported | Not supported | Not supported | Not supported | Not supported | Supported: The issuer doesn't verify the holder's binding proof* | Not supported |
AnonCredsCL signatures | Not supported | Not supported | Not supported | Not supported | Not supported | Supported | Supported |
- * mdoc with ISO mdoc Proximity: The BLE or NFC transport comes from a native module.
- * mdoc with ISO mdoc DC API: ISO/IEC 18013-7 Annex C.
- * W3C VC 1.1, JWT with DIDComm Present Proof v2: Through DIF Presentation Exchange.
- * W3C VC 1.1, JSON-LD with OpenID4VC OpenID4VCI: Issuing between Credo agents needs workarounds.
- * W3C VC 1.1, JSON-LD with OpenID4VC OpenID4VP: Presenting with DCQL fails when Credo creates the presentation.
- * W3C VC 1.1, JSON-LD with OpenID4VC DC API: Presenting with DCQL fails when Credo creates the presentation.
- * W3C VC 1.1, JSON-LD with DIDComm Present Proof v2: Through DIF Presentation Exchange.
- * W3C VC 2.0, SD-JWT with DIDComm Issue Credential v2: Aries RFC 0881.
- * W3C VC 2.0, Data Integrity with DIDComm Issue Credential v2: The issuer doesn't verify the holder's binding proof.
OpenID for Verifiable Credentials
Package: @credo-ts/openid4vc. See OpenID4VC.
| Specification | Versions | Roles |
|---|---|---|
| OpenID for Verifiable Credential Issuance | 1.0, drafts 11 to 15 | Issuer, holder |
| OpenID for Verifiable Presentations | 1.0, drafts 21 and 24 | Verifier, holder |
| Digital Credentials Query Language (DCQL) | OpenID4VP 1.0 | Verifier, holder |
| DIF Presentation Exchange | 2.0, with OpenID4VP drafts only | Verifier, holder |
| W3C Digital Credentials API | OpenID4VP requests. For ISO 18013-7 requests, see ISO mdoc | Verifier, holder |
| OAuth 2.0 DPoP, PKCE, PAR | Issuer, holder | |
| OAuth 2.0 Attestation-Based Client Authentication (wallet attestations) | Issuer, holder |
ISO mdoc
Package: @credo-ts/core (agent.mdoc). See ISO mdoc.
| Specification | Roles | Notes |
|---|---|---|
| ISO/IEC 18013-5 proximity presentation | Holder, verifier | Credo creates and verifies the device response. The BLE or NFC transport comes from a native module such as expo-mdoc-data-transfer. Reader authentication and device MAC aren't supported. |
| ISO/IEC TS 18013-7 Annex C, over the Digital Credentials API | Verifier, holder | Signed requests with reader authentication are supported. Available since 0.7.1. |
DIDComm
Package: @credo-ts/didcomm, with optional protocol packages. Credo implements DIDComm v1 messaging and the protocols below. See DIDComm.
| Protocol | Aries RFC | Package |
|---|---|---|
| Out of Band 1.1 | 0434 | @credo-ts/didcomm |
| DID Exchange 1.1 | 0023 | @credo-ts/didcomm |
| DID Rotate 1.0 | 0794 | @credo-ts/didcomm |
| Issue Credential 2.0 | 0453 | @credo-ts/didcomm |
| Present Proof 2.0 | 0454 | @credo-ts/didcomm |
| Coordinate Mediation 1.0 | 0211 | @credo-ts/didcomm |
| Message Pickup 1.0 and 2.0 | 0212, 0685 | @credo-ts/didcomm |
| Discover Features 1.0 and 2.0 | 0031, 0557 | @credo-ts/didcomm |
| Revocation Notification 1.0 and 2.0 | 0183, 0721 | @credo-ts/didcomm |
| Basic Message 1.0 | 0095 | @credo-ts/didcomm |
| Action Menu 1.0 | 0509 | @credo-ts/action-menu |
| Question Answer 1.0 | 0113 | @credo-ts/question-answer |
| DIDComm RPC 1.0 | 0804 | @credo-ts/drpc |
The DIDComm v1 protocols Connections 1.0 (0160), Issue Credential 1.0 (0036) and Present Proof 1.0 (0037) are still available, but deprecated and removed in 0.8.
DID methods
See DIDs.
| Method | Package |
|---|---|
did:key, did:jwk, did:peer, did:web | @credo-ts/core |
did:webvh | @credo-ts/webvh |
did:cheqd | @credo-ts/cheqd |
did:indy, did:sov | @credo-ts/indy-vdr |
did:hedera | @credo-ts/hedera |
Platforms and infrastructure
| Supported | |
|---|---|
| Runtimes | Node.js 20.19 or later (22 or later recommended), React Native (Expo) |
| Storage | Askar (SQLite, PostgreSQL), Drizzle (PostgreSQL, SQLite) |
| Key management | Askar, Node.js crypto, iOS Secure Enclave and Android Keystore |
| Caching | In memory, storage, Redis |
| Multi-tenancy | @credo-ts/tenants |