This is the most recent implementation report for the Verifiable Credentials Data Model specification.
Comments regarding this document are welcome. Please file issues directly on GitHub, or send them to public-vc-comments@w3.org (subscribe, archives).
The purpose of this document is to demonstrate that there are at least two interoperable implementations of processors that are capable of generating output that is conformant to the Verifiable Credentials Data Model.
The testing framework for the Verifiable Credentials Data Model executes the following process for every conformance statement in the Verifiable Credentials Data Model:
The results of the conformance testing are shown below:
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@context MUST be one or more URIs | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
@context MUST be one or more URIs (negative) | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
@context first value MUST be https://www.w3.org/2018/credentials/v1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
@context first value MUST be https://www.w3.org/2018/credentials/v1 (negative) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
@context subsequent items can be objects that express context information | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`id` properties MUST be a single URI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`id` properties MUST be a single URI (negative) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`type` properties MUST be one or more URIs | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`type` properties MUST be one or more URIs (negative) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ❌ |
`type` properties for Credential MUST be `VerifiableCredential` plus specific type | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`type` properties for Credential MUST be `VerifiableCredential` plus specific type (negative) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`credentialSubject` property MUST be present | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`credentialSubject` property MUST be present, may be a set of objects | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ❌ |
`credentialSubject` property MUST be present (negative - credentialSubject missing) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
`issuer` property MUST be present | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`issuer` property MUST be present (negative - missing issuer) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
`issuer` property MUST be a single URI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`issuer` property MUST be a single URI (negative - not URI) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`issuer` property MUST be a single URI (negative - Array) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`issuanceDate` property MUST be present | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`issuanceDate` property MUST be present (negative - missing issuanceDate) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
`issuanceDate` property MUST be an RFC3339 datetime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`issuanceDate` property MUST be an RFC3339 datetime (negative - RFC3339) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`issuanceDate` property MUST be an RFC3339 datetime (negative - Array) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`expirationDate` property MUST be an RFC3339 datetime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
`expirationDate` property MUST be an RFC3339 datetime (negative - RFC3339) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
`expirationDate` property MUST be an RFC3339 datetime (negative - Array) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ✓ |
Presentations MUST be of type `VerifiablePresentation` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
`credentialStatus` property MUST include `id` and `type` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | no support |
`credentialStatus` property MUST include `id` and `type` (negative - missing `id`) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | no support | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | no support |
`credentialStatus` property MUST include `id` and `type` (negative - missing `type`) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | no support | ✓ | ✓ | ✓ | ❌ | ✓ | ✓ | ✓ | no support |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
`proof` property MUST be present | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ❌ | ✓ | ✓ |
`proof` property MUST include specific method using the type property | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ❌ | ✓ | ✓ |
`proof` property MUST include type property (negative - missing proof type) | ✓ | ✓ | ✓ | ✓ | ✓ | ❌ | ✓ | no support | ✓ | ✓ | ❌ | no support | ✓ | ✓ | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
`credentialSchema` MUST provide one or more data schemas | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | ✓ | no support | ❌ | ✓ | ✓ |
each object within `credentialSchema`... MUST specify a `type` property with a valid value | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
each object within `credentialSchema`... MUST specify an `id` property | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
each object within `credentialSchema`... value of `id` MUST be a URI identifying a schema file | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | no support | ✓ | ✓ | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
`refreshService` MUST provide one or more refresh services | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | no support | ❌ | ✓ | ✓ |
each object within `refreshService`... MUST specify a `type` property with a valid value | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
each object within `refreshService`... MUST specify an `id` property | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
each object within `refreshService`... value of `id` MUST be a URL identifying a service endpoint | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
`termsOfUse` MUST provide one or more ToU objects | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | no support | ❌ | ✓ | ✓ |
each object within `termsOfUse`... MUST specify a `type` property with a valid value | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
`evidence` MUST provide one or more evidence objects | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | no support | ❌ | ✓ | ✓ |
each object within `evidence`... MUST specify a `type` property with a valid value | ✓ | ✓ | no support | ✓ | ✓ | ✓ | no support | ✓ | no support | ✓ | ✓ | ❌ | ❌ | ✓ | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A verifiable credential ... vc MUST be present in a JWT verifiable credential. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... If no explicit rule is specified, properties are encoded in the same way as with a standardverifiable credential, and are added to the vc property of the JWT. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... if typ is present, it MUST be set to JWT. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... alg MUST be used for RSA and ECDSA-based digital signatures. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... If no JWS is present, a proof property MUST be provided. | no support | no support | no support | no support | no support | ❌ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ❌ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... If only the proof attribute is used, the alg header MUST be set to none. | no support | no support | no support | no support | no support | ❌ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ❌ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... exp MUST represent expirationDate, encoded as a UNIX timestamp (NumericDate). | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... exp MUST represent expirationDate, encoded as a UNIX timestamp (NumericDate) -- negative, no exp expected. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... iss MUST represent the issuer property. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... nbf MUST represent issuanceDate, encoded as a UNIX timestamp (NumericDate). | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... jti MUST represent the id property of the verifiable credential, or verifiable presentation. | no support | no support | no support | untested | untested | ✓ | untested | untested | no support | untested | untested | untested | untested | no support | untested |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... jti MUST represent the id property of the verifiable credential, or verifiable presentation -- negative, no jti expected | no support | no support | no support | untested | untested | ✓ | untested | untested | no support | untested | untested | untested | untested | no support | untested |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... sub MUST represent the id property contained in the verifiable credential subject. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... aud MUST represent the subject of the consumer of the verifiable presentation. | no support | no support | no support | untested | untested | ✓ | untested | untested | no support | untested | untested | untested | untested | no support | untested |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... Additional claims MUST be added to the credentialSubject property of the JWT. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
To decode a JWT to a standard verifiable credential, the following transformation MUST be performed... Add the content from the vc property to the new JSON object. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
To decode a JWT to a standard verifiable credential, the following transformation MUST be performed... To transform the JWT specific headers and claims, the following MUST be done: If exp is present, the UNIX timestamp MUST be converted to an [RFC3339] date-time, and MUST be used to set the value of the expirationDate property of credentialSubject of the new JSON object. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
To decode a JWT to a standard verifiable credential, the following transformation MUST be performed... To transform the JWT specific headers and claims, the following MUST be done: If iss is present, the value MUST be used to set the issuer property of the new JSON object. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
To decode a JWT to a standard verifiable credential, the following transformation MUST be performed... To transform the JWT specific headers and claims, the following MUST be done: If nbf is present, the UNIX timestamp MUST be converted to an [RFC3339] date-time, and MUST be used to set the value of the issuanceDate property of the new JSON object. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
To decode a JWT to a standard verifiable credential, the following transformation MUST be performed... To transform the JWT specific headers and claims, the following MUST be done: If sub is present, the value MUST be used to set the value of the id property of credentialSubject of the new JSON object. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
To decode a JWT to a standard verifiable credential, the following transformation MUST be performed... To transform the JWT specific headers and claims, the following MUST be done: If jti is present, the value MUST be used to set the value of the id property of the new JSON object. | no support | no support | no support | no support | no support | ✓ | no support | no support | no support | ✓ | ✓ | ✓ | ✓ | no support | ✓ |
A verifiable presentation ... vp MUST be present in a JWT verifiable presentation. | no support | no support | no support | untested | untested | ✓ | untested | untested | no support | untested | untested | untested | untested | no support | untested |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... jti MUST represent the id property of the verifiable credential. | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ✓ |
A verifiable credential ... To encode a verifiable credential as a JWT, specific properties introduced by thisspecification MUST be either 1) encoded as standard JOSE header parameters, 2) encoded as registered JWT claim names, or 3) contained in the JWS signature part... jti MUST represent the id property of the verifiable credential -- negative, no jti expected | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ✓ |
A verifiable presentation ... vp MUST be present in a JWT verifiable presentation | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ✓ |
A verifiable presentation ... aud MUST represent the subject of the consumer of the verifiable presentation | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ✓ |
A verifiable presentation ... jti MUST represent the id property of [...] the verifiable presentation | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ❌ |
A verifiable presentation ... jti MUST represent the id property of [...] the verifiable presentation -- negative, no jti expected | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ❌ |
A verifiable presentation ... iss MUST represent [...] the holder property of a verifiable presentation | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ❌ |
A verifiable presentation ... iss MUST represent [...] the holder property of a verifiable presentation. -- negative, no jti expected | untested | untested | untested | no support | no support | untested | no support | no support | untested | ✓ | ✓ | ✓ | ✓ | untested | ✓ |
Test | BrightLink | Credly | Evernym | Factom-Harmony-Integrate | Gravity | Guillaume-Daumas | KnoxNetworks | OpenAttestation | Sovrin-Ken_Ebert | Spruce | Toulouse-Kent | uPort-kotlin | uPort | vc.js | verifiable-credentials-java |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A verifiable credential... MUST contain a credentialSchema | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable credential... MUST contain a credentialSchema (negative - credentialSchema missing) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |
A verifiable credential... MUST contain a proof | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable credential... MUST contain a proof (negative - missing) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |
A verifiable credential... Each credentialSchema... MUST specify a type | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable credential... Each credentialSchema... MUST specify a type (negative - type missing) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |
A verifiable credential... Each credentialSchema... MUST specify an `id` property | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable credential... Each credentialSchema... MUST specify an `id` property (negative - `id` missing) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |
A verifiable credential... Each credentialSchema... value of `id` MUST be a URI identifying a schema file | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable credential... Each proof... MUST include specific method using the type property | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable credential... Each proof... proof MUST include type property (negative - missing proof type) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |
A verifiable presentation... MUST be of type `VerifiablePresentation` | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable presentation... MUST include `proof` | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable presentation... MUST include `proof` (negative - missing `proof`) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |
A verifiable presentation... Each verifiable credential... MUST have a `credentialSchema` member | no support | no support | ✓ | no support | no support | ❌ | no support | no support | ✓ | ✓ | no support | ❌ | ❌ | no support | no support |
A verifiable presentation... Each verifiable credential... MUST contain a credentialSchema (negative - credentialSchema missing) | no support | no support | ✓ | no support | no support | ✓ | no support | no support | ✓ | ✓ | no support | ✓ | ✓ | no support | no support |