W3C Candidate Recommendation Snapshot
Copyright © 2025 World Wide Web Consortium . W3C ® liability , trademark and permissive document license rules apply.
Credentials are integral to our daily lives: driver's licenses confirm our capability to operate motor vehicles; university degrees assert our level of education; and government-issued passports attest to our citizenship when traveling between countries. This specification provides a mechanism for expressing these sorts of credentials on the Web in a way that is cryptographically secure, privacy respecting, and machine verifiable. These credentials provide benefits to us when used in the physical world, but their use on the Web continues to be elusive.
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
The Working Group is actively seeking implementation feedback for this specification. In order to exit the Candidate Recommendation phase, the Working Group has set the requirement of at least two independent implementations for each mandatory feature in the specification. Please see the implementation report for more details.
Any feature with less than two independent implementations in the implementation report is an "at risk" feature and might be removed before the transition to W3C Proposed Recommendation.
Comments regarding this specification are welcome at any time. Please file issues directly on GitHub , or send them to public-vc-comments@w3.org if that is not possible. ( subscribe , archives ).
This document was published by the Verifiable Credentials Working Group as a Candidate Recommendation Snapshot using the Recommendation track .
Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received wide review , is intended to gather implementation experience , and has commitments from Working Group members to royalty-free licensing for implementations.
This Candidate Recommendation is not expected to advance to Proposed Recommendation any earlier than 19 January 2024.
This document was produced by a group operating under the W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy .
This document is governed by the 03 November 2023 W3C Process Document .
This section is non-normative.
Credentials are integral to our daily lives: driver's licenses confirm our capability to operate motor vehicles; university degrees assert our level of education; and government-issued passports attest to our citizenship when traveling between countries. This specification provides a mechanism for expressing these sorts of credentials on the Web in a way that is cryptographically secure, privacy respecting, and machine verifiable. These credentials provide benefits to us when used in the physical world, but their use on the Web continues to be elusive.
It is currently difficult to express educational qualifications, healthcare data, financial account details, and other third-party- verified personal information in a machine readable way on the Web. The challenge of expressing digital credentials on the Web hinders our ability to receive the same benefits from them that physical credentials provide in the real world.
For those unfamiliar with the concepts related to verifiable credentials , the following sections provide an overview of:
The use cases and requirements that informed this specification can be found in Verifiable Credentials Use Cases [ VC-USE-CASES ].
This section is non-normative.
In the physical world, a credential might consist of:
A verifiable credential can represent all the same information that a physical credential represents. Adding technologies such as digital signatures can make verifiable credentials more tamper-evident and trustworthy than their physical counterparts.
Holders of verifiable credentials can generate verifiable presentations and then share these verifiable presentations with verifiers to prove they possess verifiable credentials with specific characteristics.
Both verifiable credentials and verifiable presentations can be transmitted rapidly, making them more convenient than their physical counterparts when establishing trust at a distance.
While this specification attempts to improve the ease of expressing digital credentials , it also aims to balance this goal with several privacy-preserving goals. The persistence of digital information, and the ease with which disparate sources of digital data can be collected and correlated, comprise a privacy concern that the use of verifiable and easily machine-readable credentials threatens to make worse. This document outlines and attempts to address several of these issues in Section 8. Privacy Considerations . Examples of how to use this data model using privacy-enhancing technologies, such as zero-knowledge proofs, are also provided throughout this document.
The word "verifiable" in the terms verifiable credential and verifiable presentation refers to the characteristic of a credential or presentation as being able to be verified by a verifier , as defined in this document. Verifiability of a credential does not imply the truth of claims encoded therein. Instead, upon establishing the authenticity and currency of a verifiable credential or verifiable presentation , a verifier validates the included claims using their own business rules before relying on them. Such reliance only occurs after evaluating the issuer, the proof, the subject, and the claims against one or more verifier policies.
This section is non-normative.
This section describes the roles of the core actors and the relationships between them in an ecosystem where one expects verifiable credentials to be useful. A role is an abstraction that might be implemented in many different ways. The separation of roles suggests likely interfaces and protocols for standardization. This specification introduces the following roles:
Figure 1 above provides an example ecosystem to ground the rest of the concepts in this specification. Other ecosystems exist, such as protected environments or proprietary systems, where verifiable credentials also provide benefits.
This ecosystem contrasts with the typical two-party or federated identity provider models. An identity provider, sometimes abbreviated as IdP , is a system for creating, maintaining, and managing identity information for holders while providing authentication services to relying party applications within a federation or distributed network. In a federated identity model, the holder is tightly bound to the identity provider. This specification avoids using "identity provider," "federated identity," or "relying party" terminology, except when comparing or mapping these concepts to other specifications. This specification decouples the identity provider concept into two distinct concepts: the issuer and the holder .
In many cases, the holder of a verifiable credential is the subject, but in some instances it is not. For example, a parent (the holder ) might hold the verifiable credentials of a child (the subject ), or a pet owner (the holder ) might hold the verifiable credentials of their pet (the subject ). For more information about these exceptional cases, see the Subject-Holder Relationships section in the Verifiable Credentials Implementation Guidelines 1.0 .
For a deeper exploration of the verifiable credentials ecosystem and a concrete lifecycle example, please refer to Verifiable Credentials Overview [ VC-OVERVIEW ].
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY , MUST , MUST NOT , OPTIONAL , RECOMMENDED , REQUIRED , SHOULD , and SHOULD NOT in this document are to be interpreted as described in BCP 14 [ RFC2119 ] [ RFC8174 ] when, and only when, they appear in all capitals, as shown here.
A
conforming
document
is
a
compacted
JSON-LD
document
that
complies
with
all
of
the
relevant
"
MUST
"
statements
in
this
specification.
Specifically,
the
relevant
normative
"
MUST
"
statements
in
Sections
4.
Basic
Concepts
,
5.
Advanced
Concepts
,
and
6.
Syntaxes
of
this
document
MUST
be
enforced.
A
conforming
document
MUST
be
either
a
verifiable
credential
with
a
media
type
of
application/vc
or
a
verifiable
presentation
with
a
media
type
of
application/vp
.
A
conforming
document
MUST
be
secured
by
at
least
one
securing
mechanism
as
described
in
Section
4.12
Securing
Mechanisms
.
A conforming issuer implementation produces conforming documents , MUST include all required properties in the conforming documents it produces, and MUST secure the conforming documents it produces using a securing mechanism described in Section 4.12 Securing Mechanisms .
A conforming verifier implementation consumes conforming documents , MUST perform verification on a conforming document as described in Section 4.12 Securing Mechanisms , MUST check that each required property satisfies the normative requirements for that property, and MUST produce errors when non- conforming documents are detected.
This specification includes both required and optional properties. Optional properties MAY be ignored by conforming issuer implementations and conforming verifier implementations .
This
document
also
contains
examples
that
contain
characters
that
are
invalid
JSON,
such
as
inline
comments
(
//
)
and
the
use
of
ellipsis
(
...
)
to
denote
information
that
adds
little
value
to
the
example.
Implementers
are
cautioned
to
remove
this
content
if
they
desire
to
use
the
information
as
a
valid
document.
Examples
provided
throughout
this
document
include
descriptive
properties,
such
as
name
and
description
,
with
values
in
English
to
simplify
the
concepts
in
each
example
of
the
specification.
These
examples
do
not
necessarily
reflect
the
data
structures
needed
for
international
use,
described
in
more
detail
in
Section
11.
Internationalization
Considerations
.
The following terms are used to describe concepts in this specification.
did:example:123456abcdef
.
See
the
Decentralized
Identifiers
(DIDs)
v1.0
specification
for
further
details.
verifiableCredential
.
These
properties
result
in
separate
graphs
that
contain
all
claims
defined
in
the
corresponding
JSON
objects.
This section is non-normative.
The following sections outline core data model concepts, such as claims , credentials , presentations , verifiable credentials , and verifiable presentations , which form the foundation of this specification.
Readers might note that some concepts described in this section, such as credentials and presentations , do not have media types defined by this specification. However, the concepts of a verifiable credential or a verifiable presentation are defined as conforming documents and have associated media types. The concrete difference between these concepts — between credential and presentation vs. verifiable credential and verifiable presentation — is simply the fact that the "verifiable" objects are secured in a cryptographic way, and the others are not. For more details, see Section 4.12 Securing Mechanisms .
This section is non-normative.
A claim is a statement about a subject . A subject is a thing about which claims can be made. Claims are expressed using subject - property - value relationships.
The data model for claims , illustrated in Figure 2 above, is powerful and can be used to express a large variety of statements. For example, whether someone graduated from a particular university can be expressed as shown in Figure 3 below.
Individual claims can be merged together to express a graph of information about a subject . The example shown in Figure 4 below extends the previous claim by adding the claims that Pat knows Sam and that Sam is employed as a professor.
To this point, the concepts of a claim and a graph of information are introduced. More information is expected to be added to the graph in order to be able to trust claims , more information is expected to be added to the graph.
This section is non-normative.
A credential is a set of one or more claims made by the same entity . Credentials might also include an identifier and metadata to describe properties of the credential , such as the issuer , the validity date and time period, a representative image, verification material , status information, and so on. A verifiable credential is a set of tamper-evident claims and metadata that cryptographically prove who issued it. Examples of verifiable credentials include, but are not limited to, digital employee identification cards, digital driver's licenses, and digital educational certificates.
Figure 5 above shows the basic components of a verifiable credential , but abstracts the details about how claims are organized into information graphs , which are then organized into verifiable credentials .
Figure
6
below
shows
a
more
complete
depiction
of
a
verifiable
credential
using
an
embedded
proof
based
on
Verifiable
Credential
Data
Integrity
1.0
.
It
is
composed
of
at
least
two
information
graphs
.
The
first
of
these
information
graphs
,
the
verifiable
credential
graph
(the
default
graph
),
expresses
the
verifiable
credential
itself
through
credential
metadata
and
other
claims
.
The
second
information
graph
,
referred
to
by
the
proof
property,
is
the
proof
graph
of
the
verifiable
credential
and
is
a
separate
named
graph
.
The
proof
graph
expresses
the
digital
proof,
which,
in
this
case,
is
a
digital
signature.
Readers
who
are
interested
in
the
need
for
multiple
information
graphs
can
refer
to
Section
5.12
Verifiable
Credential
Graphs
.
Figure 7 below shows the same verifiable credential as Figure 6 , but secured using JOSE [ VC-JOSE-COSE ]. The payload contains a single information graph, which is the verifiable credential graph containing credential metadata and other claims .
This section is non-normative.
Enhancing privacy is a key design feature of this specification. Therefore, it is crucial for entities using this technology to express only the portions of their personas that are appropriate for given situations. The expression of a subset of one's persona is called a verifiable presentation . Examples of different personas include a person's professional persona, online gaming persona, family persona, or incognito persona.
A verifiable presentation is created by a holder , can express data from multiple verifiable credentials , and can contain arbitrary additional data. They are used to present claims to a verifier . It is also possible to present verifiable credentials directly.
The data in a presentation is often about the same subject but might have been issued by multiple issuers . The aggregation of this information expresses an aspect of a person, organization, or entity .
Figure 8 above shows the components of a verifiable presentation but abstracts the details about how verifiable credentials are organized into information graphs , which are then organized into verifiable presentations .
Figure
9
below
shows
a
more
complete
depiction
of
a
verifiable
presentation
using
an
embedded
proof
based
on
Verifiable
Credential
Data
Integrity
1.0
.
It
is
composed
of
at
least
four
information
graphs
.
The
first
of
these
information
graphs
,
the
verifiable
presentation
graph
(the
default
graph
),
expresses
the
verifiable
presentation
itself
through
presentation
metadata.
The
verifiable
presentation
refers,
via
the
verifiableCredential
property,
to
a
verifiable
credential
.
This
credential
is
a
self-contained
verifiable
credential
graph
containing
credential
metadata
and
other
claims
.
This
credential
refers
to
a
verifiable
credential
proof
graph
via
a
proof
property,
expressing
the
proof
(usually
a
digital
signature)
of
the
credential
.
This
verifiable
credential
graph
and
its
linked
proof
graph
constitute
the
second
and
third
information
graphs
,
respectively,
and
each
is
a
separate
named
graph
.
The
presentation
also
refers,
via
the
proof
property,
to
the
presentation
's
proof
graph
,
the
fourth
information
graph
(another
named
graph
).
This
presentation
proof
graph
represents
the
digital
signature
of
the
verifiable
presentation
graph
,
the
verifiable
credential
graph
,
and
the
proof
graph
linked
from
the
verifiable
credential
graph
.
Figure
10
below
shows
the
same
verifiable
presentation
as
Figure
9
,
but
using
an
enveloping
proof
based
on
[
VC-JOSE-COSE
].
The
payload
contains
only
two
information
graphs:
the
verifiable
presentation
graph
expressing
the
verifiable
presentation
through
presentation
metadata
and
the
corresponding
verifiable
credential
graph
,
referred
to
by
the
verifiableCredential
property.
The
verifiable
credential
graph
contains
a
single
EnvelopedVerifiableCredential
instance
referring,
via
a
data:
URL
[
RFC2397
],
to
the
verifiable
credential
secured
via
an
enveloping
proof
shown
in
Figure
7
.
data:
URL
refers
to
the
verifiable
credential
shown
in
Figure
7
.
It
is
possible
to
have
a
presentation
,
such
as
a
collection
of
university
credentials,
which
draws
on
multiple
credentials
about
different
subjects
that
are
often,
but
not
required
to
be,
related.
This
is
achieved
by
using
the
verifiableCredential
property
to
refer
to
multiple
verifiable
credentials
.
See
Appendix
D.
Additional
Diagrams
for
Verifiable
Presentations
for
more
details.
As described in Section 1.2 Ecosystem Overview , an entity can take on one or more roles as they enter a particular credential exchange. While a holder is typically expected to generate presentations , an issuer or verifier might generate a presentation to identify itself to a holder . This might occur if the holder needs higher assurance from the issuer or verifier before handing over sensitive information as part of a verifiable presentation .
This section introduces some basic concepts for the specification in preparation for Section 5. Advanced Concepts later in the document.
This section is non-normative.
This specification is designed to ease the prototyping of new types of verifiable credentials . Developers can copy the template below and paste it into common verifiable credential tooling to start issuing, holding, and verifying prototype credentials.
A
developer
will
change
MyPrototypeCredential
below
to
the
type
of
credential
they
would
like
to
create.
Since
verifiable
credentials
talk
about
subjects,
each
property-value
pair
in
the
credentialSubject
object
expresses
a
particular
property
of
the
credential
subject.
Once
a
developer
has
added
a
number
of
these
property-value
combinations,
the
modified
object
can
be
sent
to
a
conforming
issuer
implementation
,
and
a
verifiable
credential
will
be
created
for
the
developer.
From
a
prototyping
standpoint,
that
is
all
a
developer
needs
to
do.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "type": ["VerifiableCredential", "MyPrototypeCredential"], "credentialSubject": { "mySubjectProperty": "mySubjectValue" } }
After
stabilizing
all
credential
properties,
developers
are
advised
to
generate
and
publish
vocabulary
and
context
files
at
stable
URLs
to
facilitate
interoperability
with
other
developers.
The
https://www.w3.org/ns/credentials/examples/v2
URL
above
would
then
be
replaced
with
the
URL
of
a
use-case-specific
context.
This
process
is
covered
in
Section
5.2
Extensibility
.
Alternatively,
developers
can
reuse
existing
vocabulary
and
context
files
that
happen
to
fit
their
use
case.
They
can
explore
the
Verifiable
Credential
Extensions
for
reusable
resources.
Verifiable credentials are used to express properties of one or more subjects as well as properties of the credential itself. The following properties are defined in this specification for a verifiable credential :
A verifiable credential can be extended to have additional properties through the extension mechanism defined in Section 5.2 Extensibility .
When two software systems need to exchange data, they need to use terminology that both systems understand. Consider how two people communicate effectively by using the same language, where the words they use, such as "name" and "website," mean the same thing to each individual. This is sometimes referred to as the context of a conversation . This specification uses a similar concept to achieve similar results for software systems by establishing a context in which to communicate.
Software
systems
that
process
verifiable
credentials
and
verifiable
presentations
identify
terminology
by
using
URLs
for
each
term.
However,
those
URLs
can
be
long
and
not
very
human-friendly,
while
short-form,
human-friendly
aliases
can
be
more
helpful.
This
specification
uses
the
@context
property
to
map
short-form
aliases
to
the
URLs
.
Verifiable
credentials
and
verifiable
presentations
MUST
include
a
@context
property
.
Application
developers
MUST
understand
every
JSON-LD
context
used
by
their
application,
at
least
to
the
extent
that
it
affects
the
meaning
of
the
terms
used
by
their
application.
One
mechanism
for
doing
so
is
described
in
the
Section
on
Validating
Contexts
in
the
Verifiable
Credential
Data
Integrity
1.0
specification.
Other
specifications
that
build
upon
this
specification
MAY
require
that
JSON-LD
contexts
be
integrity
protected
by
using
the
relatedResource
feature
described
in
Section
5.3
Integrity
of
Related
Resources
or
any
effectively
equivalent
mechanism.
@context
property
MUST
be
an
ordered
set
where
the
first
item
is
a
URL
with
the
value
https://www.w3.org/ns/credentials/v2
.
Subsequent
items
in
the
ordered
set
MUST
be
composed
of
any
combination
of
URLs
and
objects,
where
each
is
processable
as
a
JSON-LD
Context
.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/58473",
"type": ["VerifiableCredential", "ExampleAlumniCredential"],
"issuer": "did:example:2g55q912ec3476eba2l9812ecbfe",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"alumniOf": {
"id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
"name": "Example University"
}
}
}
The
example
above
uses
the
base
context
URL
(
https://www.w3.org/ns/credentials/v2
)
to
establish
that
the
data
exchange
is
about
a
verifiable
credential
.
This
concept
is
further
detailed
in
Section
5.2
Extensibility
.
The
data
available
at
https://www.w3.org/ns/credentials/v2
is
a
permanently
cacheable
static
document
with
instructions
for
processing
it
provided
in
Appendix
B.1
Base
Context
.
The
associated
human-readable
vocabulary
document
for
the
Verifiable
Credentials
Data
Model
is
available
at
https://www.w3.org/2018/credentials/
.
The
second
URL
(
https://www.w3.org/ns/credentials/examples/v2
)
is
used
to
demonstrate
examples.
Implementations
are
expected
to
not
use
this
URL
for
any
other
purpose,
such
as
in
pilot
or
production
systems.
The
@context
property
is
further
elaborated
upon
in
Section
3.1:
The
Context
of
the
JSON-LD
1.1
specification.
When
expressing
statements
about
a
specific
thing,
such
as
a
person,
product,
or
organization,
using
a
globally
unique
identifier
for
that
thing
can
be
useful.
Globally
unique
identifiers
enable
others
to
express
statements
about
the
same
thing.
This
specification
defines
the
optional
id
property
for
such
identifiers.
The
id
property
allows
for
expressing
statements
about
specific
things
in
the
verifiable
credential
and
is
set
by
an
issuer
when
expressing
objects
in
a
verifiable
credential
or
a
holder
when
expressing
objects
in
a
verifiable
presentation
.
The
id
property
expresses
an
identifier
that
others
are
expected
to
use
when
expressing
statements
about
the
specific
thing
identified
by
that
identifier.
Example
id
values
include
UUIDs
(
urn:uuid:0c07c1ce-57cb-41af-bef2-1b932b986873
),
HTTP
URLs
(
https://id.example/things#123
),
and
DIDs
(
did:example:1234abcd
).
Developers
are
reminded
that
identifiers
might
be
harmful
when
pseudonymity
is
required.
When
considering
such
scenarios,
developers
are
encouraged
to
read
Section
8.4
Identifier-Based
Correlation
carefully
There
are
also
other
types
of
access
and
correlation
mechanisms
documented
in
Section
8.
Privacy
Considerations
that
create
privacy
concerns.
Where
privacy
is
a
vital
consideration,
it
is
permissible
to
omit
the
id
property
.
Some
use
cases
do
not
need
or
explicitly
need
to
omit,
the
id
property
.
Similarly,
special
attention
is
to
be
given
to
the
choice
between
publicly
resolvable
URLs
and
other
forms
of
identifiers.
Publicly
resolvable
URLs
can
facilitate
ease
of
verification
and
interoperability,
yet
they
might
also
inadvertently
grant
access
to
potentially
sensitive
information
if
not
used
judiciously.
id
property
is
OPTIONAL
.
If
present,
id
property
's
value
MUST
be
a
single
URL
,
which
MAY
be
dereferenceable.
It
is
RECOMMENDED
that
the
URL
in
the
id
be
one
which,
if
dereferenceable,
results
in
a
document
containing
machine-readable
information
about
the
id
.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": ["VerifiableCredential", "ExampleDegreeCredential"], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:44Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z3cW4K1uPd6R72ryCx4Hr4Jnwx84CFyAujqBBSaDVwwN2Ma1XG3M2ozz 4U3ua75mwpm2MjELQm2NwvXyEbP4iayNp""proofValue": "z5gR7obp2ruo1DGoa5ZkCq5fPQAck36vbQ6pfcBwkMA1TwLRCvMpYsKe yU2i7Nuyn3qF7XafMXjqw7FpygQynX5zc" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:44Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z3aUyFzN5SFvJBnmTpvgcZAp7NKdpvpxHZ7EFAVA3TeNUWxD924ZX8xZ XF8wRoS579p8hCT9kqRuSA1BcymTQN57Z""proofValue": "z4dK55vXaL3P8ZNapVa96TzW88dacMVvmXb9aBVBRD3NTK2PShVRfAcj uzFSHAmw3kbKozytBxozkAiEGweEu6cxy" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:44Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhASmVLqCScR5tCAo9wrwVLJzM73qvPPHvdXIz8K3qckuJ_tFp rJs0Hw1WboG34uHW6EbhBXipnL3jgzpW5jnw_MFgjgCQD-mSor0TzCTcu4fU2TAy9Bk-qR6XIRL 7-kpv15lX2XTZYID_ji8oEaLiCLBokBn0Pemqg30Wjk2b-HyylUuao58rOhVhA59DNl6yJJkR0D SpOUsHsePm9t11drCvlyQ6Vo06ssrVNaKHC5Ku_-_uJEdgx7UkmLs1rdUyqgiC-EjbtLtlpcVhA 8XYDd-bgZpCEQv_UM_pR4Odg30ldZNAYci4hr3RcIUinC49xqF375lE6FnThnwRotPwME7MlMjq 64Butij8eQVhA0tTUfk2FLLIPbyDgef4w7oOCfH427o0GGusqZYHI9x2kzb0KpzKZU0i2foTuD6 3y6YrFDg01XKMCzpJOCYYPt1hAY2qsCD3fU6aDEmsppZ-Cxl-v0BUejlcioEsMYhXWigivwyfYW LSLZhsIvTidqq_3nR1fOKMoqZKOj4hrSS1zMVhAhxwKu8MhoaMZKeRHPu9LgZWMjHhv1TX3QN5V pQlWO73WZDHj3zZCFBk3m8I4XLu5ZcIAyNKXvemmiUNjEHZad4FnL2lzc3Vlcg""proofValue": "u2V0AhVhA_Lh78wGlsOX-fuKZ2Bai0CiwvfnjzZZqdXk1yz1XP8wsQsq x2aHk53_i5SXgPpVzRajmRqv_w_74I9dYEJUloVgjgCQCA2ReU9fSiT3Hsikk7aSlwddrHYzJ6B 7pXfQuTj0-iOlYILq9b6vp2vFBLEjtpXpBmIAWX7I8ia7hNZvsetKDC0lAhVhACnhp9laVqX5kH PiYFKFfzAFXLlQA_fOGmJqN8EpaM05AEm8Bm4l28lT5M_Kj0GDsEGEYPr7aP3dM6Es0kck8N1hA AhqebFENEbgtTueYxHn0LMN_cbqYDoMct59k-neYgAVkUkxV5gy52Qwlx4nTh1drcEoJI1w2DqF phIbmhtU4EFhAhuC4RLhI9Mq9bMp7L4h5_nXUE4VxBl_3szt2brnQml7JnOU3aIISIl8CMBgvV7 i1jhXj2OjLBFyXCtr97C7rIVhAcvga0SC01W_y0zxczy6nhnIvQbOpVzFCGy73LHINuWSTZFE_Q FO1-ZatU06GU53mE4b4Yx6WIXClSdFC_wdFwlhAjNtfJPPv8lupgs9fxEhJDv6_nLY-t2SjRnbk L120z_5wtPmz4-_k_V2VwqUOO3wyDqOymdTyx9FKiTOBgKonzIFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQs2k-mtWW5aqoPR5zDFIZeKKmh7x4MX4VHGFKH_Ww9C1Dhx3 BWSrnnL_RFv-z4o53NmcgeYP0yqjvJloo2_qFPixcil4fh3UqCDxWzCkjrbZYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggEPtnGO2Dc6-C7fvMavf aGFvV_i47XJDlQN1Ny-RPjnSBZy9pc3N1ZXI""proofValue": "u2V0ChVhQr32Dq5bGtILOUmG_MBUXcQRtkG9NKegaHBZX22GM8TtpWQ- Enod_jjdSy4lKKdfDJqLXWt8Upk_IIXsyCVHC1kHIR6EBILTW0ZvNwyjZrctYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggTIZsi0rTon0kDfw0ARr _QUI4JVsWuSfA9dv7jI6Q0cyBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'55456b7c...17a024be'
/ signature / h'8406bff6...140d51dd'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://university.example/issuers/565049",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"9Ook1nZbmbZPHC2BBp_mQxjWDVmvPEC7z_Ng0tXBNXE""xCW37ZYEuqHIPnZqtr1taWfLlNB6goon37KiaVHBgpo"
]
},
"_sd": [
"Sl6Tv0bruIXI2rJ9ebzqsy2luJ4pjU1dOQbdKmV-6Pg""IIcX2pDUATZVl1zwuYkbPHCVmcYidIpOviv6rxIxBnE"
]
},
"_sd": [
"RycRiJfqb1v0Eq1gWownAzEUP1PcbMTgSvksG03AdC0","mhAulgBvEssnppjSeklko1P04mx-tsZr48JzQ4uAPQw",
"sgvqGRRNSUdiqQ8p85yLprmiZLj80xbL3osSoUZrt4k""nhGDbjkGo0vn7sDNCNtlVsN7r0GOFaMifyNcHJAkih8"
]
}
SHA-256
Hash:
RycRiJfqb1v0Eq1gWownAzEUP1PcbMTgSvksG03AdC0
mhAulgBvEssnppjSeklko1P04mx-tsZr48JzQ4uAPQw
Disclosure(s):
WyI2eUU2N3lLczFvS1dQbV92X2FLVXhRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJkRVNXLWR4UjVnY1hTZzF0MGR1V1B3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"6yE67yKs1oKWPm_v_aKUxQ",
"dESW-dxR5gcXSg1t0duWPw",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
sgvqGRRNSUdiqQ8p85yLprmiZLj80xbL3osSoUZrt4k
nhGDbjkGo0vn7sDNCNtlVsN7r0GOFaMifyNcHJAkih8
Disclosure(s):
WyJEZlg2eW9DbndLX1pxMTcyZU5iMGxBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJXVlUyWVYwaWdIQjlPR0UxbU1xY3VBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"DfX6yoCnwK_Zq172eNb0lA",
"WVU2YV0igHB9OGE1mMqcuA",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
Sl6Tv0bruIXI2rJ9ebzqsy2luJ4pjU1dOQbdKmV-6Pg
IIcX2pDUATZVl1zwuYkbPHCVmcYidIpOviv6rxIxBnE
Disclosure(s):
WyJLdzY1UFFIVC1lNUJzRnAzaHh4YWFRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyIzaEpTUFJZYmF3N1RqajE3THNvYzRRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"Kw65PQHT-e5BsFp3hxxaaQ",
"3hJSPRYbaw7Tjj17Lsoc4Q",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
9Ook1nZbmbZPHC2BBp_mQxjWDVmvPEC7z_Ng0tXBNXE
xCW37ZYEuqHIPnZqtr1taWfLlNB6goon37KiaVHBgpo
Disclosure(s):
WyI0dUd6ZFJUNWh1TjBhdVFQMUtvZ19nIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyJaUExVQ2VIcnJ4UXhvZ0hMbnRScmZBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"4uGzdRT5huN0auQP1Kog_g",
"ZPLUCeHrrxQxogHLntRrfA",
"type",
"ExampleBachelorDegree"
]
The example above uses two types of identifiers. The first identifier is for the verifiable credential and uses an HTTP-based URL. The second identifier is for the subject of the verifiable credential (the thing the claims are about) and uses a decentralized identifier , also known as a DID .
DIDs are a type of identifier which are not necessary for verifiable credentials to be useful. Specifically, verifiable credentials do not depend on DIDs and DIDs do not depend on verifiable credentials . However, many verifiable credentials will use DIDs , and software libraries implementing this specification will need to resolve DIDs . DID -based URLs are used to express identifiers associated with subjects , issuers , holders , credential status lists, cryptographic keys, and other machine-readable information associated with a verifiable credential .
Software
systems
that
process
the
kinds
of
objects
specified
in
this
document
use
type
information
to
determine
whether
or
not
a
provided
verifiable
credential
or
verifiable
presentation
is
appropriate
for
the
intended
use-case.
This
specification
defines
a
type
property
for
expressing
object
type
information.
This
type
information
can
be
used
during
validation
processes,
as
described
in
Appendix
A.
Validation
.
Verifiable
credentials
and
verifiable
presentations
MUST
contain
a
type
property
with
an
associated
value.
type
property
MUST
be
one
or
more
terms
and
absolute
URL
strings
.
If
more
than
one
value
is
provided,
the
order
does
not
matter.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": "https://university.example/issuers/565049",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
}
}
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:44Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z5DUXqxhENQBxnCN24MgXZ55mxEA8YNgsU7rZkuy2JonHwtqAunqtgKD 2k3BSSLbTVndudx7NgqHSdUh3dkEzwSe8""proofValue": "z4s5wQQmHiTp7hZfPDWyADR1918CmhFFyBeMsBhZ9fPSvtZrJfxa2E7b 1jvnud7PYcNdt1G8aBMomuLzr8kYYyT6v" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:44Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z3aUyFzN5SFvJBnmTpvgcZAp7NKdpvpxHZ7EFAVA3TeNUWxD924ZX8xZ XF8wRoS579p8hCT9kqRuSA1BcymTQN57Z""proofValue": "z4dK55vXaL3P8ZNapVa96TzW88dacMVvmXb9aBVBRD3NTK2PShVRfAcj uzFSHAmw3kbKozytBxozkAiEGweEu6cxy" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:44Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhA9WC3iQyKzDgx0H2zUoDWYWn5WhH9vL6cGU5A5UxN81eZ_aG tSfyzXRbYC08KBeNASb1SbKassV7a8Oi8jCKWh1gjgCQDySuyrqRLW4h8VxYGUMkHKgSv4bWK5F DILvJKtuf58EZYIDaJ7po4SW_qmckuU6b6lqnVGRif--D8AzKCii8f8NzIhVhAVJwzR50yTRPX- 2-r8puUU0pd6aoMY4Pbxcp9FsIJsPdd9iibx-WycnENxXIe-DbTBW8LZIXQ4IpN_HWOugnqLFhA czrzUIS_ADLPx5Ml64O-JLaOV9U70MADl6FUfYtG6JUZUsqR8420ToG_oL-IaruWEN1nO_azkfC o114SZ-miWlhAFxqaf1FISSCHPluSzz8dZKIze6XX3tzFf4weK5Dra_MV0zmAs2svA1ONPRGMol oDHgGIroEgJnA4yI8rgykCNFhAWRlBd9pZZBqVfEijd-VrzS6f_hShBBXPJ80xvrz_G0iVbwyQh U2B-w8-DGS2ItCNkUQZUQHEU696BwSnwEnKp1hAgCwkne6r66DFlsPI1duVcLS6EtC_Dd_dZyF6 EHShmsjVEoZ6jC2-wSzPDXA9MCbaBGBM41Amn9wWSArLdXFdKIFnL2lzc3Vlcg""proofValue": "u2V0AhVhA665io4yWR_EPnoYVzYNrRLK94GXx6RSSdNlWzC52kr2iVHJ DbUGz27iMALWWA4Tzv_qInQj4BHT18OaKF9z3cVgjgCQCD0rv53bpPyiSIFC8DKoEH_CKiumMhI 8iHNgCqIA81PFYILnc3cCxJYs5CV37MCM-TwhEBQyA7TQbcdrrwSLKUXCChVhAkbW0YDAhdW6-w _XhJm3FRowtWFYj9pi0fgIg4KWXEmgTSugVLXVAoMOTTlpRKgkiiPTMkcHRcByiJA88oAou4lhA Cv97KPhBUOza5gVmYSeSeftsMBxiIGjyedHuh_BWKZOhG8j_eZj4Sy5r-D1fgeeF97JvEq46nED TmlUqLw65dFhAHYpaj21WrD90zRZHMg9K-gYuOcygmODizifeXGdHPl0gX-M-8S8_-Xs9kpc4Fi eRXYQa8bp_tt-uxyZvHt_DHFhAtyKW6-y8YFqc0rVTdZsb16JIK38Ib_vbLj6N_xnNWkdnoeY0o xCeOoMxF-iwo2gIe7jSM67EphTH6BuVkA5e51hAvynRSGJ-ERyHtb09_bnc3T9BO6YwK9Yg--Th Nu_sFY_BsDXe9E1-MQFd3_bT8cBInjRyaQTe5F50xbSzc9FnmYFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQs2k-mtWW5aqoPR5zDFIZeKKmh7x4MX4VHGFKH_Ww9C1Dhx3 BWSrnnL_RFv-z4o53NmcgeYP0yqjvJloo2_qFPixcil4fh3UqCDxWzCkjrbZYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggRBgOdHbcZMJtAwaQVKG bNyunu6CBWAwvfJsZDEuv0EOBZy9pc3N1ZXI""proofValue": "u2V0ChVhQr32Dq5bGtILOUmG_MBUXcQRtkG9NKegaHBZX22GM8TtpWQ- Enod_jjdSy4lKKdfDJqLXWt8Upk_IIXsyCVHC1kHIR6EBILTW0ZvNwyjZrctYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggvrJuggOXd7L9SISgt_- W4WPCl5VB-5-7boU9sQBmJESBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'd68c603c...b49c079b'
/ signature / h'ef46bceb...4760fca3'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://university.example/issuers/565049",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"YuydFc8tav_prRn7lPGSO-SNKZjBKCm63BV2G5hlS-k""5lO8qEFa4JkPQgnYR63gIqFpSUnTThZ60PUysvtssZU"
]
},
"_sd": [
"Z1bOx0Z66odd5NJG3USvIjUsWhY4fp04TfHa3so1wkE""OxAbpXce6R0Yc3kzrEjI6t_rU2HUg0WGd8IV2QCeTQI"
]
},
"_sd": [
"MXmgXA5vADmJt5SwIbCWxgjUqxr_h5fYpcp5jAtByoY","CPr7Ct6dYghflIBfAImSRR_SK_nDBdix35FiT-p7m6Q",
"aNwLr0DFIwTD4GTCU-RDoE2tIR6MVESMCwjQFwdEQok""gGXsfBXv0gDq4zeQJ9g_F-y2k9vf-waccEPnz2aGRtI"
]
}
SHA-256
Hash:
aNwLr0DFIwTD4GTCU-RDoE2tIR6MVESMCwjQFwdEQok
gGXsfBXv0gDq4zeQJ9g_F-y2k9vf-waccEPnz2aGRtI
Disclosure(s):
WyJPWE5KNGNsX1k3R2EyLXBad045WkRBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJPVG5wcU1pekRiUG5iWHhhTjU4R0ZRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"OXNJ4cl_Y7Ga2-pZwN9ZDA",
"OTnpqMizDbPnbXxaN58GFQ",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
MXmgXA5vADmJt5SwIbCWxgjUqxr_h5fYpcp5jAtByoY
CPr7Ct6dYghflIBfAImSRR_SK_nDBdix35FiT-p7m6Q
Disclosure(s):
WyJxSFdxUWsxaWl0MXlfUDFWbzVfdGFRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJxaFd4NHJ1SksxcG1vRkJndVU3MU9RIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"qHWqQk1iit1y_P1Vo5_taQ",
"qhWx4ruJK1pmoFBguU71OQ",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
Z1bOx0Z66odd5NJG3USvIjUsWhY4fp04TfHa3so1wkE
OxAbpXce6R0Yc3kzrEjI6t_rU2HUg0WGd8IV2QCeTQI
Disclosure(s):
WyJ6VUk4MzFJa2daTHVNaGpPMWxlM1p3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyI2eWgzc0tlaEFHbGg3SGhWSl9BajBBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"zUI831IkgZLuMhjO1le3Zw",
"6yh3sKehAGlh7HhVJ_Aj0A",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
YuydFc8tav_prRn7lPGSO-SNKZjBKCm63BV2G5hlS-k
5lO8qEFa4JkPQgnYR63gIqFpSUnTThZ60PUysvtssZU
Disclosure(s):
WyJTZWFHRUkyU2lxdkdyd3ZGaF9EZ2tBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyJ4ZTNxc2ZpV2MxMjR5ckkwZkNycUdnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"SeaGEI2SiqvGrwvFh_DgkA",
"xe3qsfiWc124yrI0fCrqGg",
"type",
"ExampleBachelorDegree"
]
Concerning this specification, the following table lists the objects that MUST have a type specified.
Object | Type |
---|---|
Verifiable credential object |
VerifiableCredential
and,
optionally,
a
more
specific
verifiable
credential
type
.
For
example,
"type":
["VerifiableCredential",
"OpenBadgeCredential"]
|
Verifiable presentation object |
VerifiablePresentation
and,
optionally,
a
more
specific
verifiable
presentation
type
.
For
example,
"type":
"VerifiablePresentation"
|
credentialStatus object |
A
valid
credential
status
type
.
For
example,
"type":
"BitstringStatusListEntry"
|
termsOfUse object |
A
valid
terms
of
use
type
.
For
example,
"type":
"TrustFrameworkPolicy"
|
evidence object |
A
valid
evidence
type
.
For
example,
"type":
"Evidence"
|
refreshService object |
A
valid
refreshService
type
.
For
example,
"type":
"VerifiableCredentialRefreshService2021"
|
credentialSchema object |
A
valid
credentialSchema
type
.
For
example,
"type":
"JsonSchema"
|
The
type
system
for
the
Verifiable
Credentials
Data
Model
is
the
same
as
for
JSON-LD
1.1
and
is
detailed
in
Section
3.5:
Specifying
the
Type
and
Section
9:
JSON-LD
Grammar
.
When
using
a
JSON-LD
context
(see
Section
5.2
Extensibility
),
this
specification
aliases
the
@type
keyword
to
type
to
make
the
JSON-LD
documents
more
easily
understood.
While
application
developers
and
document
authors
do
not
need
to
understand
the
specifics
of
the
JSON-LD
type
system,
implementers
of
this
specification
who
want
to
support
interoperable
extensibility
do.
All
credentials
,
presentations
,
and
encapsulated
objects
SHOULD
specify,
or
be
associated
with,
additional,
more
narrow
types
(like
ExampleDegreeCredential
,
for
example)
so
software
systems
can
more
easily
detect
and
process
this
additional
information.
When
processing
encapsulated
objects
defined
in
this
specification,
such
as
objects
associated
with
the
credentialSubject
object
or
deeply
nested
therein,
software
systems
SHOULD
use
the
type
information
specified
in
encapsulating
objects
higher
in
the
hierarchy.
Specifically,
an
encapsulating
object,
such
as
a
credential
,
SHOULD
convey
the
associated
object
types
so
that
verifiers
can
quickly
determine
the
contents
of
an
associated
object
based
on
the
encapsulating
object
type
.
For
example,
a
credential
object
with
the
type
of
ExampleDegreeCredential
,
signals
to
a
verifier
that
the
object
associated
with
the
credentialSubject
property
contains
the
identifier
for
the:
id
property.
type
property.
name
property.
This
enables
implementers
to
rely
on
values
associated
with
the
type
property
for
verification
.
Object
types
and
their
associated
values
are
expected
to
be
documented
in
at
least
a
human-readable
specification
that
can
be
found
at
the
URL
for
the
type.
For
example,
the
human-readable
definition
for
the
BitstringStatusList
type
can
be
found
at
https://www.w3.org/ns/credentials/status/#BitstringStatusList
.
It
is
also
suggested
that
a
machine-readable
version
be
provided
through
HTTP
content
negotiation
at
the
same
URL.
Explaining how to create a new type of verifiable credential is beyond the scope of this specification. Readers interested in doing so are advised to read the Creating New Credential Types section in the Verifiable Credentials Implementation Guidelines 1.0 .
When
displaying
a
credential
,
it
can
be
helpful
to
have
text
provided
by
the
issuer
that
furnishes
the
credential
with
a
name
and
a
short
description
of
its
purpose.
The
name
and
description
properties
serve
these
purposes.
name
property
MUST
be
a
string
or
a
language
value
object
as
described
in
11.1
Language
and
Base
Direction
.
Ideally,
the
name
of
a
credential
is
concise,
human-readable,
and
could
enable
an
individual
to
quickly
differentiate
one
credential
from
any
other
credentials
they
might
hold.
description
property
MUST
be
a
string
or
a
language
value
object
as
described
in
11.1
Language
and
Base
Direction
.
Ideally,
the
description
of
a
credential
is
no
more
than
a
few
sentences
in
length
and
conveys
enough
information
about
the
credential
to
remind
an
individual
of
its
contents
without
having
to
look
through
the
entirety
of
the
claims
.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": ["VerifiableCredential", "ExampleDegreeCredential"], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z5wnr5ABaRP68rhTXeBqEqBXCN6csCJXk1PgLWsiP3mK4JpfyiBW89hS i4WKagz86NUwrNb3E65hcmijQHCHubdQW""proofValue": "z2WuEjd9Dnzn2QKKLDaqqMFuZPkad96KkDkgd1R9eTVHfM2Vguz3vAMV KwKSaoiyD5KkXwzR1NKZAfqdGPYLmABu7" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "zhBvTcUWMHvVp9jbCRVcDx8drtCZ2MqEGifUe7VU6WRXxH3ztqxZudCd S4GMupdz5sraQCaJ61T42wafNeaE2Wf1""proofValue": "zaS5oc7SHSBFCVasDsE28v5qMkDEveU3Jaj2e5p7BgbpeActBMfJnr3Q sBBoY2yM8x3JhMxzFDD44Whh5M644eTb" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhAIjhCaQ0dZd2Ir0AEwvV0cB6N5kYFnVcNtT_CNek6_xFqMah mKIuXgaIhpJbr3gIC965Wv72gg25A1eycV6EUfVgjgCQCg8HOLaHvl5dbpysMp6dQZ5oENiDKf2 mBbqdHQjlP8itYIDIcDasMFkgjlBkYSEVyU8TnEzHj1gMNGjJNjMJZKOHTh1hAWUCMMY0mH0JeC 7uLHRMwWVNSSkDHFVNKhFO_jEnL_9ndiUHp2Ah3VjjLY_Wh20cd5YXw4wde0Kn-wU0_MaJv2FhA X6R1A0yo0Qpa_MKNxiMYiSBDNoid71WGynfb-OTuyJdzxpoGwdYJJQLH4MbxWgRGYvzeIj8IcQF a35upqNVKnFhAUXxWBtMvxi6ApEB5ywkzGGx-ybxqsUkkLkhhiWYgd7MaZyq2cWO_U5Zy_Ed9KS SGvCN0fySk_beO8rbgRY7lh1hA98qgIPCNP1hsyFm-5jLKCP_CgtQXBKHtBCFp3lO8ueDj68P0a X2UxQC4_yAdaYBetyJh3Cuyr-t4Vy6BBeOvIFhAn-GQ2uQRRdCYUL05ixmI4477m4H1edE3rlft 7EE_shv_v3Po1K35_kOKo93Z_zfT6LSlAqVG-pb680UCWh0GHFhA4tDPls3tkIHVlhGtIr62Qt4 Vm1g9E10KUR6RQDPwiajMfFTkFugBfCPGLEWh8nDqqaYEshtcaZRlq3vSRqIQQlhAUvMX69aPDX IjTSoZkKHtLP0FLPETnS0rYx4pX5qKSfYdt1xy6WB8lc_smCC-Od6bdyXIdeE20tHenNMYvwPM- 4FnL2lzc3Vlcg""proofValue": "u2V0AhVhA0YjqlQMyrO-38JdqJCkqbo5Y7OIf5RIXHVMl3vOQ_csoYwA f2Jk6hX2Lelz1BcEwccg_0Zaca9LzrFngZ-6vJ1gjgCQDCf2j7JmgOFCIVCB0zBTPTBKrJposzF 7PCJi12e7pzXVYINsW46rL5H8q_FPfsYodfZAlHceHhluJCH3oq4alpenNh1hAD_q22uwKZB8DR DCIQ_SZ10PfyfqJxbeNuoASnhuQaBWk1KutM-UszAQYvNceCXO0AsZb-EsGDdBxkaS_z56pXFhA w86fA8ZhUBxtZZWe8JuKIQk7F14GLRlHHOekzrDbEApIMPkFuJbd3ptfvJdeVoks1lEk9vdd-qu LDpXV7RPUeVhA2ntA41HDwLartfyGumbRIWu8qGYAS8USbsiC2aOeVcvwLlB89ITsAcczYLBjJm YGhNui6KJG-nZnuDmnxAL7k1hAQbd0VpAIyEPL7oGrEGNJ31iJNFKqCxvN-86FdS-Y659SVmXXs uvZi6zS554ee_ZVtHJbuwq2oKdTplrc1P5JnFhAE1OxYVD98QcWKkk4HNuwAOp265qGjVsou3JP Zm_v3RByWqHPIRJk37AeRwURwZRTQ3yTHIhhj3J5VwabUwrFc1hAyDVF4ysRiAjCKV5wgEjce25 lQSkf-sV46nbPOLLXOQqxSIVZcqxkK31Zg-tpDQU0LWWo1Ta1dKJOqsRN3FdWdVhAe82iLFFsdQ DEGiZ985ssp_ZdxeSNqdonjk3CahZExIoYG4BW2-JQrodnWudDIQyv0ktCowxE5sP4CBDiugp7j oFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQqz4PLxSkzimyVtssIapinPDNhhp4XQRUER1glCPOLG4nkT- gl64CLGdkaQJFNNhNQs6e3DlNPJZ5v0_d-hPjErZv-wF7nlXBIiMqUvOVEAhYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzXFDE8ZX70eeJX1DawHuw0sW9CBV3sa68IaRGcnZiiQpYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggbIj-uacLPIBi9KsyJiz z9KsLiiKzcod4kv3sUPhSzwyBZy9pc3N1ZXI""proofValue": "u2V0ChVhQjJgtIoJoT5UtrxruDZQF5bciukpHiMga3uDcQcN6ohdvclQ ThLKWVdroyzalOwQpDR2s0xcvjQXFPqRyPHsEYn8Ma-Le_uMqQimK3uR_0BdYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmXFDE8ZX70eeJX1DawHuw0sW9CBV3sa68IaRGcnZiiQpYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggPBpyeeFh7aWbiJg1L2t 6nO86JGeWKJdPA5Y8nD-WvdyBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "https://university.example/issuers/565049", "name": "Example University", "description": "A public university focusing on teaching examples." }, "validFrom": "2015-05-10T12:30:00Z", "name": "Example University Degree", "description": "2015 Bachelor of Science and Arts Degree", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'dd64852c...e4fd0239'
/ signature / h'355410ce...854271ab'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": {
"name": "Example University",
"description": "A public university focusing on teaching examples.",
"_sd": [
"LDWychFWiPqTheIBBiF5O0wNiy_sLBEiG70AMCnHfXw""UZYz0-ZIu7foTy4_mp0ii7nd9z4nSpHYXEXE61oGTRM"
]
},
"validFrom": "2015-05-10T12:30:00Z",
"name": "Example University Degree",
"description": "2015 Bachelor of Science and Arts Degree",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"-cS11_q8zI74kx9iEHoYz6yTh6L5XdftEwZP9m009U4""SA_p7JZXzSex51BfJ1tU9W3M6W3bukBwVKOt3RfiR8o"
]
},
"_sd": [
"g2iqS6WnmvNyx3orOpDLsMOWMy0DT2CYJ8nOG3VEVBU""YwkdB_Aim1WPvBo0a0wpbtVen4ET1N7_JF2KupukDNo"
]
},
"_sd": [
"Qek-GLLXKi2QOCwXFLmFcheO85JJUiW3J3qRepKsh6s","E4lfdG-7z1YAJigtQVHHCOX0ujr2PXt4Bzw07TIO6bo",
"Yc9wYg9i1id_tSFXbZiFdkIeqGIZY9n3kMjYQnltMgI""h7CFVNwN0otVq1meJeRflsQLuBUpjFt4Bta1q_fGjdI"
]
}
SHA-256
Hash:
Yc9wYg9i1id_tSFXbZiFdkIeqGIZY9n3kMjYQnltMgI
E4lfdG-7z1YAJigtQVHHCOX0ujr2PXt4Bzw07TIO6bo
Disclosure(s):
WyJVQzBmem9NM0tTN0hEdG1VYl81b0VRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJXbGVmWnRCU01zMEE3b2txdE54bzR3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"UC0fzoM3KS7HDtmUb_5oEQ",
"WlefZtBSMs0A7okqtNxo4w",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
Qek-GLLXKi2QOCwXFLmFcheO85JJUiW3J3qRepKsh6s
h7CFVNwN0otVq1meJeRflsQLuBUpjFt4Bta1q_fGjdI
Disclosure(s):
WyIwYkhTb2pjRDZMMEVOT0N5RnJBM1J3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJHRzBTaWdtNHNTTi1jSlFTeV80X2N3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"0bHSojcD6L0ENOCyFrA3Rw",
"GG0Sigm4sSN-cJQSy_4_cw",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
LDWychFWiPqTheIBBiF5O0wNiy_sLBEiG70AMCnHfXw
UZYz0-ZIu7foTy4_mp0ii7nd9z4nSpHYXEXE61oGTRM
Disclosure(s):
WyJRcW0zRzIzRWF4cWhnUHQ0dnVUSllRIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0
WyIwYW80OEZUa3J2Z2RwNmpteFFPZ29BIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0
Contents:
[
"Qqm3G23EaxqhgPt4vuTJYQ",
"0ao48FTkrvgdp6jmxQOgoA",
"id",
"https://university.example/issuers/565049"
]
SHA-256
Hash:
g2iqS6WnmvNyx3orOpDLsMOWMy0DT2CYJ8nOG3VEVBU
YwkdB_Aim1WPvBo0a0wpbtVen4ET1N7_JF2KupukDNo
Disclosure(s):
WyI1TlByS1FmNVJfektwQVRSOWdaYVhBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyJ2WUg5MDFtbkJLSXQ4LXpuQmFsYVFRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"5NPrKQf5R_zKpATR9gZaXA",
"vYH901mnBKIt8-znBalaQQ",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
-cS11_q8zI74kx9iEHoYz6yTh6L5XdftEwZP9m009U4
SA_p7JZXzSex51BfJ1tU9W3M6W3bukBwVKOt3RfiR8o
Disclosure(s):
WyJpaU8xYjlMZEtzZUQzYmFZUmJYUjFnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyJhMWZRTnNFZkFiYmdISVd2TjIxbmtnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"iiO1b9LdKseD3baYRbXR1g",
"a1fQNsEfAbbgHIWvN21nkg",
"type",
"ExampleBachelorDegree"
]
Names
and
descriptions
also
support
expressing
content
in
different
languages.
To
express
a
string
with
language
and
base
direction
information,
one
can
use
an
object
that
contains
the
@value
,
@language
,
and
@direction
properties
to
express
the
text
value,
language
tag,
and
base
direction,
respectively.
See
11.1
Language
and
Base
Direction
for
further
information.
The
@direction
property
in
the
examples
below
is
not
required
for
the
associated
single-language
strings,
as
their
default
directions
are
the
same
as
those
set
by
the
@direction
value.
We
include
the
@direction
property
here
for
clarity
of
demonstration
and
to
make
copy+paste+edit
deliver
functional
results.
Implementers
are
encouraged
to
read
the
section
on
String
Internationalization
in
the
JSON-LD
1.1
specification.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": ["VerifiableCredential", "ExampleDegreeCredential"], "issuer": { "id": "https://university.example/issuers/565049", "name": [{ "@value": "Example University", "@language": "en" }, { "@value": "Université Exemple", "@language": "fr" }, { "@value": "جامعة المثال", "@language": "ar", "@direction": "rtl" }], "description": [{ "@value": "A public university focusing on teaching examples.", "@language": "en" }, { "@value": "Une université publique axée sur l'enseignement d'exemples.", "@language": "fr" }, { "@value": ".جامعة عامة تركز على أمثلة التدريس", "@language": "ar", "@direction": "rtl" }] }, "validFrom": "2015-05-10T12:30:00Z", "name": [{ "@value": "Example University Degree", "@language": "en" }, { "@value": "Exemple de Diplôme Universitaire", "@language": "fr" }, { "@value": "مثال الشهادة الجامعية", "@language": "ar", "@direction": "rtl" }], "description": [{ "@value": "2015 Bachelor of Science and Arts Degree", "@language": "en" }, { "@value": "2015 Licence de Sciences et d'Arts", "@language": "fr" }, { "@value": "2015 بكالوريوس العلوم والآداب", "@language": "ar", "@direction": "rtl" }], "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": [{ "@value": "Bachelor of Science and Arts Degree", "@language": "en" }, { "@value": "Licence de Sciences et d'Arts", "@language": "fr" }, { "@value": "بكالوريوس العلوم والآداب", "@language": "ar", "@direction": "rtl" }] } } }
This specification defines a property for expressing the issuer of a verifiable credential .
A
verifiable
credential
MUST
have
an
issuer
property
.
issuer
property
MUST
be
either
a
URL
or
an
object
containing
an
id
property
whose
value
is
a
URL
;
in
either
case,
the
issuer
selects
this
URL
to
identify
itself
in
a
globally
unambiguous
way.
It
is
RECOMMENDED
that
the
URL
be
one
which,
if
dereferenced,
results
in
a
controller
document,
as
defined
in
[
CONTROLLER-DOCUMENT
],
about
the
issuer
that
can
be
used
to
verify
the
information
expressed
in
the
credential
.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": "https://university.example/issuers/14",
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
}
}
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z46p5pDK71RRSyiKdED8fbmoqc63fbLBXNGYNa3cCgCNDkEAM9P1Sx4J DBZcsP2JYXYLNLSe8NNk388X2vwhfuuEs""proofValue": "z3FnpBDDtnWtcvz4UrHYew9HFwdvkiuFAejcUwTRshWCGZHmLsFhkjoB u7kr28Bat59LjTjhrPMk7W7A5faLeu6Be" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z2R7TKZx8y84AWgGHmTy2BaTnksCvbcym55Le1Ur2HdVd32zeZbmCvF4 aAxgBDVNa1X3rZTjr6jNyCfuJ8bCXACFb""proofValue": "z5DoCGQo2hH1wNqEDUMMLCVdUZNTNGcsB3BgrYLeHq9fc7UYJL2CNpMk FdxJzxWxCTBZSLWAcF3RJJ7cxt765NaWp" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhAfDCw_GkH7R7CeXsxro8-PvbZroapTeFxWlTBMIvsNttorXX 3Ci9y7WKk59QURwU7ROw0l4Tz5SZ8r0KzLBYzsVgjgCQCQ75iCrJfnEzs54BP6xngIJdJp2qf1E loffPJ6KUwPx1YIPAThU16ZPNj4l_DbDtIf6Yq6oZlZdX6K-7Svc5VJeILhVhAsjEy1YL1hF-d- 6sWT0spxaHBsz7nDnm69z3f0QSmAfVMKds_EdYphSaXFP5hSoTkqE-mJv78DOml-Pd9wGolbVhA fxQn-2iII7sWdJAoSJ1WRkNvGXqYDhpJH2J6BaPZN89aiuSHWIqrJUIhD3tll0rMzKdhurOOOHP xrc1Kc40qU1hAf2-yE9j5pz2L98fIVuux3sH0c3frG9ahu9QFxe1EepVgaYtEx8saesrjzBafYf s4UqOAdHlGp4CBGabyvOBAulhAt7u76JurQHldX3ZJy7nSrA1EqfUHyyiHiS24ggwuCeHFs1DWQ c6iWj8kMuymQuJluAK3QVx_20NYQ_TU2bekdVhA3bgHBI-9_Bq8s09g-ltLd4oSuFJY6kIWiPUZ MInSKtBXYX80_KsEiH3B6ZunK74KgiId0NZhFzMNKnA-0rXNxoFnL2lzc3Vlcg""proofValue": "u2V0AhVhAF0yNoFlGpvp6Rhn1dgftXgJE-6BL6GEf-lR9hJio71ByCZV E77wtDekF2tvL3xAd8zTt7Giq4cfc2LBYkwjplFgjgCQCibIJv8yInJ7iI3wDXMOiPIjOHUQn9q BUBDrHy1f7opxYIIqRR-75-yOpbBAOBryoaoLKFh_SdtbhWFtDIi-Ho-hnhVhA0QXwkD_xVU7u3 90MbUrHradubO5Sz6Z08dBh5wz8CH3CJWzNReanfklSbTbEdiJ2V_tXmYkz2vB9Mdv59MILEVhA N3G12kS1PEzRGgIcpM3uQNY7F3762-qnY-PVK5oem8lHavQNu0iWpoL8aoxJbqh0rvOJx27OA5Q ywF_BaZAbZ1hAupBBE8EpsKy-G_TawLo9CGaX2852GxDNSgErG2frryxmPI0bErr9pxBGNKkgW3 ch5kF8ysy4TyS9zLHD8gZKiFhAMgy-spiDVT74Ds0aCurUQbW6uWf6IIt4LIQbRWAFk1O5UHYj8 QKKDhRDsyJiibGhFcxS_hRJOJZwTLf0cJKhqFhAPxV3erDsNHmweWwoXdOLfP3SAOurX0UI6Vt8 DcUsqA3xBbTGcOn4TY-Mq0mnPfPo7BN3M6WzgTi6-W8UE_lQkIFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQqoo9JixatpT_X2Rnj19dApdI0oAeMlK_PBZeR5NFhLZIV6V E1OJOnz617_oQauC6R2OJdUegeOWlx2yZmo0MYsGvgtJA2HHBeY11MzG2QoVYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzKnv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFgg4WekTC8x0k-x1CUN17K tJY9VCv7tgtkJ9NSj8HQYFWaBZy9pc3N1ZXI""proofValue": "u2V0ChVhQuBm_j5auqL8Pvk_5Jt4eo-5Qd5m4nV5kL84LwVFQ0lQZ9kZ 5GINjYtLvu7Rc6tMvSqt2Szvqsa0BmvUkewBKZSqKDNHqGfHcEvCIGifB2cFYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmKnv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1gglI0-cnPtG50Bwcz8Ftx OWHaAYwFG6n4CTmsXgs8P6e-BZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'627cbada...ae7595ba'
/ signature / h'e0b8c762...5519844f'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://university.example/issuers/14",
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"3nClit7DISlrJVWAGBxkS7vLxZeo9DKbPHecZk0lVQ4""kGOvyEeOv6htsHxb-8UR80o8xKE37tMn9wFAMfcy8Hg"
]
},
"_sd": [
"7mIaYV2uw1E0m77rc9FLPX5FOavJYuwEwRrS3Ab-IAM""1nZSTE8Qksh4X5sd_gFcKqj7nHCE_zQUofU_Dhn4kxg"
]
},
"_sd": [
"JaCOYUzFTpBdx1QeV1UdGS5nxRdX2rMysEeeEtCJCCY","KBF7BcwPkavSjaau5p78EaG1nSbD_bJwBoEOlMIL660",
"sqE1YAg3Ue96JttIJ4b0W9uBRHwLCqbxuMz_v7jfx5E""plm6TzsHyteaYvfa53Fmc2Cbeq3s6tpCfeFHbHVwfvU"
]
}
SHA-256
Hash:
sqE1YAg3Ue96JttIJ4b0W9uBRHwLCqbxuMz_v7jfx5E
KBF7BcwPkavSjaau5p78EaG1nSbD_bJwBoEOlMIL660
Disclosure(s):
WyJMWFFnYmFyRDZkdE91RER0OTFPczFnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJ1RVlXZ1VoWG80cFFLc1NHR0QtUFFBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"LXQgbarD6dtOuDDt91Os1g",
"uEYWgUhXo4pQKsSGGD-PQA",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
JaCOYUzFTpBdx1QeV1UdGS5nxRdX2rMysEeeEtCJCCY
plm6TzsHyteaYvfa53Fmc2Cbeq3s6tpCfeFHbHVwfvU
Disclosure(s):
WyJheUdDRnRrX0pFbGFDWDNVZldZbWZRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJ1QUN1bk45ZTk0RzFsMGdKTGx1cm53IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"ayGCFtk_JElaCX3UfWYmfQ",
"uACunN9e94G1l0gJLlurnw",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
7mIaYV2uw1E0m77rc9FLPX5FOavJYuwEwRrS3Ab-IAM
1nZSTE8Qksh4X5sd_gFcKqj7nHCE_zQUofU_Dhn4kxg
Disclosure(s):
WyJqQUdKb1Q0UzVzMWZKdjM2cTQ5SU53IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyIwMWVySWlJUnZpWmhFSXJZeUhkWHNRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"jAGJoT4S5s1fJv36q49INw",
"01erIiIRviZhEIrYyHdXsQ",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
3nClit7DISlrJVWAGBxkS7vLxZeo9DKbPHecZk0lVQ4
kGOvyEeOv6htsHxb-8UR80o8xKE37tMn9wFAMfcy8Hg
Disclosure(s):
WyJ0dkV2VGV6Nk4xZ2NGOXBKT29SRXVnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyI0N1FwNDhJSl92YkpNZFRKS3VYdmZRIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"tvEvTez6N1gcF9pJOoREug",
"47Qp48IJ_vbJMdTJKuXvfQ",
"type",
"ExampleBachelorDegree"
]
It is also possible to express additional information about the issuer by associating an object with the issuer property:
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": {
"id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
"name": "Example University"
},
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
}
}
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "did:example:76e12ec712ebc6f1c221ebfeb1f", "name": "Example University" }, "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z4XcWjwzKC5Wyfz4tA5jeHLhHEcT4hjBLZT1h1PfPv92jx9stgdJoRvr JhdTFcTRxw5HABoNLkJFbMP91YyaZLumv""proofValue": "z4uCKGTULC3rvrAokr35nAwvWv8GkK6ZNDMgD2EbaUxZzXUVVmcAkhGy T2KqhzcyTy9AM1YhJnzRwZsJeAywmnA8N" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "did:example:76e12ec712ebc6f1c221ebfeb1f", "name": "Example University" }, "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z5R7yKuD88rBU2aRvMY2r7cngU79aTwa8VPRQdaPKSWB7M92uhSG4VBW jwnpYziv4JQ53qtXwn4KDgRXV8pbq8mB1""proofValue": "z63DvLNYm7fyxDx53NniuzyfASR2AYTTdyHWDVxrRVy362aSfZpzVGcd jjNk7wwmdfqCJp1vfo68DUG8UrcjcM8QA" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "did:example:76e12ec712ebc6f1c221ebfeb1f", "name": "Example University" }, "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:45Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhAldQyk4zRyRaNy53l2-DR6g-v5-nX2MkQXqoqUT1zW4Hh4nr DTlv40nGbdeKlxePeHiHRZUFXiXiAEXpqfw5T2lgjgCQC9UXStE6WQc9dhM66hoM9vE9l8SEjn9 aErcyHTdDLPkxYILlb5_xAbdAEwkc5VnAhFEE9gkuUl2FZpqC7r7GJMib7hVhAEOlXDD9IV3cZi IdqohwKCoMFt6MfNIiR82vtZQietuDtde1t3de7GD-ebDzhTvSGDn4HM0Q6Qq73P11BQ6-g11hA _dnP-jKLZfS3aVU7XEsl_jNzDGoeowBtMKvzVWig-MbRfRoz8NMuI3racc8XGhmhgeKECmzjXc4 LW5grJ7fySFhAfpHLuajF2cpyWvvENLaZqyb1XoWfXsxc-bQjGSBWhX6TwVWNHWSH99Jz6RQMyB DYwcCRiwsMoIfXYKCBLYkOMlhAk8ZQYsRI3Xm8e6zoc1iP5e2tdsEiDBchS_76OFV-dBV4WPBds Cns8LEglWHp-jPb-shUfn-26OdzxJ1P92AoUFhAsRcNZnBuxFhEhGz4JXEJV2T-HyEWusEZpdNl qBXuTUDuHLHEtmOPiYwLBF2catN5R-ncT8IonJlTTMdKJLgj6oFnL2lzc3Vlcg""proofValue": "u2V0AhVhAJ0VThYsTgyYE2NEAQdPHROseQOIkqzB7XxrQX2liUyIYJoj a9l36uYd3Xe5zO2DbzYWNBxnmo6vilhxzdNFb-1gjgCQD6LkA3rfLrU7PyQFcLfZjZcdkTMiRX6 0wJS4qxj4WbOZYILhZLpo5Lrd5gkB3U1wMPST-cW6k5DIvz7bfUpPQwZe-hVhAucL3IWCuw9NS9 TbqTWdJNCe8JULW1JQiKhCGJWVgfrt5IeZnasx0RV73p8A0vTRndsC3mKrLRjmbVu4GgHq12VhA Q2U0JqmV6pRJzZ0S1ln7zfc63HG9ZMYbmqsNjrTl6194CBNsLNyK4_540oqXkooZaOtLnFqzdqh IAmCcnqKEZlhANlKWfmKNBas3L-tQ4vc0NNvUvU1nXaPW3mCe8A5Zsu4tnsMFSM5DtAb9E5QeE7 nCogxTikBwoz65qmOmom2cq1hA6pTEJ_WCpOURQmw8FQS9K_lRYOAH1Rp6YVsn2u2HxRLXY63FJ 64MNU4B-uRo-TF91m_GIWySkhVBm5QmACQ-OFhAVyLjLxDVLDr02wPZpObr3Shmicm181q_pY3t NCv7vnd0_UaNBSx_kauexJWaNZEju8XvOJ7jHHQidOAVftTKPIFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "did:example:76e12ec712ebc6f1c221ebfeb1f", "name": "Example University" }, "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQquQfNVwDLp9jJmbKbwvNxOqO4-3j6SxwjPfs9SUt0MWEf3M Zg37sxKXGP38mvhKDHNFr75--C2s6KRycL4WtJGAvx5q2a-Glw28Pi9mpqAhYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzQAGpGXTZS6rwOppAPreXlDb3xQb46PJ_xcVri0glVYJYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggSMGCzj42Vwas2lhkbHJ KHuvgFQDBf9KakN1WcycVmeeBZy9pc3N1ZXI""proofValue": "u2V0ChVhQrW6Vap4aNjY5K_eXKtqsDFCiXURmmSTBxfNid2-n7akiLX3 ax_7O3eMCD741x__XItdHjZP6cCo9foQ7JMwlgh84dyWSQwOtKT0iZt3WbuJYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmQAGpGXTZS6rwOppAPreXlDb3xQb46PJ_xcVri0glVYJYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggPg91e_yjLp6Dzb9FLkJ 75sntMow44XscCg5z2Ks1yXWBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "did:example:76e12ec712ebc6f1c221ebfeb1f", "name": "Example University" }, "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": { "id": "did:example:76e12ec712ebc6f1c221ebfeb1f", "name": "Example University" }, "validFrom": "2010-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'78b2e864...c55a7f37'
/ signature / h'819a5ff3...3f7d5819'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": {
"name": "Example University",
"_sd": [
"6XxBeY4DljsSX56rzjeCYXHAV_Z5keiXXMF0lvkPBzM""TiYo54GUj8Gu3bXDgJ-U9_PWyu5RqopfJkJ5CWDanyY"
]
},
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"LrkZu_nkLvX8BakloN68eTIAIu8Wu6diJ2lj992YYSg""N4PuYu4pZnWRKJ0J7L1nY1oNfSeMMrCWvWYRHtRu7CA"
]
},
"_sd": [
"0gdS0vsImewAf2SZrapD7DjLSr6NcTeM85rIpPCmVTM""Vjrf2T6r4uiReOnl1z8De3qSrl9__WH0URXDBsBCCmU"
]
},
"_sd": [
"BIdvC16L_l7X7gb6_4nPKHh5_BapBvvtw63nIXMh9wU","A8-XHQrzfdfW1h30FPz16OVI349d_4eNidNjeTdZdtk",
"Qhdv-PTeVcfZHQI_YZ7MuDFcXC58-egpqzUidph74RY""qCTTih9qMezTvpZQDwkb_UiEjlvvUh4G-MtCQDRMaBI"
]
}
SHA-256
Hash:
BIdvC16L_l7X7gb6_4nPKHh5_BapBvvtw63nIXMh9wU
A8-XHQrzfdfW1h30FPz16OVI349d_4eNidNjeTdZdtk
Disclosure(s):
WyJISFJyZDNsMjR3WmVqVlBlZzJzVzZnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJNR1JEWE1qd2k3Q3ByZG9JTFlHbkxRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"HHRrd3l24wZejVPeg2sW6g",
"MGRDXMjwi7CprdoILYGnLQ",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
Qhdv-PTeVcfZHQI_YZ7MuDFcXC58-egpqzUidph74RY
qCTTih9qMezTvpZQDwkb_UiEjlvvUh4G-MtCQDRMaBI
Disclosure(s):
WyJYb01MeWw5Vm1Pa3VqbjU1RlJOdFJBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJIWk9PLTd6a2V5U2k3a1dvNndHZ3JnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"XoMLyl9VmOkujn55FRNtRA",
"HZOO-7zkeySi7kWo6wGgrg",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
6XxBeY4DljsSX56rzjeCYXHAV_Z5keiXXMF0lvkPBzM
TiYo54GUj8Gu3bXDgJ-U9_PWyu5RqopfJkJ5CWDanyY
Disclosure(s):
WyJFWGNtc2hkUy1pUTZtdzRvSktQV3lnIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd
WyJyZTRrNWdBdEo4ODFHeE5pc25BZkRnIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd
Contents:
[
"EXcmshdS-iQ6mw4oJKPWyg",
"re4k5gAtJ881GxNisnAfDg",
"id",
"did:example:76e12ec712ebc6f1c221ebfeb1f"
]
SHA-256
Hash:
0gdS0vsImewAf2SZrapD7DjLSr6NcTeM85rIpPCmVTM
Vjrf2T6r4uiReOnl1z8De3qSrl9__WH0URXDBsBCCmU
Disclosure(s):
WyJSeDVXOVpsZmtTOXdwYTQ1YUU0TmFnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyJVS3BLQWpZTzRvc2ZyLUN4ek0wN1RnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"Rx5W9ZlfkS9wpa45aE4Nag",
"UKpKAjYO4osfr-CxzM07Tg",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
LrkZu_nkLvX8BakloN68eTIAIu8Wu6diJ2lj992YYSg
N4PuYu4pZnWRKJ0J7L1nY1oNfSeMMrCWvWYRHtRu7CA
Disclosure(s):
WyJjS0ZnemI3R2VwakJybUF3S1RWU1pnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyJoX3pldzhpRzltckNtZGxkX0ZJenJ3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"cKFgzb7GepjBrmAwKTVSZg",
"h_zew8iG9mrCmdld_FIzrw",
"type",
"ExampleBachelorDegree"
]
A
verifiable
credential
contains
claims
about
one
or
more
subjects
.
This
specification
defines
a
credentialSubject
property
for
the
expression
of
claims
about
one
or
more
subjects
.
A
verifiable
credential
MUST
contain
a
credentialSubject
property
.
credentialSubject
property
is
a
set
of
objects
where
each
object
MUST
be
the
subject
of
one
or
more
claims
,
which
MUST
be
serialized
inside
the
credentialSubject
property
.
Each
object
MAY
also
contain
an
id
property
to
identify
the
subject
,
as
described
in
Section
4.4
Identifiers
.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": "https://university.example/issuers/565049",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
}
}
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","created": "2025-01-20T07:23:46Z", "verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","created": "2025-01-20T07:23:45Z", "verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z5dak4FedR3iVSMnjRRAv42bwB7w1sQt4TK98rTFipKc135JqrCSwPXt Y9i8SuqXcUiULoRhAjaiadTo1pbaHPsYv""proofValue": "z5TyBEc8nGd8HUbR1k5ihWYu1kPv9unDyd6iKofZXzttA3pxcfqEMadA zHHBUnXaiRdcaCNLBJeW6yyC6ZkfWmJVR" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","created": "2025-01-20T07:23:46Z", "verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","created": "2025-01-20T07:23:45Z", "verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z5Ew5Fc8ZFiNrZNqsHuRdovvPyavcg9o4qZQgQrAtQz6zp3kn1ByKJcH o7Jjz1T2uru71W44DKpSgtbrkmHRrjreT""proofValue": "zBFNLuPRr2iBAkjLXZaQ1fEcUYkJ6P8FjpFtfNLsttuGJbdsmRTNCLFe MAcLvG9hWsQd82SzeSTV2bzRTaDp7APj" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhAkP5NOh8MzP5gfBSNMgKecAnFZn8EPPA-KUxcgolSRUlNlxE OoSGx2N-MFmDlKJDxklJLxy1eKVKUX3t8biq9dlgjgCQCPyMJ7iXf0KitMOvkI1n0vwpWcCXfGI fHiMnPOUarX11YICYdYbjB3NYtzzQZKtoJ3s5EOwRWfutUOpUZUd8RwZymhVhAidzr7Pm1tnlvb RXaRVd3a7jGxRl11uZqdLEBZf83Q6cm0wYFlsam1CVKVadesf6uHwBTNQrplJrZRxMiYu3NBVhA cyPTtHF0-S53HKxnEcS_AewgV_CQzZ_A5XI7ovDuN2UtNhyZ5EBtxSToLlOHwk4NLHA7dL7CZ-f oLW9FviZRglhAaOFKxmVxUW7HDvfe4JW2c8CSXds-hhBMkcyTaEqMi1MYy2jWy9ZtoKyWaKcmDa fDLR_Jo6Qg0wNtWbRqY8QYUVhAxXj-sMQ551AOOhrsattW_lJ1krX8iHeH3DrT-_bYzr7ClmvxE Fmwi76QWxLGu6Z3R0s75T9O3PkX3p_zewAFglhA9gIL9Xn2Y4PVJTmNSGkYjMOKAMlhGGWhulnd pMLMa_zvvMM0u9qtaBZVjueJyxiIpZpkToiWV52r5PXMXp71koFnL2lzc3Vlcg""proofValue": "u2V0AhVhAI5OXDY5t9W6g_h0omowNrR0fZnHiNb5rZBNcKVSOwa_Gi8N zaTLroWJzQBRr2WxjHu8pETJzH_WwnRsylZUTZFgjgCQCPjZNyas3n2ZSwGMfZ0mNToNCvtoVwi 32GU5RZ4SpyzZYILZkFgS_urkwgb9y0JsSbq107haYkqS4xWuE1PFLEepnhVhAg7iSmKtfs9_9B bBKH8OsInPW4Zw_R2iWMa5iqk5DMPaZUFKzHlsFW3ic3s8KtergyRNKwW8_ck3XBAapW1kablhA xc0cwnkGFDfYiYLfTCEW944t8hY8Ij6CiYORMofgmYcGjsNt7FroylcKB4BHJsTYzUytWV5YIV6 His3UZw85VFhA5YEePG8152qyzJa4atGAlOv1K_4scshoEmid-X9Pe8p9hkK7TPKQ-0Zhc-KDxR TUUn1jaFPvsUAqipVFmWrW9FhAaIPPATlKX3oLi-ZkxhU27XcEKQwKYzvS8rMXFLdPrArfMNzzU wv-4yMooxEg8kZLDtp9ESFi1GXcYZOvX8e-PVhAm3g9Edll6DL6XSKkJfnUuf-kCNAv9NVIRrAF NCyRSqjJZEngB5WgSzt2-sA272SHfZCZTb_0CilUijXo8ZiaDIFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQs2k-mtWW5aqoPR5zDFIZeKKmh7x4MX4VHGFKH_Ww9C1Dhx3 BWSrnnL_RFv-z4o53NmcgeYP0yqjvJloo2_qFPixcil4fh3UqCDxWzCkjrbZYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggKFlSnXNg-JePs3fsj12 -NV9LGKqQy9ciN26nrYbkXamBZy9pc3N1ZXI""proofValue": "u2V0ChVhQr32Dq5bGtILOUmG_MBUXcQRtkG9NKegaHBZX22GM8TtpWQ- Enod_jjdSy4lKKdfDJqLXWt8Upk_IIXsyCVHC1kHIR6EBILTW0ZvNwyjZrctYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmS1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggiFKw5BSZcTJUfGP7GLn KyCv93RxFZZmGTKGp5TFGq4KBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/565049", "validFrom": "2010-01-01T00:00:00Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'ee3afa7e...e4cd3313'
/ signature / h'3ca9a64c...233f923e'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://university.example/issuers/565049",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"BtfhW8zk27mw4C9Fk0F5Xe3AE_40fFOdIBusQalw2PM""jav4CaM8ASQgS9uqRDrkZUPSp7-v1IC4__l54Ko2Kw8"
]
},
"_sd": [
"XU8kjoi63COq1xFCRpKp14faoB1N9NZSqds0X70o_kk""A992-_izs27Z_Ysl-qpTQKdfvEF7rtMz879xxkGxupw"
]
},
"_sd": [
"9kcO0036WMoWdC0gxvFKq3H4MVyTcOlKAWL9NwWyl38","52TcGbz1UWlRChKlO0yiPbg88gS7Az1X_09QcqcPWJk",
"HDMj9LihUcYbjTxBoY3VWop1wWxuODYnvHmvwe4ci_0""Og1Y0UxM1DzncGDF5od2NPAVgGPEHmuer7vJpm-cWX0"
]
}
SHA-256
Hash:
HDMj9LihUcYbjTxBoY3VWop1wWxuODYnvHmvwe4ci_0
Og1Y0UxM1DzncGDF5od2NPAVgGPEHmuer7vJpm-cWX0
Disclosure(s):
WyJnel9JWGYtZkNYeFdMMzRZUHNacDh3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJuN3lTSU9XMWNReGhpQ1RLSmVOWDd3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"gz_IXf-fCXxWL34YPsZp8w",
"n7ySIOW1cQxhiCTKJeNX7w",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
9kcO0036WMoWdC0gxvFKq3H4MVyTcOlKAWL9NwWyl38
52TcGbz1UWlRChKlO0yiPbg88gS7Az1X_09QcqcPWJk
Disclosure(s):
WyJwdHRWNGU1QkgyS1k2ZnItNEN0SndBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJ6VHh2V3lhX04zeDU5UUgwcXd5aGxRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"pttV4e5BH2KY6fr-4CtJwA",
"zTxvWya_N3x59QH0qwyhlQ",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
XU8kjoi63COq1xFCRpKp14faoB1N9NZSqds0X70o_kk
A992-_izs27Z_Ysl-qpTQKdfvEF7rtMz879xxkGxupw
Disclosure(s):
WyJtejBXQmN1WHhmTVZLQlJfX2I1QnVRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyJaSGJlaFZ4Yk1aVzBpMmlsRWotbEJBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"mz0WBcuXxfMVKBR__b5BuQ",
"ZHbehVxbMZW0i2ilEj-lBA",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
BtfhW8zk27mw4C9Fk0F5Xe3AE_40fFOdIBusQalw2PM
jav4CaM8ASQgS9uqRDrkZUPSp7-v1IC4__l54Ko2Kw8
Disclosure(s):
WyI0OWFmdUQzdWlDWkZ5SjBGOU0zYTZ3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyI3bHliSEJGYWZ2VkJyR2tnVzFUN3RBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"49afuD3uiCZFyJ0F9M3a6w",
"7lybHBFafvVBrGkgW1T7tA",
"type",
"ExampleBachelorDegree"
]
Expressing
information
related
to
multiple
subjects
in
a
verifiable
credential
is
possible.
The
example
below
specifies
two
subjects
who
are
spouses.
Note
the
use
of
array
notation
to
associate
multiple
subjects
with
the
credentialSubject
property.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "RelationshipCredential"],
"issuer": "https://issuer.example/issuer/123",
"validFrom": "2010-01-01T00:00:00Z",
"credentialSubject": [{
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"name": "Jayden Doe",
"spouse": "did:example:c276e12ec21ebfeb1f712ebc6f1"
}, {
"id": "https://subject.example/subject/8675",
"name": "Morgan Doe",
"spouse": "https://subject.example/subject/7421"
}]
}
This
specification
defines
the
validFrom
property
to
help
an
issuer
to
express
the
date
and
time
when
a
credential
becomes
valid
and
the
validUntil
property
to
express
the
date
and
time
when
a
credential
ceases
to
be
valid.
When comparing dates and times, the calculation is done "temporally", meaning that the string value is converted to a "temporal value" which exists as a point on a timeline. Temporal comparisons are then performed by checking to see where the date and time being compared are in relation to a particular point on the timeline.
validFrom
property
MUST
be
a
[
XMLSCHEMA11-2
]
dateTimeStamp
string
value
representing
the
date
and
time
the
credential
becomes
valid,
which
could
be
a
date
and
time
in
the
future
or
the
past.
Note
that
this
value
represents
the
earliest
point
in
time
at
which
the
information
associated
with
the
credentialSubject
property
becomes
valid.
If
a
validUntil
value
also
exists,
the
validFrom
value
MUST
express
a
point
in
time
that
is
temporally
the
same
or
earlier
than
the
point
in
time
expressed
by
the
validUntil
value.
validUntil
property
MUST
be
a
[
XMLSCHEMA11-2
]
dateTimeStamp
string
value
representing
the
date
and
time
the
credential
ceases
to
be
valid,
which
could
be
a
date
and
time
in
the
past
or
the
future.
Note
that
this
value
represents
the
latest
point
in
time
at
which
the
information
associated
with
the
credentialSubject
property
is
valid.
If
a
validFrom
value
also
exists,
the
validUntil
value
MUST
express
a
point
in
time
that
is
temporally
the
same
or
later
than
the
point
in
time
expressed
by
the
validFrom
value.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": ["VerifiableCredential", "ExampleDegreeCredential"], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "zg6q71f65N6xKWJowpG4HcgzomCbHb6sRXGr9SCBuLtgjvay67o9kmff zzfUH1Ho2o9iRAZMWrpZe7GfHJtDov5u""proofValue": "z3eMViVXppkQdEw3dtKYpPRDF1FGYh9ZWDjy5YAdCvha1DKyTZdsxnEh fybDwPZnCL67TCLHs7inJYUGRZGstPD6d" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z2vCiBp2Q6mYFPsMVHapozYdDpJr1XNi7qFwBW7SUBFQ9BVX9Pr55zSx 7JF1tB5u4y5gh2cnbRhP1DTJxTmt66MnF""proofValue": "z44dkUY8jNzqC5zcQMEkQmN8cwxghQkRyBv2sX3JShBVmYXBUm4SCk7w fEzY74ne6dtmyDHtFmjxpJDK9PkLcokP4" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhAs9wpSr_w7PABl-sMgGzYK5yV_fCCm7yFbd2nPGoBBf0pG_I vJaNOt_ouqTnv3Wx9bWMO0TnDWO69At_6s83q0FgjgCQCdHXUPwLxGs6HDLMLda_8ZaLz3fa-LP k7ca4eyDoyuetYIGCfYX_tTPkeCsw2Lqe3Hrd6BfrYNz24ZbJSLdY3OjaChlhAy47xHGYT6g654 gOhLFoe7bmNytArn-lZRXDuOZUb3t-bESxFTHJatyneXDtnCKQr8dCMEc_xlDBRDPsWUAr1-VhA I02c40DGBtGzoYkPC06ViAEfnO1IuYq-w50vrnc4aVdrOxCPdOZG6YyLxVeOIipbWSdupIKAhCp Kp2KhEcNxZVhAnRGETXl_L6_i0CKB9xWlb4_2XW9gya4BmyQ7ouzyfLMlleO6UBE66LRWSbzR_J s4Kf5yuYkZ3XRIn-XwBEzYm1hA93JGyGg7DUi7NT1tUN14_VyFZzOkpjMohx0qsf6SMINArWJTQ z-pO-TimUsZdPw9kxxRRlk9V6ShgUnmee7wL1hAGozsMvrt6p4vd-o3xaE10LxtXlWG9RgQHcF5 PTPQFhniSEdCK8aenFR2z4A_-cmVw7rnVzFiwGZ0deqUrxoGylhAHPGCfAUSTn4unOiVkLaJy-O G7dUb-szIHflhtBKJVOMspo9lYJsncsACmOO0QxWs-dGPJwaPYtBgmq56QgTsLYFnL2lzc3Vlcg"proofValue": "u2V0AhVhAf5mhEdh4RjPLzpLOvtmCRpvmLE7og3of8QK-ziTT45uv7KT z0ii9DwQhG_fpfandOVkleI6nBqp1c5CjUE8BR1gjgCQDxee26P1NWIauW8OqSOQuoJV_tdiKU8 n0zpdGSYjxK-tYID1LMtixT5L-kidc-sSBxRGFwpy6SHiCTZIankq_-NWhhlhA3BpP4Ud6XTfkh qQFFjhrWt3HjWy-R96XJUYqnGjG_7VeP1mHtJ40_Ota5TN8qYy004oawKrhTfuXowALFtc4cFhA Hf4EvLe1n7hj41jwTyUDyMPi5yt9-Ggm976UeUO5YbJJGC2f73VDh8c-RMCClG0p2y577sQ1hJO xUFpubLdy-VhA64httDGYVsnndJqMgjPLob_vlxJ3nitM82aNwUaivSpUGQ4hZ_pVvDoXk4_w09 jCieAhxVP3CYvZszcHVi6pSVhAqKrqs0KPCvyw_X2hpKZeSgGMFPXFan6YzmefJ0M-JQfC8VblC zeTibNjZiwPYXaKUlIDqerm05COWJ7BI77by1hAaHDdqslsQrvPI-4Ls0wo9o3Wz1tFLXrg_D3l -p74Yy4zE6CvDXH--Shmfqg0UwjtfPoS2vr_dKnjL6JO_EkrBVhAyGPw9p05QKLrrE8oYprtpCO gL8YYhSG6jKMQWpLRDHDPs0QqukSDaDOkwoohDr4ybyBHec_wi1gf2y5-pFqNVIFnL2lzc3Vlcg " } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQo1A3Hvt8nOCO5at-AqJG4nMUv0Pqk2gm-ehsJZoh4fkgl9U IYNDQL1edHqVdeSAvIZwG5ErKorVBvMTfGoBpfMQfIzxJKaqeoF1ZoF0XabJYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzKnv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggWQFeUsuKZjpAVSMgvyS 3jt-IrhQs0JqMdZK7tIO7lOmBZy9pc3N1ZXI""proofValue": "u2V0ChVhQrYoy2awa5u0VAe1DX9c6jpScy5B3E_oi20NYpnWndESdzri 8OMC54l-G5x_Y6ztCBYi_2vmvoRPOCbhwZd5eQAZ9K4MNeleyKUFQvK17-nJYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmKnv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggh_Tww3IOmVt2vt8LjSz gfcDJ_iJd2TOW35YN0fsXzimBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/3732", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2010-01-01T19:23:24Z", "validUntil": "2020-01-01T19:23:24Z", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'54cce178...210a44ce'
/ signature / h'33324d10...09ac1adf'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://university.example/issuers/14",
"validFrom": "2010-01-01T19:23:24Z",
"validUntil": "2020-01-01T19:23:24Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"loDYB5WRqb6iFQiVtkH10yiGTTHHq8ITwzFRcUQ9E10""BClZGYmVP7KfPK9MxvBQy5rOPQ__yF04QZuVNu5X5zQ"
]
},
"_sd": [
"DbJTpNg22I-2RT3qyjx9nLd7_deXAWObG0_xXGDu_p0""YVPqlDkWH1OZGHmBv1jiH-szVYR0Rc6LVZSEJHD9m-Y"
]
},
"_sd": [
"cyS5CTZYxfBEWBIc50fzTHYboJkgLJph9u4vjYhmg6k","4rV3CVFe6vRxTNP6v8efcw5CMIWYOgGFgDIYLgNxsEc",
"lm1HrigtGkzO0QrmrJUbWDS1izduhoKYatJ5Bsl6lI0""6XGHtk40Wzit5snowh_5dSchU7hudRrGRJ-1fNJJ8Ow"
]
}
SHA-256
Hash:
lm1HrigtGkzO0QrmrJUbWDS1izduhoKYatJ5Bsl6lI0
6XGHtk40Wzit5snowh_5dSchU7hudRrGRJ-1fNJJ8Ow
Disclosure(s):
WyIyQURBTE13b3d1X093ZW43cGxYRjZBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
WyJQWDltbGRuZlNyZkJZVzNXcWFxVEJ3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
Contents:
[
"2ADALMwowu_Owen7plXF6A",
"PX9mldnfSrfBYW3WqaqTBw",
"id",
"http://university.example/credentials/3732"
]
SHA-256
Hash:
cyS5CTZYxfBEWBIc50fzTHYboJkgLJph9u4vjYhmg6k
4rV3CVFe6vRxTNP6v8efcw5CMIWYOgGFgDIYLgNxsEc
Disclosure(s):
WyJRZXFuX1ZPYVJ0enhTWGZFMFJqMUtBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJIT1k5Tld1VnRzY1dkbzJZVUNod1ZnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"Qeqn_VOaRtzxSXfE0Rj1KA",
"HOY9NWuVtscWdo2YUChwVg",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
DbJTpNg22I-2RT3qyjx9nLd7_deXAWObG0_xXGDu_p0
YVPqlDkWH1OZGHmBv1jiH-szVYR0Rc6LVZSEJHD9m-Y
Disclosure(s):
WyI2cHgyMU9tdE5KNUFOcnp2ZWNHaUpnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
WyJ4OElxV0o2dmpuTjhtSzFqdURSdWRRIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
Contents:
[
"6px21OmtNJ5ANrzvecGiJg",
"x8IqWJ6vjnN8mK1juDRudQ",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256
Hash:
loDYB5WRqb6iFQiVtkH10yiGTTHHq8ITwzFRcUQ9E10
BClZGYmVP7KfPK9MxvBQy5rOPQ__yF04QZuVNu5X5zQ
Disclosure(s):
WyJxUm8xTzV6MTVvY1RSSEszaFdwYjNnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyJjNmE1NVRvZ3dIYnRVcGJSaldoS3R3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"qRo1O5z15ocTRHK3hWpb3g",
"c6a55TogwHbtUpbRjWhKtw",
"type",
"ExampleBachelorDegree"
]
If
validFrom
and
validUntil
are
not
present,
the
verifiable
credential
validity
period
is
considered
valid
indefinitely.
In
such
cases,
the
verifiable
credential
is
assumed
to
be
valid
from
the
time
the
verifiable
credential
was
created.
This specification defines the credentialStatus property for discovering information related to the status of a verifiable credential , such as whether it is suspended or revoked.
If
present,
the
value
associated
with
the
credentialStatus
property
is
a
single
object
or
a
set
of
one
or
more
objects.
The
following
properties
are
defined
for
every
object:
id
property
is
OPTIONAL
.
It
MAY
be
used
to
provide
a
unique
identifier
for
the
credential
status
object.
If
present,
the
normative
guidance
in
Section
4.4
Identifiers
MUST
be
followed.
type
property
is
REQUIRED
.
It
is
used
to
express
the
type
of
status
information
expressed
by
the
object.
The
related
normative
guidance
in
Section
4.5
Types
MUST
be
followed.
The
precise
content
of
the
credential
status
information
is
determined
by
the
specific
credentialStatus
type
definition
and
varies
depending
on
factors
such
as
whether
it
is
simple
to
implement
or
if
it
is
privacy-enhancing.
The
value
will
provide
enough
information
to
determine
the
current
status
of
the
credential
and
whether
machine-readable
information
will
be
retrievable
from
the
URL.
For
example,
the
object
could
contain
a
link
to
an
external
document
that
notes
whether
the
credential
is
suspended
or
revoked.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": "https://university.example/issuers/14",
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
},
"credentialStatus": {
"id": "https://university.example/credentials/status/3#94567",
"type": "BitstringStatusListEntry",
"statusPurpose": "revocation",
"statusListIndex": "94567",
"statusListCredential": "https://university.example/credentials/status/3"
}
}
A credential can have more than one status associated with it, such as whether it has been revoked or suspended.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://license.example/credentials/9837",
"type": ["VerifiableCredential", "ExampleDrivingLicenseCredential"],
"issuer": "https://license.example/issuers/48",
"validFrom": "2020-03-14T12:10:42Z",
"credentialSubject": {
"id": "did:example:f1c276e12ec21ebfeb1f712ebc6",
"license": {
"type": "ExampleDrivingLicense",
"name": "License to Drive a Car"
}
},
"credentialStatus": [{
"id": "https://license.example/credentials/status/84#14278",
"type": "BitstringStatusListEntry",
"statusPurpose": "revocation",
"statusListIndex": "14278",
"statusListCredential": "https://license.example/credentials/status/84"
}, {
"id": "https://license.example/credentials/status/84#82938",
"type": "BitstringStatusListEntry",
"statusPurpose": "suspension",
"statusListIndex": "82938",
"statusListCredential": "https://license.example/credentials/status/84"
}]
}
Implementers are cautioned that credentials with multiple status entries might contain conflicting information. Reconciling such conflicts is a part of the validation process, hence part of the verifier's business logic, and therefore out of scope for this specification.
Defining the data model, formats, and protocols for status schemes is out of the scope of this specification. The Verifiable Credential Extensions document contains available status schemes for implementers who want to implement verifiable credential status checking.
Credential status specifications MUST NOT enable tracking of individuals, such as an issuer being notified (either directly or indirectly) when a verifier is interested in a specific holder or subject . Unacceptable approaches include "phoning home," such that every use of a credential contacts the issuer of the credential to check the status for a specific individual, or "pseudonymity reduction," such that every use of the credential causes a request for information from the issuer that the issuer can use to deduce verifier interest in a specific individual.
Data schemas are useful when enforcing a specific structure on a given data collection. There are at least two types of data schemas that this specification considers:
It
is
important
to
understand
that
data
schemas
serve
a
different
purpose
from
the
@context
property,
which
neither
enforces
data
structure
or
data
syntax
nor
enables
the
definition
of
arbitrary
encodings
to
alternate
representation
formats.
This specification defines the following property for expressing a data schema, which an issuer can include in the verifiable credentials that it issues:
The
value
of
the
credentialSchema
property
MUST
be
one
or
more
data
schemas
that
provide
verifiers
with
enough
information
to
determine
whether
the
provided
data
conforms
to
the
provided
schema(s).
Each
credentialSchema
MUST
specify
its
type
(for
example,
JsonSchema
)
and
an
id
property
that
MUST
be
a
URL
identifying
the
schema
file.
The
specific
type
definition
determines
the
precise
contents
of
each
data
schema.
If
multiple
schemas
are
present,
validity
is
determined
according
to
the
processing
rules
outlined
by
each
associated
type
property.
The
credentialSchema
property
allows
one
to
annotate
type
definitions
or
lock
them
to
specific
versions
of
the
vocabulary.
Authors
of
verifiable
credentials
can
include
a
static
version
of
their
vocabulary
using
credentialSchema
that
is
secured
by
some
content
integrity
protection
mechanism.
The
credentialSchema
property
also
makes
it
possible
to
perform
syntactic
checking
on
the
credential
and
to
use
verification
mechanisms
such
as
JSON
Schema
[
VC-JSON-SCHEMA
]
validation.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential", "ExamplePersonCredential"],
"issuer": "https://university.example/issuers/14",
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
},
"alumniOf": {
"name": "Example University"
}
},
"credentialSchema": [{
"id": "https://example.org/examples/degree.json",
"type": "JsonSchema"
},
{
"id": "https://example.org/examples/alumni.json",
"type": "JsonSchema"
}]
}
In
the
example
above,
the
issuer
is
specifying
two
credentialSchema
objects,
each
of
which
point
to
a
JSON
Schema
[
VC-JSON-SCHEMA
]
file
that
a
verifier
can
use
to
determine
whether
the
verifiable
credential
is
well-formed.
This specification recognizes two classes of securing mechanisms : those that use enveloping proofs and those that use embedded proofs.
An enveloping proof wraps a serialization of this data model. One such RECOMMENDED enveloping proof mechanism is defined in Securing Verifiable Credentials using JOSE and COSE [ VC-JOSE-COSE ].
An embedded proof is a mechanism where the proof is included in the serialization of the data model. One such RECOMMENDED embedded proof mechanism is defined in Verifiable Credential Data Integrity 1.0 [ VC-DATA-INTEGRITY ].
These two classes of securing mechanisms are not mutually exclusive. Additional securing mechanism specifications might also be defined according to the rules in Section 5.13 Securing Mechanism Specifications .
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://example.gov/credentials/3732",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": "did:example:6fb1f712ebe12c27cc26eebfe11",
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "https://subject.example/subject/3921",
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-rdfc-2022",
"created": "2021-11-13T18:19:39Z",
"verificationMethod": "https://university.example/issuers/14#key-1",
"proofPurpose": "assertionMethod",
"proofValue": "z58DAdFfa9SkqZMVPxAQp...jQCrfFPP2oumHKtz"
}
}
The
embedded
proof
above
secures
the
original
credential
by
decorating
the
original
data
with
a
digital
signature
via
the
proof
property.
This
results
in
a
verifiable
credential
that
is
easy
to
manage
in
modern
programming
environments
and
database
systems.
eyJhbGciOiJFUzM4NCIsImtpZCI6IkdOV2FBTDJQVlVVMkpJVDg5bTZxMGM3U3ZjNDBTLWJ2UjFTT0 Q3REZCb1UiLCJ0eXAiOiJ2YytsZCtqc29uK3NkLWp3dCIsImN0eSI6InZjK2xkK2pzb24ifQ . eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwcz ovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6 Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLT AxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiX3NkIjpbIlNFOHp4bmduZTNNbWEwLUNm S2dlYW1rNUVqU1NfOXRaNlN5NDdBdTdxRWMiLCJjT3lySEVrSlZwdEtSdURtNkNZVTREajJvRkExd0 JQRjFHcTJnWEo1NXpzIl19LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJh Y2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsibVNfSVBMa0JHcTIxbVA3Z0VRaHhOck E0ZXNMc1ZKQ1E5QUpZNDFLLVRQSSJdfSwiX3NkIjpbIlhTSG9iU05Md01PVl9QNkhQMHNvMnZ1clNy VXZ3UURYREJHQWtyTXk3TjgiXX0sIl9zZCI6WyJQNE5qWHFXa2JOc1NfRzdvdmlLdm1NOG0yckhDTm 5XVVV2SXZBbW9jb2RZIiwieFNvSHBKUXlCNGV1dmg4SkFJdDFCd1pjNFVEOHY5S3ZOTmVLMk9OSjFC QSJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2 lzc3VlcnMvNTY1MDQ5IiwiaWF0IjoxNzAzNjI1OTAxLCJleHAiOjE3MzUyNDgzMDEsImNuZiI6eyJq d2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6Inl1Zlo1SFUzcU NfOTRMbkI3Zklzd0hmT0swQlJra0Z5bzVhd1QyX21ld0tJWUpLMVNfR0QySVB3UjRYUTZpdFEiLCJ5 IjoiRmEtV2pOd2NLQ1RWWHVDU2tCY3RkdHJOYzh6bXdBTTZWOWxudmxxd1QyQnRlQ0ZHNmR6ZDJoMF VjeXluTDg0dCJ9fX0 . M7BFJB9LEV_xEylSJpP00fd_4WjrOlXshh0dUv3QgOzw2MEGIfSfi9PoCkHJH7TI0InsqkD6XZVz38 MpeDKekgBW-RoDdJmxnifYOEJhKpJ5EN9PvA007UPi9QCaiEzX ~ WyJFX3F2V09NWVQ1Z3JNTkprOHNXN3BBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbG UvY3JlZGVudGlhbHMvMTg3MiJd ~ WyJTSEc4WnpfRDVRbFMwU0ZrZFUzNXlRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIi wgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d ~ WyJqZzJLRno5bTFVaGFiUGtIaHV4cXRRIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbX BsZXMvZGVncmVlLmpzb24iXQ ~ WyItQmhzaE10UnlNNUVFbGt4WGVXVm5nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJ0SEFxMEUwN nY2ckRuUlNtSjlSUWRBIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd ~ WyJ1Ynd6bi1kS19tMzRSMGI0SG84QTBBIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ
The enveloping proof above secures the original credential by encapsulating the original data in a digital signature envelope, resulting in a verifiable credential that can be processed using tooling that understands the SD-JWT format.
Verifiable presentations MAY be used to aggregate information from multiple verifiable credentials .
Verifiable presentations SHOULD be extremely short-lived and bound to a challenge provided by a verifier . Details for accomplishing this depend on the securing mechanism, the transport protocol, and verifier policies. Unless additional requirements are defined by the particular securing mechanism or embedding protocol, a verifier cannot generally assume that the verifiable presentation correlates with the presented verifiable credentials .
The default graph of a verifiable presentation is also referred to as the verifiable presentation graph .
The following properties are defined for a verifiable presentation :
id
property
is
optional.
It
MAY
be
used
to
provide
a
unique
identifier
for
the
verifiable
presentation
.
If
present,
the
normative
guidance
in
Section
4.4
Identifiers
MUST
be
followed.
type
property
MUST
be
present.
It
is
used
to
express
the
type
of
verifiable
presentation
.
One
value
of
this
property
MUST
be
VerifiablePresentation
,
but
additional
types
MAY
be
included.
The
related
normative
guidance
in
Section
4.5
Types
MUST
be
followed.
verifiableCredential
property
MAY
be
present.
The
value
MUST
be
one
or
more
verifiable
credential
and/or
enveloped
verifiable
credential
objects
(the
values
MUST
NOT
be
non-object
values
such
as
numbers,
strings,
or
URLs).
These
objects
are
called
verifiable
credential
graphs
and
MUST
express
information
that
is
secured
using
a
securing
mechanism
.
See
Section
5.12
Verifiable
Credential
Graphs
for
further
details.
holder
property
.
If
present,
the
value
MUST
be
either
a
URL
or
an
object
containing
an
id
property
.
It
is
RECOMMENDED
that
the
URL
in
the
holder
or
its
id
be
one
which,
if
dereferenced,
results
in
a
document
containing
machine-readable
information
about
the
holder
that
can
be
used
to
verify
the
information
expressed
in
the
verifiable
presentation
.
If
the
holder
property
is
absent,
information
about
the
holder
is
obtained
either
via
the
securing
mechanism
or
does
not
pertain
to
the
validation
of
the
verifiable
presentation
.
The example below shows a verifiable presentation :
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"type": ["VerifiablePresentation", "ExamplePresentation"],
"verifiableCredential": [{ ... }]
}
The
contents
of
the
verifiableCredential
property
shown
above
are
verifiable
credential
graphs
,
as
described
by
this
specification.
It
is
possible
for
a
verifiable
presentation
to
include
one
or
more
verifiable
credentials
that
have
been
secured
using
a
securing
mechanism
that
"envelopes"
the
payload,
such
as
Securing
Verifiable
Credentials
using
JOSE
and
COSE
[
VC-JOSE-COSE
].
This
can
be
accomplished
by
associating
the
verifiableCredential
property
with
an
object
that
has
a
type
of
EnvelopedVerifiableCredential
.
verifiableCredential
property
in
a
verifiable
presentation
.
The
@context
property
of
the
object
MUST
be
present
and
include
a
context,
such
as
the
base
context
for
this
specification
,
that
defines
at
least
the
id
,
type
,
and
EnvelopedVerifiableCredential
terms
as
defined
by
the
base
context
provided
by
this
specification.
The
id
value
of
the
object
MUST
be
a
data:
URL
[
RFC2397
]
that
expresses
a
secured
verifiable
credential
using
an
enveloping
security
scheme,
such
as
Securing
Verifiable
Credentials
using
JOSE
and
COSE
[
VC-JOSE-COSE
].
The
type
value
of
the
object
MUST
be
EnvelopedVerifiableCredential
.
The example below shows a verifiable presentation that contains an enveloped verifiable credential :
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": ["VerifiablePresentation", "ExamplePresentation"],
"verifiableCredential": [{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+sd-jwt,QzVjV...RMjU",
"type": "EnvelopedVerifiableCredential"
}]
}
It
is
possible
that
an
implementer
might
want
to
process
the
object
described
in
this
section
and
the
enveloped
presentation
expressed
by
the
id
value
in
an
RDF
environment
and
create
linkages
between
the
objects
that
are
relevant
to
RDF.
The
desire
and
mechanisms
for
doing
so
are
use
case
dependent
and
will,
thus,
be
implementation
dependent.
It
is
possible
to
express
a
verifiable
presentation
that
has
been
secured
using
a
mechanism
that
"envelops"
the
payload,
such
as
Securing
Verifiable
Credentials
using
JOSE
and
COSE
[
VC-JOSE-COSE
].
This
can
be
accomplished
by
using
an
object
that
has
a
type
of
EnvelopedVerifiablePresentation
.
@context
property
of
the
object
MUST
be
present
and
include
a
context,
such
as
the
base
context
for
this
specification
,
that
defines
at
least
the
id
,
type
,
and
EnvelopedVerifiablePresentation
terms
as
defined
by
the
base
context
provided
by
this
specification.
The
id
value
of
the
object
MUST
be
a
data:
URL
[
RFC2397
]
that
expresses
a
secured
verifiable
presentation
using
an
enveloping
securing
mechanism,
such
as
Securing
Verifiable
Credentials
using
JOSE
and
COSE
[
VC-JOSE-COSE
].
The
type
value
of
the
object
MUST
be
EnvelopedVerifiablePresentation
.
The example below shows an enveloped verifiable presentation :
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vp+jwt,eyJraWQiO...zhwGfQ",
"type": "EnvelopedVerifiablePresentation"
}
Some zero-knowledge cryptography schemes might enable holders to indirectly prove they hold claims from a verifiable credential without revealing all claims in that verifiable credential . In these schemes, a verifiable credential might be used to derive presentable data, which is cryptographically asserted such that a verifier can trust the value if they trust the issuer .
Some selective disclosure schemes can share a subset of claims derived from a verifiable credential .
For an example of a ZKP-style verifiable presentation containing derived data instead of directly embedded verifiable credentials , see Section 5.7 Zero-Knowledge Proofs .
A
holder
MAY
use
the
verifiableCredential
property
in
a
verifiable
presentation
to
include
verifiable
credentials
from
any
issuer
,
including
themselves.
When
the
issuer
of
a
verifiable
credential
is
the
holder
,
the
claims
in
that
verifiable
credential
are
considered
self-asserted
.
Such
self-asserted
claims
can
be
secured
by
the
same
mechanism
that
secures
the
verifiable
presentation
in
which
they
are
included
or
by
any
mechanism
usable
for
other
verifiable
credentials
.
The
subject(s)
of
these
self-asserted
claims
are
not
limited,
so
these
claims
can
include
statements
about
the
holder
,
one
of
the
other
included
verifiable
credentials
or
even
the
verifiable
presentation
in
which
the
self-asserted
verifiable
credential
is
included.
In
each
case,
the
id
property
is
used
to
identify
the
specific
subject
,
in
the
object
where
the
claims
about
it
are
made,
just
as
it
is
done
in
verifiable
credentials
that
are
not
self-asserted.
A
verifiable
presentation
that
includes
a
self-asserted
verifiable
credential
,
which
is
secured
only
using
the
same
mechanism
as
the
verifiable
presentation
,
MUST
include
a
holder
property
.
All of the normative requirements defined for verifiable credentials apply to self-asserted verifiable credentials .
A
verifiable
credential
in
a
verifiable
presentation
is
considered
self-asserted
when
the
value
of
the
issuer
property
of
the
verifiable
credential
is
identical
to
the
value
of
the
holder
property
of
the
verifiable
presentation
.
The example below shows a verifiable presentation that embeds a self-asserted verifiable credential that is secured using the same mechanism as the verifiable presentation .
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "type": ["VerifiablePresentation", "ExamplePresentation"], "holder": "did:example:12345678", "verifiableCredential": [{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "type": ["VerifiableCredential", "ExampleFoodPreferenceCredential"], "issuer": "did:example:12345678", "credentialSubject": { "favoriteCheese": "Gouda" }, { ... } }], "proof": [{ ... }] }
The example below shows a verifiable presentation that embeds a self-asserted verifiable credential holding claims about the verifiable presentation . It is secured using the same mechanism as the verifiable presentation .
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "type": ["VerifiablePresentation", "ExamplePresentation"], "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b", "holder": "did:example:12345678", "verifiableCredential": [{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "type": ["VerifiableCredential", "ExampleAssertCredential"], "issuer": "did:example:12345678", "credentialSubject": { "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b", "assertion": "This VP is submitted by the subject as evidence of a legal right to drive" }, "proof": { ... } }], "proof": { ... } }
Building on the concepts introduced in Section 4. Basic Concepts , this section explores more complex topics about verifiable credentials .
This section is non-normative.
The verifiable credentials trust model is based on the following expectations:
Where no pre-existing trust relationship exists, the holder might have some out-of-band means of determining whether the issuer is qualified to issue the verifiable credential being provided.
Note: It is not always necessary for the holder to trust the issuer , since the issued verifiable credential might be an assertion about a subject who is not the holder , or about no-one, and the holder might be willing to relay this information to a verifier without being held accountable for its veracity.
This trust model differentiates itself from other trust models by ensuring the following:
How verifiers decide which issuers to trust, and for what data or purposes, is out of scope for this recommendation. Some issuers , such as well-known organizations, might be trusted by many verifiers simply because of their reputation. Some issuers and verifiers might be members of a community in which all members trust each other due to the rules of membership. Some verifiers might trust a specific trust-service provider whose responsibility is to vet issuers and list them in a trust list such as those specified in Electronic Signatures and Infrastructures (ESI); Trusted Lists [ ETSI-TRUST-LISTS ] or the Adobe Approved Trust List .
By decoupling the expectations between the issuer and the verifier , a more flexible and dynamic trust model is created, such that market competition and customer choice is increased.
For more information about how this trust model interacts with various threat models studied by the Working Group, see the Verifiable Credentials Use Cases [ VC-USE-CASES ].
The data model detailed in this specification does not imply a transitive trust model, such as that provided by more traditional Certificate Authority trust models. In the Verifiable Credentials Data Model, a verifier either directly trusts or does not trust an issuer . While it is possible to build transitive trust models using the Verifiable Credentials Data Model, implementers are urged to learn about the security weaknesses introduced by broadly delegating trust in the manner adopted by Certificate Authority systems.
One of the goals of the Verifiable Credentials Data Model is to enable permissionless innovation. To achieve this, the data model needs to be extensible in a number of different ways. The data model is required to:
This approach to data modeling is often called an open world assumption , meaning that any entity can say anything about any other entity. While this approach seems to conflict with building simple and predictable software systems, balancing extensibility with program correctness is always more challenging with an open world assumption than with closed software systems.
The rest of this section describes, through a series of examples, how both extensibility and program correctness are achieved.
Let us assume we start with the credential shown below.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": ["VerifiableCredential"], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": [ "VerifiableCredential" ], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z51DMEJYVzT2DnKyNX5kT945WWZ2ikvAFAUYXCyL3xbX7E89DyaxaHDw upasxViNwQv3T8LcZzSyVwJQteF1FU6Ly""proofValue": "zzAZc4e7vR5zkYgunSxqH7iY2vEoMShPVJBYPCs347yGk4HrFJY8KE8G ZFGDkLbeosRg5ndbHMCMKTs2hvUP3AjR" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": [ "VerifiableCredential" ], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z5vunvjNEGrNjnPnpGd4GVJRkoAH2T5VAB8XPEN4N4LzKoVYYyazDTnA NnAxeCgQkj7bg5D2KEUqoUrCnHooXeQXL""proofValue": "z3KVF4SNHh2WFpaqdj9qFPYtNBRwA7JdNpxBUkq7BtuLa6kKrbypzm5Q ikRhbPe3YcxFmZHLLSsBR4SoGL7Wb6Yam" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": [ "VerifiableCredential" ], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhA0-mGlKZemmlnDqINK8SXjo4894GpSJlyc3t-CDAMPTWEOxa Nr0OxU1mGnh0ywORS8tCOBd0uNZgOQ9n_DNzIxVgjgCQDPKGLbXgwF4Nk6X-sS_dWwQLtFcpi8a _7OQRwX_8x-udYIFrVmOyDnOV7VgKCUa5oo8LocuC2tLIVyzjo8Byqf213g1hAikP4bOxjDim27 FpxxLq92jixWKtdDOGMa2mUSmmi4fn_qS08zvU9gQR1ehw5M3Y_VIbCbav-kUE7qzwxHgXBBVhA qrq74Bf0FH-GN0x09lMr1TbjTkv20-23ysQ-iKEaSY2BHSoH2jPTDbTboUS1sL7JOVJYxz315n7 XkAx7R5_mN1hA3x0AsqlFF9HEj5QVUiO4TnB05PjdLTRJoicDshZxcD6EqfQspovAJEcWic09e_ eHVMWK2t1ez-FvZpws-zKGHIFnL2lzc3Vlcg""proofValue": "u2V0AhVhActeDP7sWJF55J02twrLu2SMVyg3d6R0oFG4OcAfR9WH5_se 7TmZfSZdiFCsOc21k2ua5gKCC7EUmw7hENv14bVgjgCQCL8BVK0AtrLtsnjJkGj6ptb7RUNJdX_ J3r26NZ3RRGqdYILN2ImyJpKCmf2CXqNOEpWu0kdxZWwvhzcpT8ZlSZ8evg1hAPlrA_gLNybDrQ Ln_PbQoqJmO8wSlfj7lIBoWnytvDKQG2hKSY8EZtMa5nWnFiVwTwtElpNkApE2Dr19cvvaXNlhA VINKjodkRTbqvpUfReOfrdAVdbJpgWnbB7VL0J8oYbx9Qnio5F1AejizIgtaBoSk_DZHo0cEG49 iQX_Xkqso2VhA3Jk1Et9pEh8zu1jcY8DQNX1ViT6DjXbs293cKiBqzAMDm0ACgTk1bGTYPW3hPa GlbGyjZjGGmx_rbAg3eyuneIFnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": [ "VerifiableCredential" ], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQll8SbI9eYji1_DtlLGVgkXSN172MTom-K248CUJzIIfEWlz ZWoSESAenQUlk2mRpGhoivEdlz1mFpOYgC_4fMWiZji-v8eRDTEkEA0a4yfNYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzvqENcCm8D2khyMGr7-FGFdx818_ufbFmo8hKn_2FgMpYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFggtPWIXcxq7N99BpFg4qT eiIBPZ3yHXTNJpRp_UDtvExWBZy9pc3N1ZXI""proofValue": "u2V0ChVhQuXo6buNbcmanJfi7ngUurpx1Kz_ax7yRb-g4GU4SF8j-618 u9zWVVZWUnqlkZIjGNwvlPrm0Dn5hrMw0iz8s-56gHpIj3OHjN7w9qB3E1HBYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmvqENcCm8D2khyMGr7-FGFdx818_ufbFmo8hKn_2FgMpYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggQEo-EvVo_tsFEKqZo4f YT3ULVpHpgYC-vlJpjFUAUQ6BZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": [ "VerifiableCredential" ], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://vc.example/credentials/4643", "type": [ "VerifiableCredential" ], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe" } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...65227d7d',
/ signature / h'2f98b12e...6f38e251'
/ signature / h'd61e70ff...e7c49f7f'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://issuer.example/issuers/14",
"validFrom": "2018-02-24T05:28:04Z",
"credentialSubject": {
"name": "Jane Doe",
"_sd": [
"xO09gesJmw9GxLjyeaAvGr75S4-4y9qwgPsgWUo7J14""EYFMGT5Oj5sabDaWF0QB9oyYzowNL0YxPgXQFJq_q7I"
]
},
"_sd": [
"oF1jVJviPRh837BLbL03FU2DbBlDLORUjuAun_eYMtA","D01T0mibtLTnIqNHfxIbiXdJ2rf3bvy4tQJR_hUpKfs",
"tsRLKruLsctRE3zUtCcZ3VYlukQl5uMMG6E0tH0C4Zc""YrWz9hlSPBxeaOrrGwKSxQD9XB8xtHirIt31Pn0UZI0"
]
}
SHA-256
Hash:
oF1jVJviPRh837BLbL03FU2DbBlDLORUjuAun_eYMtA
D01T0mibtLTnIqNHfxIbiXdJ2rf3bvy4tQJR_hUpKfs
Disclosure(s):
WyJpUktRbkQtX3VYbjE5Y3JTSVhXejJRIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ
WyJkUi11R0JfUXBoSC1jNUczWUxNNTdBIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ
Contents:
[
"iRKQnD-_uXn19crSIXWz2Q",
"dR-uGB_QphH-c5G3YLM57A",
"id",
"http://vc.example/credentials/4643"
]
SHA-256
Hash:
tsRLKruLsctRE3zUtCcZ3VYlukQl5uMMG6E0tH0C4Zc
YrWz9hlSPBxeaOrrGwKSxQD9XB8xtHirIt31Pn0UZI0
Disclosure(s):
WyJNQUx4MU1idGJHdkhWWEx4LTFxUGdnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d
WyJwS3NlcE9CQmdUeFBOdGdtVGRRV0p3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d
Contents:
[
"MALx1MbtbGvHVXLx-1qPgg",
"pKsepOBBgTxPNtgmTdQWJw",
"type",
[
"VerifiableCredential"
]
]
SHA-256
Hash:
xO09gesJmw9GxLjyeaAvGr75S4-4y9qwgPsgWUo7J14
EYFMGT5Oj5sabDaWF0QB9oyYzowNL0YxPgXQFJq_q7I
Disclosure(s):
WyJEN3RVeWpmZUNHMDQyWXpKclIyeVV3IiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ
WyJGQVlvVnFJRzdFU2t0SklLOS0wRlB3IiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ
Contents:
[
"D7tUyjfeCG042YzJrR2yUw",
"FAYoVqIG7ESktJIK9-0FPw",
"id",
"did:example:abcdef1234567"
]
This
verifiable
credential
states
that
the
entity
associated
with
did:example:abcdef1234567
has
a
name
with
a
value
of
Jane
Doe
.
Now let us assume a developer wants to extend the verifiable credential to store two additional pieces of information: an internal corporate reference number, and Jane's favorite food.
The first thing to do is to create a JSON-LD context containing two new terms, as shown below.
{ "@context": { "referenceNumber": "https://extension.example/vocab#referenceNumber", "favoriteFood": "https://extension.example/vocab#favoriteFood" } }
After
this
JSON-LD
context
is
created,
the
developer
publishes
it
somewhere
so
it
is
accessible
to
verifiers
who
will
be
processing
the
verifiable
credential
.
Assuming
the
above
JSON-LD
context
is
published
at
https://extension.example/my-contexts/v1
,
we
can
extend
this
example
by
including
the
context
and
adding
the
new
properties
and
credential
type
to
the
verifiable
credential
.
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2", "https://extension.example/my-contexts/v1" ], "id": "http://vc.example/credentials/4643", "type": ["VerifiableCredential", "CustomExt12"], "issuer": "https://issuer.example/issuers/14", "validFrom": "2018-02-24T05:28:04Z", "referenceNumber": 83294847, "credentialSubject": { "id": "did:example:abcdef1234567", "name": "Jane Doe", "favoriteFood": "Papaya" } }
This example demonstrates extending the Verifiable Credentials Data Model in a permissionless and decentralized way. The mechanism shown also ensures that verifiable credentials created in this way provide a way to prevent namespace conflicts and semantic ambiguity.
A dynamic extensibility model such as this does increase the implementation burden. Software written for such a system has to determine whether verifiable credentials with extensions are acceptable based on the risk profile of the application. Some applications might accept only certain extensions while highly secure environments might not accept any extensions. These decisions are up to the developers of these applications and are specifically not the domain of this specification.
Extension specification authors are urged to ensure that their documents, such as JSON-LD Contexts, are highly available. Developers using these documents might use software that produces errors when these documents cannot be retrieved. Strategies for ensuring that extension JSON-LD contexts are always available include bundling these documents with implementations, content distribution networks with long caching timeframes, or using content-addressed URLs for contexts. These approaches are covered in further detail in Appendix B. Contexts, Vocabularies, Types, and Credential Schemas .
Implementers are advised to pay close attention to the extension points in this specification, such as in Sections 4.10 Status , 4.11 Data Schemas , 4.12 Securing Mechanisms , 5.4 Refreshing , 5.5 Terms of Use , and 5.6 Evidence . While this specification does not define concrete implementations for those extension points, the Verifiable Credential Extensions document provides an unofficial, curated list of extensions that developers can use from these extension points.
When defining new terms in an application-specific vocabulary, vocabulary authors SHOULD follow the detailed checklist in Best Practices for Publishing Linked Data . Specifically, the following guidance is of particular importance:
Furthermore,
a
machine-readable
description
(that
is,
a
JSON-LD
Context
document
)
MUST
be
published
at
the
URL
specified
in
the
@context
property
for
the
vocabulary.
This
context
MUST
map
each
term
to
its
corresponding
URL,
possibly
accompanied
by
further
constraints
like
the
type
of
the
property
value.
A
human-readable
document
describing
the
expected
order
of
values
for
the
@context
property
is
also
expected
to
be
published
by
any
implementer
seeking
interoperability.
When processing the active context defined by the base JSON-LD Context document defined in this specification , compliant JSON-LD-based processors produce an error when a JSON-LD context redefines any term. The only way to change the definition of existing terms is to introduce a new term that clears the active context within the scope of that new term. Authors that are interested in this feature should read about the @protected keyword in the JSON-LD 1.1 specification.
A
conforming
document
SHOULD
NOT
use
the
@vocab
feature
in
production
as
it
can
lead
to
JSON
term
clashes,
resulting
in
semantic
ambiguities
with
other
applications.
Instead,
to
achieve
proper
interoperability,
a
conforming
document
SHOULD
use
JSON-LD
Contexts
that
define
all
terms
used
by
their
applications,
as
described
earlier
in
Section
5.2
Extensibility
.
If
a
conforming
document
does
not
use
JSON-LD
Contexts
that
define
all
terms
used,
it
MUST
include
the
https://www.w3.org/ns/credentials/undefined-terms/v2
as
the
last
value
in
the
@context
property.
It
is
useful
for
systems
to
enable
the
manual
or
automatic
refresh
of
an
expired
verifiable
credential
.
For
more
information
about
validity
periods
for
verifiable
credentials
,
see
Section
A.7
Validity
Periods
.
This
specification
defines
a
refreshService
property
,
which
enables
an
issuer
to
include
a
link
to
a
refresh
service.
The issuer can include the refresh service as an element inside the verifiable credential if it is intended for either the verifier or the holder (or both), or inside the verifiable presentation if it is intended for the holder only. In the latter case, this enables the holder to refresh the verifiable credential before creating a verifiable presentation to share with a verifier . In the former case, including the refresh service inside the verifiable credential enables either the holder or the verifier to perform future updates of the credential .
The
refresh
service
is
only
expected
to
be
used
when
either
the
credential
has
expired
or
the
issuer
does
not
publish
credential
status
information.
Issuers
are
advised
not
to
put
the
refreshService
property
in
a
verifiable
credential
that
does
not
contain
public
information
or
whose
refresh
service
is
not
protected
in
some
way.
refreshService
property
MUST
be
one
or
more
refresh
services
that
provides
enough
information
to
the
recipient's
software
such
that
the
recipient
can
refresh
the
verifiable
credential
.
Each
refreshService
value
MUST
specify
its
type
.
The
precise
content
of
each
refresh
service
is
determined
by
the
specific
refreshService
type
definition.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://w3id.org/age/v1"
],
"type": ["VerifiableCredential", "AgeVerificationCredential"],
"issuer": "did:key:z6MksFxi8wnHkNq4zgEskSZF45SuWQ4HndWSAVYRRGe9qDks",
"validFrom": "2024-04-03T00:00:00.000Z",
"validUntil": "2024-12-15T00:00:00.000Z",
"name": "Age Verification Credential",
"credentialSubject": {
"overAge": 21
},
"refreshService": {
"type": "VerifiableCredentialRefreshService2021",
"url": "https://registration.provider.example/flows/reissue-age-token",
"refreshToken": "z2BJYfNtmWRiouWhDrbDQmC2zicUPBxsPg"
}
}
In
the
example
above,
the
issuer
specifies
an
automatic
refreshService
that
can
be
used
by
POSTing
the
verifiable
credential
to
the
refresh
service
url
.
Note
that
this
particular
verifiable
credential
is
not
intended
to
be
shared
with
anyone
except
for
the
original
issuer.
Placing
a
refreshService
property
in
a
verifiable
credential
so
that
it
is
available
to
verifiers
can
remove
control
and
consent
from
the
holder
and
allow
the
verifiable
credential
to
be
issued
directly
to
the
verifier
,
thereby
bypassing
the
holder
.
Terms
of
use
can
be
used
by
an
issuer
or
a
holder
to
communicate
the
terms
under
which
a
verifiable
credential
or
verifiable
presentation
was
issued.
The
issuer
places
their
terms
of
use
inside
the
verifiable
credential
.
The
holder
places
their
terms
of
use
inside
a
verifiable
presentation
.
This
specification
defines
a
termsOfUse
property
for
expressing
terms
of
use
information.
The
value
of
the
termsOfUse
property
might
be
used
to
tell
the
verifier
any
or
all
of
the
following,
among
other
things:
termsOfUse
property
MUST
specify
one
or
more
terms
of
use
policies
under
which
the
creator
issued
the
credential
or
presentation
.
If
the
recipient
(a
holder
or
verifier
)
is
not
willing
to
adhere
to
the
specified
terms
of
use,
then
they
do
so
on
their
own
responsibility
and
might
incur
legal
liability
if
they
violate
the
stated
terms
of
use.
Each
termsOfUse
value
MUST
specify
its
type
,
for
example,
TrustFrameworkPolicy
,
and
MAY
specify
its
instance
id
.
The
precise
contents
of
each
term
of
use
is
determined
by
the
specific
termsOfUse
type
definition.
{
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/undefined-terms/v2"
],
"id": "urn:uuid:08e26d22-8dca-4558-9c14-6e7aa7275b9b",
"type": [
"VerifiableCredential",
"VerifiableAttestation",
"VerifiableTrustModel",
"VerifiableAuthorisationForTrustChain"
],
"issuer": "did:ebsi:zZeKyEJfUTGwajhNyNX928z",
"validFrom": "2021-11-01T00:00:00Z",
"validUntil": "2024-06-22T14:11:44Z",
"credentialSubject": {
"id": "did:ebsi:zvHWX359A3CvfJnCYaAiAde",
"reservedAttributeId": "60ae46e4fe9adffe0bc83c5e5be825aafe6b5246676398cd1ac36b8999e088a8",
"permissionFor": [{
"schemaId": "https://api-test.ebsi.eu/trusted-schemas-registry/v3/schemas/zHgbyz9ajVuSProgyMhsiwpcp8g8aVLFRNARm51yyYZp6",
"types": [
"VerifiableCredential",
"VerifiableAttestation",
"WorkCertificate"
],
"jurisdiction": "https://publications.europa.eu/resource/authority/atu/EUR"
}]
},
"termsOfUse": {
"type": "TrustFrameworkPolicy",
"trustFramework": "Employment&Life",
"policyId": "https://policy.example/policies/125",
"legalBasis": "professional qualifications directive"
},
"credentialStatus": {
"id": "https://api-test.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvHWX359A3CvfJnCYaAiAde/attributes/60ae46e4fe9adffe0bc83c5e5be825aafe6b5246676398cd1ac36b8999e088a8",
"type": "EbsiAccreditationEntry"
},
"credentialSchema": {
"id": "https://api-test.ebsi.eu/trusted-schemas-registry/v3/schemas/zCSHSDwrkkd32eNjQsMCc1h8cnFaxyTXP5ByozyVQXZoH",
"type": "JsonSchema"
}
}
}
In the example above, the issuer is asserting that the legal basis under which the verifiable credential has been issued is the "professional qualifications directive" using the "Employment&Life" trust framework, with a specific link to the policy.
This feature is expected to be used by government-issued verifiable credentials to instruct digital wallets to limit their use to similar government organizations in an attempt to protect citizens from unexpected use of sensitive data. Similarly, some verifiable credentials issued by private industry are expected to limit use to within departments inside the organization, or during business hours. Implementers are urged to read more about this evolving feature in the appropriate section of the Verifiable Credentials Implementation Guidelines [ VC-IMP-GUIDE ] document.
Evidence can be included by an issuer to provide the verifier with additional supporting information in a verifiable credential . This could be used by the verifier to establish the confidence with which it relies on the claims in the verifiable credential . For example, an issuer could check physical documentation provided by the subject or perform a set of background checks before issuing the credential . In certain scenarios, this information is useful to the verifier when determining the risk associated with relying on a given credential .
This
specification
defines
the
evidence
property
for
expressing
evidence
information.
evidence
property
MUST
be
either
a
single
object
or
a
set
of
one
or
more
objects.
The
following
properties
are
defined
for
every
evidence
object:
id
property
is
OPTIONAL
.
It
MAY
be
used
to
provide
a
unique
identifier
for
the
evidence
object.
If
present,
the
normative
guidance
in
Section
4.4
Identifiers
MUST
be
followed.
type
property
is
REQUIRED
.
It
is
used
to
express
the
type
of
evidence
information
expressed
by
the
object.
The
related
normative
guidance
in
Section
4.5
Types
MUST
be
followed.
For information about how attachments and references to credentials and non-credential data might be supported by the specification, see Section 5.3 Integrity of Related Resources .
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json" ], "id": "http://1edtech.edu/credentials/3732", "type": [ "VerifiableCredential", "OpenBadgeCredential" ], "issuer": { "id": "https://1edtech.edu/issuers/565049", "type": "Profile" }, "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "type": "AchievementSubject", "name": "Alice Smith", "activityEndDate": "2023-12-02T00:00:00Z", "activityStartDate": "2023-12-01T00:00:00Z", "awardedDate": "2024-01-01T00:00:00Z", "achievement": [{ "id": "urn:uuid:d46e8ef1-c647-419b-be18-5e045d1c4e64", "type": ["Achievement"], "name": "Basic Barista Training", "criteria": { "narrative": "Team members are nominated for this badge by their supervisors, after passing the Basic Barista Training course." }, "description": "This achievement certifies that the bearer is proficient in basic barista skills." }] }, "evidence": [{ // url to an externally hosted evidence file/artifact "id": "https://videos.example/training/alice-espresso.mp4", "type": ["Evidence"], "name": "Talk-aloud video of double espresso preparation", "description": "This is a talk-aloud video of Alice demonstrating preparation of a double espresso drink.", // digest hash of the mp4 video file "digestMultibase": "uELq9FnJ5YLa5iAszyJ518bXcnlc5P7xp1u-5uJRDYKvc" } ] }
In
the
evidence
example
above,
the
issuer
is
asserting
that
they
have
video
of
the
subject
of
the
credential
demonstrating
the
achievement.
The
evidence
property
provides
information
that
is
different
from
and
information
to
the
securing
mechanism
used.
The
evidence
property
is
used
to
express
supporting
information,
such
as
documentary
evidence,
related
to
the
verifiable
credential
.
In
contrast,
the
securing
mechanism
is
used
to
express
machine-verifiable
mathematical
proofs
related
to
the
authenticity
of
the
issuer
and
integrity
of
the
verifiable
credential
.
For
more
information
about
securing
mechanisms,
see
Section
4.12
Securing
Mechanisms
.
Zero-knowledge proofs are securing mechanisms which enable a holder to prove that they hold a verifiable credential containing a value without disclosing the actual value such as being able to prove that an individual is over the age of 25 without revealing their birthday. This data model supports being secured using zero-knowledge proofs.
Some capabilities that are compatible with verifiable credentials which are made possible by zero-knowledge proof mechanisms include:
Specification authors that create securing mechanisms MUST NOT design them in such a way that they leak information that would enable the verifier to correlate a holder across multiple verifiable presentations to different verifiers .
Not all capabilities are supported in all zero-knowledge proof mechanisms. Specific details about the capabilities and techniques provided by a particular zero knowledge proof mechanism, along with any normative requirements for using them with verifiable credentials , would be found in a specification for securing verifiable credentials with that zero-knowledge proof mechanism. For an example of such a specification, refer to the Data Integrity BBS Cryptosuites v1.0 .
We note that in most instances, for the holder to make use of zero knowledge mechanisms with verifiable credentials , the issuer is required to secure the verifiable credential in a manner that supports these capabilities.
The diagram below highlights how the data model might be used to issue and present verifiable credentials in zero-knowledge.
An example of a verifiable credential and a verifiable presentation using the Data Integrity BBS Cryptosuites v1.0 unlinkable selective disclosure securing mechanism is shown below.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://w3id.org/citizenship/v3"
],
"type": ["VerifiableCredential", "PermanentResidentCard"],
"issuer": {
"id": "did:web:credentials.utopia.example",
"image": "data:image/png;base64,iVBORw0KGgo...YII="
},
"identifier": "83627465",
"name": "Permanent Resident Card",
"description": "Government of Utopia Permanent Resident Card.",
"validFrom": "2024-08-01T00:00:00Z",
"validUntil": "2029-12-01T00:00:00Z",
"credentialSubject": {
"type": ["PermanentResident", "Person"],
"givenName": "JANE",
"familyName": "SMITH",
"gender": "Female",
"image": "data:image/png;base64,iVBORw0KGgoAA...Jggg==",
"residentSince": "2015-01-01",
"lprCategory": "C09",
"lprNumber": "999-999-999",
"commuterClassification": "C1",
"birthCountry": "Arcadia",
"birthDate": "1978-07-17"
},
"proof": {
"type": "DataIntegrityProof",
"verificationMethod": "did:web:playground.alpha.chapi.io#zUC75LjjCLGKRxSissX1nAebRDmY4Bv4T6MAbzgaap9Q8rAGf6SEjc2Hf4nH6bUPDwky3GWoYcUjMCcEqRRQfXEiNwfeDwNYLoeqk1J1W2Ye8vCdwv4fSd8AZ1yS6UoNzcsQoPS",
"cryptosuite": "bbs-2023",
"proofPurpose": "assertionMethod",
"proofValue": "u2V0ChVhQjYs9O7wUb3KRSMaIRX7jmafVHYDPYBLD4ta85_qmuXTBU_t2Ir7pNujwRE6fERsBUEZRSjJjtI-hqOqDs3VvBvH6gd3o2KeUS2V_zpuphPpYQEkapOeQgRTak9lHKSTqEQqa4j2lyHqekEeGvzPlqcHQGFccGifvLUXtP59jCuGJ86HDA9HL5kDzUT6n4Gi50HlYYIzNqhbjIxlqOuxO2IgIppSTWjQGeer34-PmKnOzKX8m_9DHPhif7TUf5uTV4OQWdhb0SxHnJ-CPu_z9FJ5ACekBQhz6YWS0_CY6j_ibucXzeVfZwLv1W47pjbt-l1Vl5VggSn2xVt69Q0GD9mPKpOhkKV_hyOL7i6haf7bq-gOKAwWDZy9pc3N1ZXJtL2lzc3VhbmNlRGF0ZW8vZXhwaXJhdGlvbkRhdGU"
}
}
The example above is a verifiable credential where the issuer has enabled a BBS-based unlinkable disclosure scheme to create a base proof that can then be used by the holder to create a derived proof that reveals only particular pieces of information from the original verifiable credential .
{
@context: "https://www.w3.org/ns/credentials/v2"
type: "VerifiablePresentation",
verifiableCredential: {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://w3id.org/citizenship/v3"
],
"type": ["VerifiableCredential", "PermanentResidentCard"],
"issuer": {
"id": "did:web:issuer.utopia.example",
"image": "data:image/png;base64,iVBORw0KGgo...YII="
},
"name": "Permanent Resident Card",
"description": "Government of Utopia Permanent Resident Card.",
"validFrom": "2024-08-01T00:00:00Z",
"validUntil": "2029-12-01T00:00:00Z",
"credentialSubject": {
"type": ["PermanentResident", "Person"],
"birthCountry": "Arcadia"
},
"proof": {
type: "DataIntegrityProof",
verificationMethod: "did:web:issuer.utopia.example#zUC75LjjCLGKRxSissX1nAebRDmY4Bv4T6MAbzgaap9Q8rAGf6SEjc2Hf4nH6bUPDwky3GWoYcUjMCcEqRRQfXEiNwfeDwNYLoeqk1J1W2Ye8vCdwv4fSd8AZ1yS6UoNzcsQoPS",
cryptosuite: "bbs-2023",
proofPurpose: "assertionMethod",
proofValue: "u2V0DhVkCkLdnshxHtgeHJBBUGPBqcEooPp9ahgqs08RsoqW5EJFmsi70jqf2X368VcmfdJdYcYJwObPIg5dlyaoBm34N9BqcZ4RlTZvgwX79ivGnqLALC0EqKn2wOj5hRO76xUakfLGIcT4mE-G7CxA1FTs8sRCWy5p6FozelBYiZU2YlhUpJ7pBwelZ9wnlcbj4q-KyxAj5GU2iWp7-FxU-E624DmdT-yvCkAGRRrYej6lMwg7jB9uCHypOXXH2dVZ-jpf74YBaE4rMTxPFh60GN4o3S65F1fMsJbEMLdrXa8Vs6ZSlmveUcY1X7oPr1UIxo17ehVTCjOxWunYqrtLi9cVkYOD2s9XMk1oFVWBB3UY29axXQQXlZVfvTIUsfVc667mnlYbF7a-ko_SUfeY2n3s1DOAap5keeNU0v2KVPCbxA2WGz7UJy4xJv2a8olMOWPKjAEUruCx_dsbyicd-9KGwhYoUEO3HoAzmtI6qXVhMbJKxPrhtcp8hOdD9izVS5ed4CxHNaDGPSopF_MBwjxwPcpUufNNNdQwesrbtFJo0-P-1CrX_jSxKFMle2b3t24UbHRbZw7QnX4OG-SSVucem5jpMXTDFZ8PLFCqXX0zncJ_MQ-_u-liE-MwJu3ZemsXBp1JoB2twS0TqDVzSWR7bpFZKI9_07fKUAmQNSV_no9iAgYRLuPrnnsW1gQgCV-nNqzbcCOpzkHdCqro6nPSATq5Od3Einfc683gm5VGWxIldM0aBPytOymNz7PIZ6wkgcMABMe5Vw46B54ftW-TN5YZPDmCJ_kt7Mturn0OeQr9KJCu7S0I-SN14mL9KtGE1XDnIeR-C_YZhSA3vX4923v1l3vNFsKasqy9iEPHKM0hcogABAQCGAAECBAUGhAMJCgtYUnsiY2hhbGxlbmdlIjoiNGd2OFJyaERPdi1OSHByYlZNQlM1IiwiZG9tYWluIjoiaHR0cHM6Ly9wbGF5Z3JvdW5kLmFscGhhLmNoYXBpLmlvIn0"
}
}
}
The verifiable presentation above includes a verifiable credential that contains an unlinkable subset of the information from the previous example and a derived proof that the verifier can use to verify that the information originated from the expected issuer and is bound to this particular exchange of information.
Implementers are urged to understand that representing and processing time values is not as straight-forward as it might seem and have a variety of idiosyncrasies that are not immediately obvious nor uniformly observed in different regions of the world. For example:
2023-01-01T00:00:00Z
),
regardless
of
whether
the
system
in
question
understands
leap
seconds.
These
are
just
a
few
examples
that
illustrate
that
the
actual
time
of
day,
as
would
be
seen
on
a
clock
on
the
wall,
can
exist
in
one
region
but
not
exist
in
another
region.
For
this
reason,
implementers
are
urged
to
use
time
values
that
are
more
universal,
such
as
values
anchored
to
the
Z
time
zone
over
values
that
are
affected
by
Daylight
Saving/Summer
Time.
This
specification
attempts
to
increase
the
number
of
universally
recognized
combinations
of
dates
and
times,
and
reduce
the
potential
for
misinterpretation
of
time
values,
by
using
the
dateTimeStamp
construction
first
established
by
the
[
XMLSCHEMA11-2
]
specification.
In
order
to
reduce
misinterpretations
between
different
time
zones,
all
time
values
expressed
in
conforming
documents
SHOULD
be
specified
in
dateTimeStamp
format,
either
in
Universal
Coordinated
Time
(UTC),
denoted
by
a
Z
at
the
end
of
the
value,
or
with
a
time
zone
offset
relative
to
UTC.
Time
values
that
are
incorrectly
serialized
without
an
offset
MUST
be
interpreted
as
UTC.
Examples
of
valid
time
zone
offsets
relative
to
UTC
include
Z
,
+01:00
,
-08:00
,
and
+14:00
.
See
the
regular
expression
at
the
end
of
this
section
for
a
formal
definition
of
all
acceptable
values.
Time
zone
definitions
are
occasionally
changed
by
their
governing
body.
When
replacing
or
issuing
new
verifiable
credentials
,
implementers
are
advised
to
ensure
that
changes
to
local
time
zone
rules
do
not
result
in
unexpected
gaps
in
validity.
For
example,
consider
the
zone
America/Los_Angeles
,
which
has
a
raw
offset
of
UTC-8
and
had
voted
to
stop
observing
daylight
savings
time
in
the
year
2024.
A
given
verifiable
credential
that
had
a
validUtil
value
of
2024-07-12T12:00:00-07:00
,
might
be
re-issued
to
have
a
validFrom
value
of
2024-07-12T12:00:00-08:00
,
which
would
create
a
gap
of
an
hour
where
the
verifiable
credential
would
not
be
valid.
Implementers
that
desire
to
check
dateTimeStamp
values
for
validity
can
use
the
regular
expression
provided
below,
which
is
reproduced
from
the
[
XMLSCHEMA11-2
]
specification
for
convenience.
To
avoid
doubt,
the
regular
expression
in
[
XMLSCHEMA11-2
]
is
the
normative
definition.
Implementers
are
advised
that
not
all
dateTimeStamp
values
that
pass
the
regular
expression
below
are
valid
moments
in
time.
For
example,
the
regular
expression
below
allows
for
31
days
in
every
month,
which
allows
for
leap
years,
and
leap
seconds,
as
well
as
days
in
places
where
they
do
not
exist.
That
said,
modern
system
libraries
that
generate
dateTimeStamp
values
are
often
error-free
in
their
generation
of
valid
dateTimeStamp
values.
The
regular
expression
shown
below
(minus
the
whitespace
included
here
for
readability),
is
often
adequate
when
processing
library-generated
dates
and
times
on
modern
systems.
-?([1-9][0-9]{3,}|0[0-9]{3}) -(0[1-9]|1[0-2]) -(0[1-9]|[12][0-9]|3[01]) T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?)) (Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))
This section is non-normative.
Verifiable credentials are intended as a means of reliably identifying subjects . While it is recognized that Role Based Access Controls (RBACs) and Attribute Based Access Controls (ABACs) rely on this identification as a means of authorizing subjects to access resources, this specification does not provide a complete solution for RBAC or ABAC. Authorization is not an appropriate use for this specification without an accompanying authorization framework.
The Working Group did consider authorization use cases during the creation of this specification and is pursuing that work as an architectural layer built on top of this specification.
This specification reserves a number of properties to serve as possible extension points. While some implementers signaled interest in these properties, their inclusion in this specification was considered to be premature. It is important to note that none of these properties are defined by this specification. Consequently, implementers are cautioned that use of these properties is considered experimental.
Implementers MAY use these properties, but SHOULD expect them and/or their meanings to change during the process of normatively specifying them. Implementers SHOULD NOT use these properties without a publicly disclosed specification describing their implementation.
In
order
to
avoid
collisions
regarding
how
the
following
properties
are
used,
implementations
MUST
specify
a
type
property
in
the
value
associated
with
the
reserved
property.
For
more
information
related
to
adding
type
information,
see
Section
4.5
Types
.
Reserved Property | Description |
---|---|
confidenceMethod
|
A
property
used
for
specifying
one
or
more
methods
that
a
verifier
might
use
to
increase
their
confidence
that
the
value
of
a
property
in
or
of
a
verifiable
credential
or
verifiable
presentation
is
accurate.
The
associated
vocabulary
URL
MUST
be
https://www.w3.org/2018/credentials#confidenceMethod
.
|
renderMethod
|
A
property
used
for
specifying
one
or
more
methods
to
render
a
credential
into
a
visual,
auditory,
haptic,
or
other
format.
The
associated
vocabulary
URL
MUST
be
https://www.w3.org/2018/credentials#renderMethod
.
|
An unofficial list of specifications that are associated with the extension points defined in this specification, as well as the reserved extension points defined in this section, can be found in the Verifiable Credential Extensions . Items in the directory that refer to reserved extension points SHOULD be treated as experimental.
There are a number of digital credential formats that do not natively use the data model provided in this document, but are aligned with a number of concepts in this specification. At the time of publication, examples of these digital credential formats include JSON Web Tokens (JWTs), CBOR Web Tokens (CWTs), JSON Advanced Electronic Signature (JAdES), ISO-18013-5:2021 (mDLs), AnonCreds , Gordian Envelopes , and Authentic Chained Data Containers (ACDCs).
If conceptually aligned digital credential formats can be transformed into a conforming document according to the rules provided in this section, they are considered "compatible with the W3C Verifiable Credentials ecosystem" . Specification authors are advised to adhere to the following rules when documenting transformations that enable compatibility with the Verifiable Credentials ecosystem. The transformation specification —
@context
values
when
performing
round-trippable
transformation.
Readers are advised that a digital credential is only considered compatible with the W3C Verifiable Credentials ecosystem if it is a conforming document and it uses at least one securing mechanism, as described by their respective requirements in this specification. While some communities might call some digital credential formats that are not conforming documents "verifiable credentials", doing so does NOT make that digital credential compliant to this specification.
When
expressing
verifiable
credentials
(for
example
in
a
presentation
),
it
is
important
to
ensure
that
data
in
one
verifiable
credential
is
not
mistaken
to
be
the
same
data
in
another
verifiable
credential
.
For
example,
if
one
has
two
verifiable
credentials
,
each
containing
an
object
of
the
following
form:
{"type":
"Person",
"name":
"Jane
Doe"}
,
it
is
not
possible
to
tell
if
one
object
is
describing
the
same
person
as
the
other
object.
In
other
words,
merging
data
between
two
verifiable
credentials
without
confirming
that
they
are
discussing
the
same
entities
and/or
properties,
can
lead
to
a
corrupted
data
set.
To
ensure
that
data
from
different
verifiable
credentials
are
not
accidentally
co-mingled,
the
concept
of
a
verifiable
credential
graph
is
used
to
encapsulate
each
verifiable
credential
.
For
simple
verifiable
credentials
,
that
is,
when
the
JSON-LD
document
contains
a
single
credential
with,
possibly,
associated
proofs,
this
graph
is
the
default
graph
.
For
presentations
,
each
value
associated
with
the
verifiableCredential
property
of
the
presentation
is
a
separate
named
graph
of
type
VerifiableCredentialGraph
which
contains
a
single
verifiable
credential
or
an
enveloped
verifiable
credential
.
Using
these
graphs
has
a
concrete
effect
when
performing
JSON-LD
processing,
which
properly
separates
graph
node
identifiers
in
one
graph
from
those
in
another
graph.
Implementers
that
limit
their
inputs
to
application-specific
JSON-LD
documents
will
also
need
to
keep
this
in
mind
if
they
merge
data
from
one
verifiable
credential
with
data
from
another,
such
as
when
the
credentialSubject.id
is
the
same
in
both
verifiable
credentials
,
but
the
object
might
contain
objects
of
the
"Jane
Doe"
form
described
in
the
previous
paragraph.
It
is
important
to
not
merge
objects
that
seem
to
have
similar
properties
but
do
not
contain
an
id
property
that
uses
a
global
identifier,
such
as
a
URL.
As described in Section 4.12 Securing Mechanisms , there are multiple strategies that an implementer can use when securing a conforming document . In order to maximize utility and interoperability, specification authors that desire to author new ways of securing conforming documents are provided with the guidance in this section.
Securing mechanism specifications MUST document normative algorithms that provide content integrity protection for conforming documents . The algorithms MAY be general in nature and MAY be used to secure data other than conforming documents .
Securing
mechanism
specifications
MUST
provide
a
verification
algorithm
that
returns
the
information
in
the
conforming
document
that
has
been
secured,
in
isolation,
without
including
any
securing
mechanism
information,
such
as
proof
or
JOSE/COSE
header
parameters
and
signatures.
Verification
algorithms
MAY
return
additional
information
that
might
be
helpful
(for
example,
during
validation
or
for
debugging
purposes),
such
as
details
of
the
securing
mechanism.
A
verification
algorithm
MUST
provide
an
interface
that
receives
a
media
type
(
string
inputMediaType
)
and
input
data
(
byte
sequence
or
map
inputData
).
Securing
mechanism
specifications
MAY
provide
algorithms
and
interfaces
in
addition
to
the
ones
specified
in
this
document.
The
verification
algorithm
returns
a
verification
result
with
at
least
the
following
items
:
true
if
the
verification
succeeded
and
false
if
it
did
not.
Securing mechanism specifications SHOULD provide integrity protection for any information referenced by a URL that is critical to validation. Mechanisms that can achieve this protection are discussed in Section 5.3 Integrity of Related Resources and Section B.1 Base Context .
A securing mechanism specification that creates a new type of embedded proof MUST specify a property that relates the verifiable credential or verifiable presentation to a proof graph . The requirements on the securing mechanism are as follow:
@context
files
in
the
same
manner
as
they
are
used
by
this
specification.
The last requirement means that the securing mechanism secures the default graph and, for verifiable presentations , each verifiable credential of the presentation, together with their respective proof graphs . See also Figure 9 or Figure 14 .
The
proof
property
as
defined
in
[
VC-DATA-INTEGRITY
]
MAY
be
used
by
the
embedded
securing
mechanism.
Securing mechanism specifications SHOULD register the securing mechanism in the Securing Mechanisms section of the Verifiable Credential Extensions document.
There are multiple acceptable securing mechanisms, and this specification does not mandate any particular securing mechanism for use with verifiable credentials or verifiable presentations . The Working Group that produced this specification did standardize two securing mechanism options, which are: Verifiable Credential Data Integrity 1.0 [ VC-DATA-INTEGRITY ] and Securing Verifiable Credentials using JOSE and COSE [ VC-JOSE-COSE ]. Other securing mechanisms that are known to the community can be found in the Securing Mechanisms section of the Verifiable Credential Extensions document.
The
data
model
as
described
in
Sections
3.
Core
Data
Model
,
4.
Basic
Concepts
,
and
5.
Advanced
Concepts
is
the
canonical
structural
representation
of
a
verifiable
credential
or
verifiable
presentation
.
All
syntaxes
are
representations
of
that
data
model
in
a
specific
format.
This
section
specifies
how
the
data
model
is
serialized
in
JSON-LD
for
application/vc
and
application/vp
,
the
base
media
types
for
verifiable
credentials
and
verifiable
presentations
,
respectively.
Although
syntactic
mappings
are
only
provided
for
JSON-LD,
applications
and
services
can
use
any
other
data
representation
syntax
(such
as
XML,
YAML,
or
CBOR)
that
is
capable
of
being
mapped
back
to
application/vc
or
application/vp
.
As
the
verification
and
validation
requirements
are
defined
in
terms
of
the
data
model,
all
serialization
syntaxes
have
to
be
deterministically
translated
to
the
data
model
for
processing,
validation
,
or
comparison.
The
expected
arity
of
the
property
values
in
this
specification,
and
the
resulting
datatype
which
holds
those
values,
can
vary
depending
on
the
property.
If
present,
the
following
properties
are
represented
as
a
single
value:
id
(Section
4.4
Identifiers
),
issuer
(Section
4.7
Issuer
),
and
validFrom
/
validUntil
(Section
4.9
Validity
Period
).
All
other
properties,
if
present,
are
represented
as
either
a
single
value
or
an
array
of
values.
This specification uses JSON-LD 1.1 to serialize the data model described in this specification. JSON-LD is useful because it enables the expression of the graph-based data model on which verifiable credentials are based, machine-readable semantics , and is also useful when extending the data model (see Sections 3. Core Data Model and 5.2 Extensibility ).
JSON-LD is a JSON-based format used to serialize Linked Data . Linked Data is modeled using Resource Description Framework (RDF) [ RDF11-CONCEPTS ]. RDF is a technology for modeling graphs of statements. Each statement is a single subject→property→value (also known as entity→attribute→value ) relationship, which is referred to as a claim in this specification. JSON-LD is a technology that enables the expression of RDF using idiomatic JSON, enabling developers familiar with JSON to write applications that consume RDF as JSON. See Relationship of JSON-LD to RDF for more details.
In general, the data model and syntax described in this document enables developers to largely treat verifiable credentials as JSON documents, allowing them to copy and paste examples, with minor modification, into their software systems. The design goal of this approach is to provide a low barrier to entry while still ensuring global interoperability between a heterogeneous set of software systems. This section describes some of the JSON-LD features that are used to make this possible, which will likely go unnoticed by most developers, but whose details might be of interest to implementers. The most noteworthy features in JSON-LD 1.1 used by this specification include:
@id
and
@type
keywords
are
aliased
to
id
and
type
respectively,
enabling
developers
to
use
this
specification
as
idiomatic
JSON.
verifiableCredential
property
is
defined
as
a
JSON-LD
1.1
graph
container
.
This
requires
the
creation
of
named
graphs
,
used
to
isolate
sets
of
data
asserted
by
different
entities.
This
ensures,
for
example,
proper
cryptographic
separation
between
the
data
graph
provided
by
each
issuer
and
the
one
provided
by
the
holder
presenting
the
verifiable
credential
to
ensure
the
provenance
of
the
information
for
each
graph
is
preserved.
@protected
properties
feature
of
JSON-LD
1.1
is
used
to
ensure
that
terms
defined
by
this
specification
cannot
be
overridden.
This
means
that
as
long
as
the
same
@context
declaration
is
made
at
the
top
of
a
verifiable
credential
or
verifiable
presentation
,
interoperability
is
guaranteed
for
all
terms
understood
by
users
of
the
data
model
whether
or
not
they
use
a
JSON-LD
1.1
processor.
In
order
to
increase
interoperability,
this
specification
restricts
the
use
of
JSON-LD
representations
of
the
data
model.
JSON-LD
compacted
document
form
MUST
be
used
for
all
representations
of
the
data
model
using
the
application/vc
or
application/vp
media
type.
As
elaborated
upon
in
Section
6.3
Type-Specific
Credential
Processing
,
some
software
applications
might
not
perform
generalized
JSON-LD
processing.
Authors
of
conforming
documents
are
advised
that
interoperability
might
be
reduced
if
JSON-LD
keywords
in
the
@context
value
are
used
to
globally
affect
values
in
a
verifiable
credential
or
verifiable
presentation
,
such
as
by
setting
either
or
both
of
the
@base
or
@vocab
keywords.
For
example,
setting
these
values
might
trigger
a
failure
in
a
mis-implemented
JSON
Schema
test
of
the
@context
value
in
an
implementation
that
is
performing
type-specific
credential
processing
and
not
expecting
the
@base
and/or
@vocab
value
to
be
expressed
in
the
@context
value.
In order to increase interoperability, conforming document authors are urged to not use JSON-LD features that are not easily detected when performing type-specific credential processing . These features include:
@context
value
that
globally
modify
document
term
and
value
processing,
such
as
setting
@base
or
@vocab
@vocab
@context
property
https://www.w3.org/2018/credentials#VerifiableCredential
or
https://vocab.example/myvocab#SomeNewType
)
instead
of
the
short
forms
of
any
such
values
(for
example,
VerifiableCredential
or
SomeNewType
)
that
are
explicitly
defined
in
JSON-LD
@context
mappings
(for
example,
in
https://www.w3.org/ns/credentials/v2
)
While
this
specification
cautions
against
the
use
of
@vocab
,
there
are
legitimate
uses
of
the
feature,
such
as
to
ease
experimentation,
development,
and
localized
deployment.
If
an
application
developer
wants
to
use
@vocab
in
production,
which
is
advised
against
to
reduce
term
collisions
and
leverage
the
benefits
of
semantic
interoperability,
they
are
urged
to
understand
that
any
use
of
@vocab
will
disable
reporting
of
"undefined
term"
errors,
and
later
use(s)
will
override
any
previous
@vocab
declaration(s).
Different
values
of
@vocab
can
change
the
semantics
of
the
information
contained
in
the
document,
so
it
is
important
to
understand
whether
and
how
these
changes
will
affect
the
application
being
developed.
Lists, arrays, and even lists of lists, are possible when using JSON-LD 1.1 . We encourage those who want RDF semantics in use cases requiring lists and arrays to follow the guidance on lists in JSON-LD 1.1 .
In
general,
a
JSON
array
is
ordered,
while
a
JSON-LD
array
is
not
ordered
unless
that
array
uses
the
@list
keyword.
While it is possible to use this data model by performing type-specific credential processing , those who do so and make use of arrays need to be aware that unless the above guidance is followed, the order of items in an array are not guaranteed in JSON-LD. This might lead to unexpected behavior.
If
JSON
structure
or
ordering
is
important
to
your
application,
we
recommend
you
mark
such
elements
as
@json
via
an
@context
that
is
specific
to
your
use
case.
An
example
of
such
a
declaration
is
shown
below.
{
"@context":
{
"matrix": {
"@id": "https://website.example/vocabulary#matrix",
"@type": "@json"
}
}
}
When
the
context
shown
above
is
used
in
the
example
below,
by
including
the
https://website.example/matrix/v1
context
in
the
@context
property,
the
value
in
credentialSubject.matrix
retains
its
JSON
semantics;
the
exact
order
of
all
elements
in
the
two
dimensional
matrix
is
preserved.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2",
"https://website.example/matrix/v1"
],
"id": "http://university.example/credentials/1872",
"type": [
"VerifiableCredential",
"ExampleMatrixCredential"
],
"issuer": "https://university.example/issuers/565049",
"validFrom": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"matrix": [
[1,2,3,4,5,6,7,8,9,10,11,12],
[1,1,1,1,1,1,1,1,0,0,0,0],
[0,0,1,1,1,1,1,1,1,0,0,0]
]
}
}
Media types, as defined in [ RFC6838 ], identify the syntax used to express a verifiable credential as well as other useful processing guidelines.
Syntaxes used to express the data model in this specification SHOULD be identified by a media type, and conventions outlined in this section SHOULD be followed when defining or using media types with verifiable credentials .
There
are
two
media
types
associated
with
the
core
data
model,
which
are
listed
in
the
Section
C.
IANA
Considerations
:
application/vc
and
application/vp
.
The
application/vc
and
application/vp
media
types
do
not
imply
any
particular
securing
mechanism,
but
are
intended
to
be
used
in
conjunction
with
securing
mechanisms.
A
securing
mechanism
needs
to
be
applied
to
protect
the
integrity
of
these
media
types.
Do
not
assume
security
of
content
regardless
of
the
media
type
used
to
communicate
it.
This section is non-normative.
At times, developers or systems might use lower precision media types to convey verifiable credentials or verifiable presentations . Some of the reasons for use of lower precision media types include:
text/plain
or
application/octet-stream
when
a
file
extension
is
not
available
and
it
cannot
determine
the
media
type.
.json
could
result
in
a
media
type
of
application/json
and
.jsonld
might
result
in
a
media
type
of
application/ld+json
.
application/json
instead
of
application/vp
,
Implementers
are
urged
to
not
raise
errors
when
it
is
possible
to
determine
the
intended
media
type
from
a
payload,
provided
that
the
media
type
used
is
acceptable
in
the
given
protocol.
For
example,
if
an
application
only
accepts
payloads
that
conform
to
the
rules
associated
with
the
application/vc
media
type,
but
the
payload
is
tagged
with
application/json
or
application/ld+json
instead,
the
application
might
perform
the
following
steps
to
determine
whether
the
payload
also
conforms
to
the
higher
precision
media
type:
@context
property
matches
https://www.w3.org/ns/credentials/v2
.
application/vp
media
type
if
the
JSON
document
contains
a
top-level
type
property
containing
a
VerifiablePresentation
element.
Additional
subsequent
checks
are
still
expected
to
be
performed
(according
to
this
specification)
to
ensure
the
payload
expresses
a
conformant
verifiable
presentation
.
application/vc
media
type
if
the
JSON
document
contains
a
top-level
type
property
containing
a
VerifiableCredential
element.
Additional
subsequent
checks
are
still
expected
to
be
performed
(according
to
this
specification)
to
ensure
the
payload
expresses
a
conformant
verifiable
credential
.
Whenever possible, implementers are advised to use the most precise (the highest precision) media type for all payloads defined by this specification. Implementers are also advised to recognize that a payload tagged with a lower precision media type does not mean that the payload does not meet the rules necessary to tag it with a higher precision type. Similarly, a payload tagged with a higher precision media type does not mean that the payload will meet the requirements associated with the media type. Receivers of payloads, regardless of their associated media type, are expected to perform appropriate checks to ensure that payloads conform with the requirements for their use in a given system.
HTTP
clients
and
servers
use
media
types
associated
with
verifiable
credentials
and
verifiable
presentations
in
accept
headers
and
when
indicating
content
types.
Implementers
are
warned
that
HTTP
servers
might
ignore
the
accept
header
and
return
another
content
type,
or
return
an
error
code
such
as
415
Unsupported
Media
Type
.
This section is non-normative.
As
JSON
can
be
used
to
express
different
kinds
of
information,
a
consumer
of
a
particular
JSON
document
can
only
properly
interpret
the
author's
intent
if
they
possess
information
that
contextualizes
and
disambiguates
it
from
other
possible
expressions.
Information
to
assist
with
this
interpretation
can
either
be
wholly
external
to
the
JSON
document
or
linked
from
within
it.
Compacted
JSON-LD
documents
include
a
@context
property
that
internally
expresses
or
links
to
contextual
information
to
express
claims
.
These
features
enable
generalized
processors
to
be
written
to
convert
JSON-LD
documents
from
one
context
to
another,
but
this
is
not
needed
when
consumers
receive
JSON-LD
documents
that
already
use
the
context
and
shape
that
they
expect.
Authors
of
JSON-LD
documents,
such
as
issuers
of
verifiable
credentials
,
are
required
to
provide
proper
JSON-LD
contexts
and
follow
these
rules
in
order
to
facilitate
interoperability.
The text below helps consumers understand how to ensure a JSON-LD document is expressed in a context and shape that their application already understands such that they do not need to transform it in order to consume its contents. Notably, this does not mean that consumers do not need to understand any context at all; rather, consuming applications only need to understand a chosen set of contexts and document shapes to work with and not others. Issuers can publish contexts and information about their verifiable credentials to aid consumers who do not use generalized processors, just as can be done with any other JSON-formatted data.
General JSON-LD processing is defined as a mechanism that uses a JSON-LD software library to process a conforming document by performing various transformations . Type-specific credential processing is defined as a lighter-weight mechanism for processing conforming documents , that doesn't require a JSON-LD software library. Some consumers of verifiable credentials only need to consume credentials with specific types. These consumers can use type-specific credential processing instead of generalized processing. Scenarios where type-specific credential processing can be desirable include, but are not limited to, the following:
+json
structured
media
type
suffix.
That is, type-specific credential processing is allowed as long as the document being consumed or produced is a conforming document .
If
type-specific
credential
processing
is
desired,
an
implementer
is
advised
to
follow
this
rule:
Ensure
that
all
values
associated
with
a
@context
property
are
in
the
expected
order,
the
contents
of
the
context
files
match
known
good
cryptographic
hashes
for
each
file,
and
domain
experts
have
deemed
that
the
contents
are
appropriate
for
the
intended
use
case.
Using static context files with a JSON Schema is one acceptable approach to implementing the rule above. This can ensure proper term identification, typing, and order, when performing type-specific credential processing .
The
rule
above
guarantees
semantic
interoperability
between
the
two
processing
mechanisms
for
mapping
literal
JSON
keys
to
URIs
via
the
@context
mechanism.
While
general
JSON-LD
processing
can
use
previously
unseen
@context
values
provided
in
its
algorithms
to
verify
that
all
terms
are
correctly
specified,
implementations
that
perform
type-specific
credential
processing
only
accept
specific
@context
values
which
the
implementation
is
engineered
ahead
of
time
to
understand,
resulting
in
the
same
semantics
without
invoking
any
JSON-LD
APIs.
In
other
words,
the
context
in
which
the
data
exchange
happens
is
explicitly
stated
for
both
processing
mechanisms
by
using
@context
in
a
way
that
leads
to
the
same
conforming
document
semantics.
This section contains algorithms that can be used by implementations to perform common operations, such as verification . Conformance requirements phrased as algorithms use normative concepts from the Infra Standard [ INFRA ]. See the section on Algorithm Conformance in the Infra Standard for more guidance on implementation requirements.
Implementers are advised that the algorithms in this section contain the bare minimum set of checks used by implementations to test conformance to this specification. Implementations are expected to provide additional checks that report helpful warnings for developers to help debug potential issues. Similarly, implementations are likely to provide additional checks that could result in new types of errors being reported in order to stop harmful content. Any of these additional checks might be integrated into future versions of this specification.
This section contains an algorithm that conforming verifier implementations MUST run when verifying a verifiable credential or a verifiable presentation . This algorithm takes a media type ( string inputMediaType ) and secured data ( byte sequence inputData ) and returns a map that contains the following:
The verification algorithm is as follows:
false
,
add
a
CRYPTOGRAPHIC_SECURITY_ERROR
to
result
.
errors
.
true
,
ensure
that
result
.
document
is
a
conforming
document
.
If
it
is
not,
set
result
.
status
to
false
,
remove
the
document
property
from
result
,
and
add
at
least
one
MALFORMED_VALUE_ERROR
to
result
.
errors
.
Other
warnings
and
errors
MAY
be
included
to
aid
any
debugging
process.
The steps for verifying the state of the securing mechanism and verifying that the input document is a conforming document MAY be performed in a different order than that provided above as long as the implementation returns errors for the same invalid inputs. Implementations MAY produce different errors than described above.
When an implementation detects an anomaly while processing a document, a ProblemDetails object can be used to report the issue to other software systems. The interface for these objects follow [ RFC9457 ] to encode the data. A ProblemDetails object consists of the following properties:
type
property
MUST
be
present
and
its
value
MUST
be
a
URL
identifying
the
type
of
problem.
title
property
detail
property
The following problem description types are defined by this specification:
Implementations MAY extend the ProblemDetails object by specifying additional types or properties. See the Extension Member section in [ RFC9457 ] for further guidance on using this mechanism.
This section is non-normative.
This section details the general privacy considerations and specific privacy implications of deploying the Verifiable Credentials Data Model into production environments.
This section is non-normative.
It is important to recognize there is a spectrum of privacy ranging from pseudonymous to strongly identified. Depending on the use case, people have different comfort levels about the information they are willing to provide and the information that can be derived from it.
Privacy solutions are use case specific. For example, many people would prefer to remain anonymous when purchasing alcohol because the regulation is only to verify whether a purchaser is above a specific age. In contrast, when filling prescriptions written by a medical professional for a patient, the pharmacy is legally required to more strongly identify both the prescriber and the patient. No single approach to privacy works for all use cases.
Even those who want to remain anonymous when purchasing alcohol might need to provide photo identification to appropriately assure the merchant. The merchant might not need to know your name or any details other than that you are over a specific age, but in many cases, simple proof of age might be insufficient to meet regulations.
The Verifiable Credentials Data Model strives to support the full privacy spectrum and does not take philosophical positions on the correct level of anonymity for any specific transaction. The following sections will guide implementers who want to avoid specific scenarios that are hostile to privacy.
This section is non-normative.
A variety of trust relationships exist in the ecosystem described by this specification . An individual using a web browser trusts the web browser, also known as a user agent , to preserve that trust by not uploading their personal information to a data broker; similarly, entities filling the roles in the ecosystem described by this specification trust the software that operates on behalf of each of those roles. Examples include the following:
The examples above are not exhaustive, and the users in these roles can also expect various other things from the software they use to achieve their goals. In short, the user expects the software to operate in the user's best interests; any violations of this expectation breach trust and can lead to the software's replacement with a more trustworthy alternative. Implementers are strongly encouraged to create software that preserves user trust. Additionally, they are encouraged to include auditing features that enable users or trusted third parties to verify that the software is operating in alignment with their best interests.
Readers are advised that some software, like a website providing services to a single verifier and multiple holders , might operate as a user agent to both roles but might not always be able to operate simultaneously in the best interests of all parties. For example, suppose a website detects an attempt at fraudulent verifiable credential use among multiple holders . In that case, it might report such an anomaly to the verifier , which might be considered not to be in all holders' best interest, but would be in the best interest of the verifier and any holders not committing such a violation. It is imperative that when software operates in this manner, it is made clear in whose best interest(s) the software is operating, through mechanisms such as a website use policy.
This section is non-normative.
Data
associated
with
verifiable
credentials
stored
in
the
credential.credentialSubject
property
is
susceptible
to
privacy
violations
when
shared
with
verifiers
.
Personally
identifying
data,
such
as
a
government-issued
identifier,
shipping
address,
or
full
name,
can
be
easily
used
to
determine,
track,
and
correlate
an
entity
.
Even
information
that
does
not
seem
personally
identifiable,
such
as
the
combination
of
a
birthdate
and
a
postal
code,
has
powerful
correlation
and
de-anonymization
capabilities.
Implementers
of
software
used
by
holders
are
strongly
advised
to
warn
holders
when
they
share
data
with
these
kinds
of
characteristics.
Issuers
are
strongly
advised
to
provide
privacy-protecting
verifiable
credentials
when
possible
—
for
example,
by
issuing
ageOver
verifiable
credentials
instead
of
dateOfBirth
verifiable
credentials
for
use
when
a
verifier
wants
to
determine
whether
an
entity
is
at
least
18
years
of
age.
Because a verifiable credential often contains personally identifiable information (PII), implementers are strongly advised to use mechanisms while storing and transporting verifiable credentials that protect the data from those who ought not have access to it. Mechanisms that could be considered include Transport Layer Security (TLS) or other means of encrypting the data while in transit, as well as encryption or access control mechanisms to protect the data in a verifiable credential when at rest.
Generally, individuals are advised to assume that a verifiable credential , like most physical credentials, will leak personally identifiable information when shared. To combat such leakage, verifiable credentials and their securing mechanisms need to be carefully designed to prevent correlation. Verifiable credentials specifically designed to protect against leakage of personally identifiable information are available. Individuals and implementers are encouraged to choose these credential types over those not designed to protect personally identifiable information.
This section is non-normative.
Verifiable credentials might contain long-lived identifiers that could be used to correlate individuals. These identifiers include subject identifiers, email addresses, government-issued identifiers, organization-issued identifiers, addresses, healthcare vitals, and many other long-lived identifiers. Implementers of software for holders are encouraged to detect identifiers in verifiable credentials that could be used to correlate individuals and to warn holders before they share this information. The rest of this section elaborates on guidance related to using long-lived identifiers.
Subjects
of
verifiable
credentials
are
identified
using
the
id
property,
as
defined
in
Section
4.4
Identifiers
and
used
in
places
such
as
the
credentialSubject.id
property.
The
identifiers
used
to
identify
a
subject
create
a
greater
correlation
risk
when
the
identifiers
are
long-lived
or
used
across
more
than
one
web
domain.
Other
types
of
identifiers
that
fall
into
this
category
are
email
addresses,
government-issued
identifiers,
and
organization-issued
identifiers.
Similarly, disclosing the credential identifier (as in Example 3 ) can lead to situations where multiple verifiers , or an issuer and a verifier , can collude to correlate the holder .
Holders aiming to reduce correlation are encouraged to use verifiable credentials from issuers that support selectively disclosing correlating identifiers in a verifiable presentation . Such approaches expect the holder to generate the identifier and might even allow hiding the identifier from the issuer through techniques like blind signatures , while still keeping the identifier embedded and signed in the verifiable credential .
Securing mechanism specification authors are advised to avoid enabling identifier-based correlation by designing their technologies to avoid the use of correlating identifiers that cannot be selectively disclosed.
If strong anti-correlation properties are required in a verifiable credentials system, it is essential that identifiers meet one or more of the following criteria:
This section is non-normative.
The contents of a verifiable credential are secured using a securing mechanism . Values representing the securing mechanism pose a greater risk of correlation when they remain the same across multiple sessions or domains. Examples of these include the following values:
When strong anti-correlation properties are required, issuers are encouraged to produce verifiable credentials where signature values and metadata can be regenerated for each verifiable presentation . This can be achieved using technologies that support unlinkable disclosure, such as the Data Integrity BBS Cryptosuites v1.0 specification. When possible, verifiers are encouraged to prefer verifiable presentations that use this technology in order to enhance privacy for holders and subjects .
Even with unlinkable signatures, a verifiable credential might contain other information that undermines the anti-correlation properties of the cryptography used. See Sections 8.3 Personally Identifiable Information , 8.4 Identifier-Based Correlation , 8.6 Metadata-based Correlation , 8.11 Correlation During Validation , and most other subsections of Section 8. Privacy Considerations .
This section is non-normative.
Different extension points, such as those described in Section 4. Basic Concepts and Section 5. Advanced Concepts , can unintentionally or undesirably serve as a correlation mechanism, if relatively few issuers use a specific extension type or combination of types. For example, using certain cryptographic methods unique to particular nation-states, revocation formats specific to certain jurisdictions, or credential types employed by specific localities, can serve as mechanisms that reduce the pseudonymity a holder might expect when selectively disclosing information to a verifier .
Issuers are encouraged to minimize metadata-based correlation risks when issuing verifiable credentials intended for pseudonymous use by limiting the types of extensions that could reduce the holder's pseudonymity. Credential types, extensions, and technology profiles with global adoption are most preferable, followed by those with national use; those with only local use are least preferable.
This section is non-normative.
There are mechanisms external to verifiable credentials that track and correlate individuals on the Internet and the Web. These mechanisms include Internet protocol (IP) address tracking, web browser fingerprinting, evercookies, advertising network trackers, mobile network position information, and in-application Global Positioning System (GPS) APIs. Using verifiable credentials cannot prevent the use of these other tracking technologies; rather, using these technologies alongside verifiable credentials can reveal new correlatable information. For instance, a birthdate combined with a GPS position can strongly correlate an individual across multiple websites.
Privacy-respecting systems ought to aim to prevent the combination of other tracking technologies with verifiable credentials . In some instances, tracking technologies might need to be disabled on devices that transmit verifiable credentials on behalf of a holder .
The Oblivious HTTP protocol [ RFC9458 ] is one mechanism implementers might consider using when fetching external resources associated with a verifiable credential or a verifiable presentation . Oblivious HTTP allows a client to make multiple requests to an origin server without that server being able to link those requests to that client or even to identify those requests as having come from a single client, while placing only limited trust in the nodes used to forward the messages. Oblivious HTTP is one privacy-preserving mechanism that can reduce the possibility of device tracking and fingerprinting. Below are some concrete examples of ways that Oblivious HTTP can benefit ecosystem participants.
This section is non-normative.
Issuers are encouraged to limit the information included in a verifiable credential to the smallest set required for the intended purposes, so as to allow recipients to use them in various situations without disclosing more personally identifiable information (PII) than necessary. One way to avoid placing PII in a verifiable credential is to use an abstract property that meets the needs of verifiers without providing overly specific information about a subject .
For
example,
this
document
uses
the
ageOver
property
instead
of
a
specific
birthdate,
which
would
represent
more
sensitive
PII.
If
retailers
in
a
particular
market
commonly
require
purchasers
to
be
older
than
a
certain
age,
an
issuer
trusted
in
that
market
might
choose
to
offer
verifiable
credentials
that
claim
that
subjects
have
met
that
requirement
rather
than
offering
verifiable
credentials
that
contain
claims
about
the
customers'
birthdays.
This
practice
enables
individual
customers
to
make
purchases
without
disclosing
more
PII
than
necessary.
This section is non-normative.
Privacy violations occur when information divulged in one context leaks into another. One accepted best practice for preventing such a violation is for verifiers to limit the information requested and received, to the absolute minimum necessary for a particular transaction. Regulations in multiple jurisdictions, including the Health Insurance Portability and Accountability Act (HIPAA) in the United States and the General Data Protection Regulation (GDPR) in the European Union, mandate this data minimization approach.
With verifiable credentials , data minimization for issuers means limiting the content of a verifiable credential to the minimum required by potential verifiers for expected use. For verifiers , data minimization means restricting the scope of information requested or required for accessing services.
For example, a driver's license containing a driver's ID number, height, weight, birthday, and home address expressed as a verifiable credential contains more information than is necessary to establish that the person is above a certain age.
It
is
considered
best
practice
for
issuers
to
atomize
information
or
use
a
securing
mechanism
that
allows
for
selective
disclosure
.
For
example,
an
issuer
of
driver's
licenses
could
issue
a
verifiable
credential
containing
every
property
that
appears
on
a
driver's
license,
and
allow
the
holder
to
disclose
each
property
selectively.
It
could
also
issue
more
abstract
verifiable
credentials
(for
example,
a
verifiable
credential
containing
only
an
ageOver
property).
One
possible
adaptation
would
be
for
issuers
to
provide
secure
HTTP
endpoints
for
retrieving
single-use
bearer
credentials
that
promote
the
pseudonymous
use
of
verifiable
credentials
.
Implementers
that
find
this
impractical
or
unsafe
might
consider
using
selective
disclosure
schemes
that
eliminate
dependence
on
issuers
at
proving
time
and
reduce
the
risk
of
temporal
correlation
by
issuers
.
Verifiers are urged to only request information that is strictly necessary for a specific transaction to occur. This is important for at least two reasons:
Implementers of software used by holders are encouraged to disclose the information being requested by a verifier , allowing the holder to decline to share specific information that is unnecessary for the transaction. Implementers of software used by holders are also advised to give holders access to logs of information shared with verifiers , enabling the holders to provide this information to authorities if they believe that they have been subjected to information overreach or coerced to share more information than necessary for a particular transaction.
While it is possible to practice the principle of minimum disclosure, it might be impossible to avoid the strong identification of an individual for specific use cases during a single session or over multiple sessions. The authors of this document cannot stress how difficult it is to meet this principle in real-world scenarios.
This section is non-normative.
A bearer credential is a privacy-enhancing piece of information, such as a concert ticket, that entitles its holder to a specific resource without requiring the holder to divulge sensitive information. In low-risk scenarios, entities often use bearer credentials where multiple holders presenting the same verifiable credential is not a concern or would not result in large economic or reputational losses.
Verifiable
credentials
that
are
bearer
credentials
are
made
possible
by
not
specifying
the
subject
identifier,
expressed
using
the
id
property
,
which
is
nested
in
the
credentialSubject
property
.
For
example,
the
following
verifiable
credential
is
a
bearer
credential
:
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://university.example/credentials/temporary/28934792387492384",
"type": ["VerifiableCredential", "ExampleDegreeCredential"],
"issuer": "https://university.example/issuers/14",
"validFrom": "2017-10-22T12:23:48Z",
"credentialSubject": {
// note that the 'id' property is not specified for bearer credentials
"degree": {
"type": "ExampleBachelorDegree",
"name": "Bachelor of Science and Arts"
}
}
}
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/temporary/28934792387492384" , "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2017-10-22T12:23:48Z", "credentialSubject": { "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaegrEQ4dN5Exs4R72CRT6TYBJJJ52oKUyTxBC j8xARB2Zf","verificationMethod": "did:key:zDnaeRpTeZJA7GiBXqGgvd5snGXFkD5h9mSLy1sp UQ7kgerQ3", "cryptosuite": "ecdsa-rdfc-2019", "proofPurpose": "assertionMethod","proofValue": "z4YSKBWPoKzasEzvicp51HZZua3F7DdeaqwB7eNVakZp6gYaSjRde1E1 5Swps7RfX7Gj8Y8GV4r9zMVaEbJvNugPo""proofValue": "z2uC973EPdxJixaHsdfu8LxjWwUfAsVMCWcwdVWENpDYbHQRzAP2ctyQ 4DrcruAQ71VDQqR9LspBXqSSt81p3Ye6L" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/temporary/28934792387492384" , "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2017-10-22T12:23:48Z", "credentialSubject": { "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:z6MkwXSUYTySfA4C3JXySs6VDnFTESTGCdH2J3gu zhfUh1tY","verificationMethod": "did:key:z6MkjYXW5ejc3K9kJj7QEMHVzr6Lti9StNUg8H4H dKAgrBCb", "cryptosuite": "eddsa-rdfc-2022", "proofPurpose": "assertionMethod","proofValue": "z5BuyALvdoYZsov725SQv8PBE59Gc43YK16ytpDZdAKDU97zietZVsDX oLayCQS7qqgpFrNGWGWsLsHtRgfwkGGAN""proofValue": "z4Z2PA5ut6G9rTxMkthpKpuA2GiK5ohToKCjVkZs7igBULAQ98bmaSBz JeAXNaa1eJkyyu7WHjQbSfR7R8bd4RZKA" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/temporary/28934792387492384" , "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2017-10-22T12:23:48Z", "credentialSubject": { "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof", "created": "2025-01-20T07:23:46Z","verificationMethod": "did:key:zDnaedZktNVaSQwHma9dtKLVD56mMzSUCoqihA1T sF4ZbtRv5","verificationMethod": "did:key:zDnaeTR9nJwMjkRQN9DL6dpiBYdtcMwH5JL1RxvH s7SQkFksK", "cryptosuite": "ecdsa-sd-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0AhVhAp15yuXmu3i-hcer2MZy_99WuwBSogaSFI2xqNO3-czy6GUc jlsUykOjpD5kc_ArDYMEQ8M4f0lIPBRERAlwhrFgjgCQCbL-zXE8vNzFOBIz8ZQ3GRxtWOynrDw P6SJsZNxLhJ11YIBLHQJcQNmmJemjyCVDLToxRceR9DiITYwSORk4-8Ze3hVhA_sLV5RkYlE3P2 uLnS1f0afyhOlOy0QK0UntB4zNpoGL97Vw_1Y1gcwYzOi8LHI3CBeT3IBj7dNjgqFZzZoTY7FhA EDkM69Lc-U36OLjJh3-RBqUXVhTcEP9u2ouTpnxV_FCoo4tvLnJZPahztgdpBzjvPW9U9b1dHja 2_7_yYSF4sVhAcBuhTq-IsbOY9oyn27BEM5RcwpQ9Kmv1OOk5V3l7sbE07exYZpcVbZPPyEJUbB kzhUe8mFeaM9I96CEjCMP9UVhAlEEL8r8B4czI0SSUttNvQ_Q32zHUY4ckUYTc-xHRUdkuIg9hH De2EmSj85_nqe337LXu-yn6yU-0qRRkS4p3blhAQxKfmIDSocuZjQ2Bb4SlGSJViMNigTmzg5TF qBBdHAJ7X4PKY5__eWhgMPRb_IM84g-qYYz4loc7z-0GGSYa5IFnL2lzc3Vlcg""proofValue": "u2V0AhVhApGj_8I5MvP1JoUiw2CLtJ4T2oOC9FeqfXO7EEFX6qa15GoK mzAaZpsF5OWMFqfwBo2OJIXSSMAdrfYSTVhu1oFgjgCQDS_f_fJwSFMiXNmjb3fJf2ykWFf78Cr 0rv5K4Wo_mCeVYIJf3NhPviHMApwZtEpruJAQe0-3Vpkpe5ihBpkOQtXKHhVhAHzjumtrCTbTGC MwpeXsocoDbzLHjtOLmEAMLTmbQL7n833LyYFyWHfye-o9WTOTv_DGvdt-WbEDc_xSgdgpVvlhA Cdm-ZRijRGspJa4x2QZKQ01LkxEAk2yRKYqgPPA5yBdhCKn_iSf9WpG91ucFGEs8E6E8l0uhOq_ SCxbVrkfUhFhAN27B24bzCBOxUNStjtJpXUkHAlyo9FwyQsVFaoug0NIW4UqY4djzklnUJH7vRj q4R3_aST5kwlDcYOsgmfZyhFhA2E_oTy_7Ldu4ai_pO7D1qejpuVl-9o_vpXYIvlGcFYlFJSlp8 MSBZuMZG0d2cgkzxKS8UNO41RjxpjDrgxsjxVhAMqZLcxDqrRDzHUWagPMCo4_MRk25YwuyT4GN L6HFGaUt1wod4cjFDIO-1Fd4zwlr57eoW4FZJrQzAyxUXYMuK4FnL2lzc3Vlcg" } }
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/temporary/28934792387492384" , "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2017-10-22T12:23:48Z", "credentialSubject": { "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } }, "proof": { "type": "DataIntegrityProof","verificationMethod": "did:key:zUC79K6gHut3iPbRusUSXzXtuFukKLhoeXdsccYm SiUixRRBDUYqaUwtfvgHiGCJmoBbYevo4qcdFGkLB6Zpp1S32KWy92MKF8tark8YBPECkyNDEod 7NjKgNG2s7xLTCLRtzwh","verificationMethod": "did:key:zUC7ENmy6UriXwBCfdJk7vxSuMfst6Bt5zMkPiid cV3oYwFV2aeQYTdRNu2hexhmYcQsE7YvQAUrq7nw4Wy5j9KUN2XVwtiU3RfY8Z7zYnNtSQ4BUYs iRj2JaJm9Q5JG4KSQqNA", "cryptosuite": "bbs-2023", "proofPurpose": "assertionMethod","proofValue": "u2V0ChVhQgxA1-HJYYsg-l02IchwS_sGGtKpWm0Bpp31x5AS_kqR8cR2 jWHW_-Z17x48l74sYUBhdSyLF92rdAuP-tttYAgxXYWvJ90YLCPPrsIkqOhpYQB-ryPVnPy9mVP lnaeBI7X9JXrvSW2toodt6KgiSVHVzdrHmhnEXifHmmlKM3zCnc0pq4l3ZkBkIESZ4DrQomVNYY JhVTpnw6fxzTifIXP7uOEHN9cmwvlUMBpwW7kn6WzWp2PDX9Bc1DILe7ULg1p-Q9BaerLZNMGtJ xSvNvmlPFsxgJ3fOBZoXWS9-bS1vwI3CVXZ5nx-4dNG9q0UYi0b6gFgggSU53DNWSd7CTNwOC8k zz7sMSlQmosSvGqovF4rJMpqBZy9pc3N1ZXI""proofValue": "u2V0ChVhQojBOW4pM4ZTI_mVluF0ihvnH7xIJ4AzTIjcCA8120tF4Vwl xB53UNvimTdEgr4hiCtaKjvCKEPzaYtHkLgFknaNsRnaUBFxAh2-xK3HisiBYQJaVNn82R0iZXH I8MP46Ek0fRY6du2epfdh3VG3JvIlmdrHmhnEXifHmmlKM3zCnc0pq4l3ZkBkIESZ4DrQomVNYY KcIOhZC0BTBa_MVBzk4A5JNOpZcrrkOXDPS8vYuubrNEhV__8bcKiZ_z8wHqG5PpgRf6wZKdqTM Yz-YoLu7hW_Lt38W_PZHxbl7Tt9-Z4M4NZwdaW22S7YiRVFlAqnGM1ggg986BJp6B39W4YmWjUX _HExWzsXdu54ckKlEkNx2xlWBZy9pc3N1ZXI" } }
{ "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro", "alg": "ES256" }application/vc
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/temporary/28934792387492384", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2017-10-22T12:23:48Z", "credentialSubject": { "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/vc-ld+jwt
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id": "http://university.example/credentials/temporary/28934792387492384", "type": [ "VerifiableCredential", "ExampleDegreeCredential" ], "issuer": "https://university.example/issuers/14", "validFrom": "2017-10-22T12:23:48Z", "credentialSubject": { "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }application/cbor-diagnostic
/ cose-sign1 / 18([
/ protected / << {
/ alg / 1 : -35 / ES384 /
} >>,
/ unprotected / {
},
/ payload / h'7b224063...227d7d7d',
/ signature / h'44c7b7c8...a4c62d32'
/ signature / h'dea2bdec...c3ae6715'
])
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "https://university.example/issuers/14",
"validFrom": "2017-10-22T12:23:48Z",
"credentialSubject": {
"degree": {
"name": "Bachelor of Science and Arts",
"_sd": [
"CuyN8ZVuuZ5QI9v_1UJW5VQQptXLyf_CCKlHDIGQq9M""HnWsy39A7Mau0PyNk2_r2ZifY3xf4wMiSdDaZz_8izw"
]
}
},
"_sd": [
"7xWKuWObRT9Cv28LSu6CPVAQ931lswBfdVgOwScv4Sk","BGQS8HV_4N8TzPMFHDg9M7458SNpSiKcx5G-Pu-gLFU",
"SVjZ8_-i_GZ_r-am3VRzB-oqX02jEYbJqSZFk0SEm48""w0NxDAKjVcRKbp4H5JyU7O-evrOZI_FleByYM0Cl10E"
]
}
SHA-256
Hash:
SVjZ8_-i_GZ_r-am3VRzB-oqX02jEYbJqSZFk0SEm48
w0NxDAKjVcRKbp4H5JyU7O-evrOZI_FleByYM0Cl10E
Disclosure(s):
WyIxZmdIQk8xUWJ0Y001cFMwcmxHVjZBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0
WyJRV0Y0cXB4UG9RLWJHU2F2ck1Zd3lRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0
Contents:
[
"1fgHBO1QbtcM5pS0rlGV6A",
"QWF4qpxPoQ-bGSavrMYwyQ",
"id",
"http://university.example/credentials/temporary/28934792387492384"
]
SHA-256
Hash:
7xWKuWObRT9Cv28LSu6CPVAQ931lswBfdVgOwScv4Sk
BGQS8HV_4N8TzPMFHDg9M7458SNpSiKcx5G-Pu-gLFU
Disclosure(s):
WyJlWHJpdFlQa2g0Mm43Q0Z4UlFFV2JnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
WyJvRHNhQUZoeWZoeXZtc3RJQUlpdS13IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
Contents:
[
"eXritYPkh42n7CFxRQEWbg",
"oDsaAFhyfhyvmstIAIiu-w",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256
Hash:
CuyN8ZVuuZ5QI9v_1UJW5VQQptXLyf_CCKlHDIGQq9M
HnWsy39A7Mau0PyNk2_r2ZifY3xf4wMiSdDaZz_8izw
Disclosure(s):
WyJLeDVjRmVpZzRTUmtMX21Hc0pCS2pRIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
WyI0QnJLZVNLNWdkSkcxblgtTUVpM1d3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
Contents:
[
"Kx5cFeig4SRkL_mGsJBKjQ",
"4BrKeSK5gdJG1nX-MEi3Ww",
"type",
"ExampleBachelorDegree"
]
While bearer credentials are privacy-enhancing, issuers still need to take care in their design to avoid unintentionally divulging more information than the holder of the bearer credential expects. For example, repeated use of the same bearer credential across multiple sites can enable these sites to collude in illicitly tracking or correlating the holder . Similarly, information that might seem non-identifying, such as a birthdate and postal code, can be used together to statistically identify an individual when used in the same bearer credential or session.
Issuers of bearer credentials should ensure that the bearer credentials provide privacy-enhancing benefits that:
Holders ought to be warned by their software if it detects that bearer credentials containing sensitive information have been issued or requested, or that a correlation risk is posed by the combination of two or more bearer credentials across one or more sessions. While detecting all correlation risks might be impossible, some might certainly be detectable.
Verifiers ought not request bearer credentials known to carry information which can be used to illicitly correlate the holder .
This section is non-normative.
When processing verifiable credentials , verifiers evaluate relevant claims before relying upon them. This evaluation might be done in any manner desired as long as it satisfies the requirements of the verifier doing the validation. Many verifiers will perform the checks listed in Appendix A. Validation as well as a variety of specific business process checks such as:
The process of performing these checks might result in information leakage that leads to a privacy violation of the holder . For example, a simple operation, such as checking an improperly configured revocation list, can notify the issuer that a specific business is likely interacting with the holder . This could enable issuers to collude to correlate individuals without their knowledge.
Issuers are urged to not use mechanisms, such as credential revocation lists that are unique per credential , during the verification process, which could lead to privacy violations. Organizations providing software to holders ought to warn when credentials include information that could lead to privacy violations during the verification process. Verifiers are urged to consider rejecting credentials that produce privacy violations or that enable substandard privacy practices.
This section is non-normative.
When a holder receives a verifiable credential from an issuer , the verifiable credential needs to be stored somewhere (for example, in a credential repository ). Holders need to be aware that the information in a verifiable credential can be sensitive and highly individualized, making it a prime target for data mining. Services offering "free of charge" storage of verifiable credentials might mine personal data and sell it to organizations interesting in building individualized profiles on people and organizations.
Holders need to be aware of the terms of service for their credential repository , specifically the correlation and data mining protections in place for those who store their verifiable credentials with the service provider.
Some effective mitigations for data mining and profiling include using:
In addition to the mitigations above, civil society and regulatory participation in vendor analysis and auditing can help ensure that legal protections are enacted and enforced for individuals affected by practices that are not aligned with their best interests.
This section is non-normative.
Having two pieces of information about the same subject often reveals more about the subject than the combination of those two pieces, even when the pieces are delivered through different channels. Aggregating verifiable credentials poses a privacy risk, and all participants in the ecosystem need to be aware of the risks of data aggregation.
For example, suppose two bearer credentials , one for an email address and one stating the holder is over 21, are provided to the same verifier across multiple sessions. The verifier of the information now has a unique identifier (the email address) along with age-related ("over 21") information for that individual. It is now easy to create a profile for the holder , building it by adding more and more information as it leaks over time. Aggregation of such credentials can also be performed by multiple sites in collusion with each other, leading to privacy violations.
From a technological perspective, preventing information aggregation is a challenging privacy problem. While new cryptographic techniques, such as zero-knowledge proofs, are being proposed as solutions to aggregation and correlation issues, the existence of long-lived identifiers and browser-tracking techniques defeats even the most modern cryptographic techniques.
The solution to the privacy implications of correlation or aggregation tends not to be technological in nature, but policy-driven instead. Therefore, if a holder wishes to avoid the aggregation of their information, they need to express this in the verifiable presentations they transmit, and by the holders and verifiers to whom they transmit their verifiable presentations .
This section is non-normative.
Despite best efforts by all involved to assure privacy, using verifiable credentials can potentially lead to de-anonymization and a loss of privacy. This correlation can occur when any of the following occurs:
In part, it is possible to mitigate this de-anonymization and loss of privacy by:
Unfortunately, these mitigation techniques are only sometimes practical or even compatible with necessary use. Sometimes, correlation is a requirement.
For example, in some prescription drug monitoring programs, monitoring prescription use is a requirement. Enforcement entities need to be able to confirm that individuals are not cheating the system to get multiple prescriptions for controlled substances. This statutory or regulatory need to correlate prescription use overrides individual privacy concerns.
Verifiable credentials will also be used to intentionally correlate individuals across services. For example, when using a common persona to log in to multiple services, all activity on each of those services is intentionally linked to the same individual. This is not a privacy issue as long as each of those services uses the correlation in the expected manner.
Privacy violations related to the use of verifiable credentials occur when unintended or unexpected correlation arises from the presentation of those verifiable credentials .
This section is non-normative.
Legal processes can compel issuers , holders , and verifiers to disclose private information to authorities, such as law enforcement. It is also possible for the same private information to be accidentally disclosed to an unauthorized party through a software bug or security failure. Authors of legal processes and compliance regimes are advised to draft guidelines that require notifying the subjects involved when their private information is intentionally or accidentally disclosed to a third party. Providers of software services are advised to be transparent about known circumstances that might cause such private information to be shared with a third party, as well as the identity of any such third party.
This section is non-normative.
When a holder chooses to share information with a verifier , it might be the case that the verifier is acting in bad faith and requests information that could harm the holder . For example, a verifier might ask for a bank account number, which could then be used with other information to defraud the holder or the bank.
Issuers ought to strive to tokenize as much information as possible so that if a holder accidentally transmits credentials to the wrong verifier , the situation is not catastrophic.
For example, instead of including a bank account number to check an individual's bank balance, provide a token that enables the verifier to check if the balance is above a certain amount. In this case, the bank could issue a verifiable credential containing a balance checking token to a holder . The holder would then include the verifiable credential in a verifiable presentation and bind the token to a credit checking agency using a digital signature. The verifier could then wrap the verifiable presentation in their digital signature and hand it back to the issuer to check the account balance dynamically.
Using this approach, even if a holder shares the account balance token with the wrong party, an attacker cannot discover the bank account number or the exact value of the account. Also, given the validity period of the counter-signature, the attacker gains access to the token for only a few minutes.
This section is non-normative.
The data expressed in verifiable credentials and verifiable presentations are valuable since they contain authentic statements made by trusted third parties (such as issuers ) or individuals (such as holders or subjects ). The storage and accessibility of this data can inadvertently create honeypots of sensitive data for malicious actors. These adversaries often seek to exploit such reservoirs of sensitive information, aiming to acquire and exchange that data for financial gain.
Issuers are advised to retain the minimum amount of data necessary to issue verifiable credentials to holders and to manage the status and revocation of those credentials. Similarly, issuers are advised to avoid creating publicly accessible credentials that include personally identifiable information (PII) or other sensitive data. Software implementers are advised to safeguard verifiable credentials using robust consent and access control measures, ensuring that they remain inaccessible to unauthorized entities.
Holders are advised to use implementations that appropriately encrypt their data in transit and at rest and protect sensitive material (such as cryptographic secrets) in ways that cannot be easily extracted from hardware or other devices. It is further suggested that holders store and manipulate their data only on devices they control, away from centralized systems, to reduce the likelihood of an attack on their data or inclusion in a large-scale theft if an attack is successful. Furthermore, holders are encouraged to rigorously control access to their credentials and presentations, allowing access only to those with explicit authorization.
Verifiers are advised to ask only for data necessary for a particular transaction and to retain no data beyond the needs of any particular transaction.
Regulators are advised to reconsider existing audit requirements such that mechanisms that better preserve privacy can be used to achieve similar enforcement and audit capabilities. For example, audit-focused regulations that insist on the collection and long-term retention of personally identifiable information can cause harm to individuals and organizations if that same information is later compromised and accessed by an attacker. The technologies described by this specification enable holders to prove properties about themselves and others more readily, reducing the need for long-term data retention by verifiers . Alternatives include keeping logs that the information was collected and checked, as well as random tests to ensure that compliance regimes are operating as expected.
This section is non-normative.
As detailed in Section 8.14 Patterns of Use , patterns of use can be correlated with certain types of behavior. This correlation is partially mitigated when a holder uses a verifiable credential without the knowledge of the issuer . Issuers can defeat this protection however, by making their verifiable credentials short lived and renewal automatic.
For
example,
an
ageOver
verifiable
credential
is
helpful
in
gaining
access
to
a
bar.
If
an
issuer
issues
such
a
verifiable
credential
with
a
very
short
validity
period
and
an
automatic
renewal
mechanism,
then
the
issuer
could
correlate
the
holder's
behavior
in
a
way
that
negatively
impacts
the
holder
.
Organizations providing software to holders ought to warn them if they repeatedly use credentials with short lifespans, which could result in behavior correlation. Issuers ought to avoid issuing credentials that enable them to correlate patterns of use.
This section is non-normative.
An ideal privacy-respecting system would require only the information necessary for interaction with the verifier to be disclosed by the holder . The verifier then records that the disclosure requirement has been met and discards any sensitive information disclosed. In many cases, competing priorities, such as regulatory burden, prevent this ideal system from being employed. In other instances, long-lived identifiers prevent single use. The designer of any verifiable credentials ecosystem ought to strive to make it as privacy-respecting as possible by preferring single-use verifiable credentials whenever possible.
Using single-use verifiable credentials provides several benefits. The first benefit is to verifiers who can be sure that the data in a verifiable credential is fresh. The second benefit is to holders , who know that if there are no long-lived identifiers in the verifiable credential , the verifiable credential itself cannot be used to track or correlate them online. Finally, there is nothing for attackers to steal, making the entire ecosystem safer to operate within.
This section is non-normative.
In an ideal private browsing scenario, no PII will be revealed. Because many credentials include PII, organizations providing software to holders ought to warn them about the possibility of this information being revealed if they use credentials and presentations while in private browsing mode. As each browser vendor handles private browsing differently, and some browsers might not have this feature, it is important that implementers not depend on private browsing mode to provide any privacy protections. Instead, implementers are advised to rely on tooling that directly usable by their software to provide privacy guarantees.
This section is non-normative.
Verifiable credentials rely on a high degree of trust in issuers . The degree to which a holder might take advantage of possible privacy protections often depends strongly on the support an issuer provides for such features. In many cases, privacy protections which make use of zero-knowledge proofs, data minimization techniques, bearer credentials, abstract claims, and protections against signature-based correlation require active support by the issuer , who need to incorporate those capabilities into the verifiable credentials they issue.
It is crucial to note that holders not only depend on issuer participation to provide verifiable credential capabilities that help preserve holder and subject privacy, but also rely on issuers to not deliberately subvert these privacy protections. For example, an issuer might sign verifiable credentials using a signature scheme that protects against signature-based correlation. This would protect the holder from being correlated by the signature value as it is shared among verifiers . However, if the issuer creates a unique key for each issued credential , it might be possible for the issuer to track presentations of the credential , regardless of a verifier's inability to do so.
In addition to previously described privacy protections an issuer might offer, issuers need to be aware of data they leak that is associated with identifiers and claim types they use when issuing credentials . One example of this would be an issuer issuing driver's licenses which reveal both the location(s) in which they have jurisdiction and the location of the subject's residence. Verifiers might take advantage of this by requesting a credential to check that the subject is licensed to drive when, in fact, they are interested in metadata about the credential, such as which issuer issued the credential, and tangential information that might have been leaked by the issuer , such as the subject's home address. To mitigate such leakage, issuers might use common identifiers to mask specific location information or other sensitive metadata; for example, a shared issuer identifier at a state or national level instead of at the level of a county, city, town, or other smaller municipality. Further, verifiers can use holder attestation mechanisms to preserve privacy, by providing proof that an issuer exists in a set of trusted entities without needing to disclose the exact issuer .
This section is non-normative.
Issuers , holders , and verifiers should be aware of a number of security considerations when processing data described by this specification. Ignoring or not understanding the implications of this section can result in security vulnerabilities.
While this section highlights a broad set of security considerations, it is a partial list. Implementers of mission-critical systems using the technology described in this specification are strongly encouraged to consult security and cryptography professionals for comprehensive guidance.
This section is non-normative.
Cryptography can protect some aspects of the data model described in this specification. It is important for implementers to understand the cryptography suites and libraries used to create and process credentials and presentations . Implementing and auditing cryptography systems generally requires substantial experience. Effective red teaming can also help remove bias from security reviews.
Cryptography suites and libraries have a shelf life and eventually succumb to new attacks and technological advances. Production quality systems need to take this into account and ensure mechanisms exist to easily and proactively upgrade expired or broken cryptography suites and libraries, and to invalidate and replace existing credentials . Regular monitoring is important to ensure the long term viability of systems processing credentials .
This section is non-normative.
The security of most digital signature algorithms, used to secure verifiable credentials and verifiable presentations , depends on the quality and protection of their private signing keys . The management of cryptographic keys encompasses a vast and complex field. For comprehensive recommendations and in-depth discussion, readers are directed to [ NIST-SP-800-57-Part-1 ]. As strongly recommended in both [ FIPS-186-5 ] and [ NIST-SP-800-57-Part-1 ], a private signing key is not to be used for multiple purposes; for example, a private signing key is not to be used for encryption as well as signing.
[ NIST-SP-800-57-Part-1 ] strongly advises that private signing keys and public verification keys have limited cryptoperiods , where a cryptoperiod is "the time span during which a specific key is authorized for use by legitimate entities or the keys for a given system will remain in effect." [ NIST-SP-800-57-Part-1 ] gives extensive guidance on cryptoperiods for different key types under various conditions and recommends a one to three year cryptoperiod for a private signing key.
To deal with potential private key compromises, [ NIST-SP-800-57-Part-1 ] provides recommendations for protective measures, harm reduction, and revocation. Although this section focuses primarily on the security of the private signing key, [ NIST-SP-800-57-Part-1 ] also highly recommends confirmation of the validity of all verification material before using it.
This section is non-normative.
Verifiable credentials often contain URLs to data that resides outside the verifiable credential . Linked content that exists outside a verifiable credential — such as images, JSON-LD extension contexts, JSON Schemas, and other machine-readable data — is not protected against tampering because the data resides outside of the protection of the securing mechanism on the verifiable credential .
Section 5.3 Integrity of Related Resources of this specification provides an optional mechanism for ensuring the integrity of the content of external resources. This mechanism is not necessary for external resources that do not impact the verifiable credential 's security. However, its implementation is crucial for external resources where content changes could potentially introduce security vulnerabilities.
Implementers need to recognize the potential security risks associated with unprotected URLs of external machine-readable content. Such vulnerabilities could lead to successful attacks on their applications. Where changes to external resources might compromise security, implementers will benefit by employing the content integrity protection mechanism outlined in this specification.
This section is non-normative.
This specification enables the creation of credentials without signatures or proofs. These credential classes are often useful for intermediate storage or self-asserted information, analogous to filling out a form on a web page. Implementers ought to be aware that these credential types are not verifiable because the authorship either is unknown or cannot be trusted.
This section is non-normative.
The data model does not inherently prevent Man-in-the-Middle (MITM) , replay , and spoofing attacks. Both online and offline use cases might be susceptible to these attacks, where an adversary intercepts, modifies, re-uses, and/or replicates the verifiable credential data during transmission or storage.
A verifier might need to ensure it is the intended recipient of a verifiable presentation and not the target of a man-in-the-middle attack . Some securing mechanisms , like Securing Verifiable Credentials using JOSE and COSE [ VC-JOSE-COSE ] and Verifiable Credential Data Integrity 1.0 [ VC-DATA-INTEGRITY ], provide an option to specify a presentation 's intended audience or domain, which can help reduce this risk.
Other approaches, such as token binding [ RFC8471 ], which ties the request for a verifiable presentation to the response, can help secure the protocol. Any unsecured protocol is susceptible to man-in-the-middle attacks.
A verifier might wish to limit the number of times that verifiable presentation can be used. For example, multiple individuals presenting the same verifiable credential representing an event ticket might be granted entry to the event, undermining the purpose of the ticket from the perspective of its issuer . To prevent such replay attacks, verifiers require holders to include additional security measures in their verifiable presentations . Examples include the following:
Verifiers might have a vested interest in knowing that a holder is authorized to present the claims inside of a verifiable presentation . While the data model outlines the structure and data elements necessary for a verifiable credential , it does not include a mechanism to ascertain the authorization of presented credentials . To address this concern, implementers might need to explore supplementary methods, such as binding verifiable credentials to strong authentication mechanisms or using additional properties in verifiable presentations to enable proof of control.
This section is non-normative.
It is considered best practice for issuers to atomize information in a credential or use a signature scheme that allows for selective disclosure. When atomizing information, if it is not done securely by the issuers , the holders might bundle together claims from different credentials in ways that the issuers did not intend.
Consider a university issuing two verifiable credentials to an individual. Each credential contains two properties that, when combined, indicate the person's "role" in a specific "department." For instance, one credential pair might designate "Staff Member" in the "Department of Computing," while another could signify "Post Graduate Student" in the "Department of Economics." Atomizing these verifiable credentials results in the university issuing four separate credentials to the individual. Each credential contains a single designation: "Staff Member", "Post Graduate Student", "Department of Computing", or "Department of Economics". The holder might then present the "Staff Member" and "Department of Economics" verifiable credentials to a verifier , which, together, would comprise a false claim .
This section is non-normative.
When verifiable credentials contain highly dynamic information, careful consideration of validity periods becomes crucial. Issuing verifiable credentials with validity periods that extend beyond their intended use creates potential security vulnerabilities that malicious actors could exploit. Validity periods shorter than the timeframe where the information expressed by the verifiable credential is expected to be used creates a burden on holders and verifiers . It is, therefore, important to set validity periods for verifiable credentials appropriate to the use case and the expected lifetime of the information contained in the verifiable credential .
This section is non-normative.
Storing verifiable credentials on a device poses risks if the device is lost or stolen. An attacker gaining possession of such a device potentially acquires unauthorized access to systems using the victim's verifiable credentials . Ways to mitigate this type of attack include:
Furthermore, instances of impersonation can manifest in various forms, including situations where an entity attempts to disavow its actions. Elevating trust and security within the realm of verifiable credentials entails more than averting impersonation; it also involves implementing non-repudiation mechanisms. These mechanisms solidify an entity's responsibility for its actions or transactions, reinforcing accountability and deterring malicious behavior. Attainment of non-repudiation is a multifaceted endeavor, encompassing an array of techniques including securing mechanisms , proofs of possession, and authentication schemes in various protocols designed to foster trust and reliability.
This section is non-normative.
Ensuring alignment between an entity's actions — such as presentation , and the intended purpose of those actions — is essential. It involves having the authorization to use verifiable credentials and using credentials in a manner that adheres to their designated scope(s) and objective(s). Two critical aspects in this context are Unauthorized Use and Inappropriate Use .
While valid cryptographic signatures and successful status checks signify the reliability of credentials , they do not signify that all credentials are interchangeable for all contexts. It is crucial that verifiers also validate any relevant claims , considering the source and nature of the claim alongside the purpose for which the holder presents the credential .
For instance, in scenarios where a certified medical diagnosis is required, a self-asserted credential carrying the necessary data might not suffice because it lacks validity from an authoritative medical source. To ensure proper credential use, stakeholders need to assess the credential's relevance and authority within the specific context of their intended application.
This section is non-normative.
Data in verifiable credentials can include injectable code or code from scripting languages. Authors of verifiable credentials benefit from avoiding such inclusions unless necessary and only after mitigating associated risks to the fullest extent possible.
For
example,
a
single
natural
language
string
containing
multiple
languages
or
annotations
often
requires
additional
structure
or
markup
for
correct
presentation.
Markup
languages,
such
as
HTML,
can
label
text
spans
in
different
languages
or
supply
string-internal
markup
needed
to
display
bidirectional
text
properly.
It
is
also
possible
to
use
the
rdf:HTML
datatype
to
encode
such
values
accurately
in
JSON-LD.
Despite the ability to encode information as HTML, implementers are strongly discouraged from doing so for the following reasons:
script
tag
that
an
attacker
injected
at
some
point
during
the
data
production
process.
If implementers feel they need to use HTML, or other markup languages capable of containing executable scripts, to address a specific use case, they are advised to analyze how an attacker could use the markup to mount injection attacks against a consumer of the markup. This analysis should be followed by the proactive deployment of mitigations against the identified attacks, such as running the HTML rendering engine in a sandbox with no ability to access the network.
This section is non-normative.
There are a number of accessibility considerations implementers should be aware of when processing data described in this specification. As with implementation of any web standard or protocol, ignoring accessibility issues makes this information unusable by a large subset of the population. It is important to follow accessibility guidelines and standards, such as [ WCAG21 ], to ensure that all people, regardless of ability, can make use of this data. This is especially important when establishing systems using cryptography, which have historically created problems for assistive technologies.
This section details the general accessibility considerations to take into account when using this data model.
This section is non-normative.
Many physical credentials in use today, such as government identification cards, have poor accessibility characteristics, including, but not limited to, small print, reliance on small and high-resolution images, and no affordances for people with vision impairments.
When using this data model to create verifiable credentials , it is suggested that data model designers use a data first approach. For example, given the choice of using data or a graphical image to depict a credential , designers should express every element of the image, such as the name of an institution or the professional credential , in a machine-readable way instead of relying on a viewer's interpretation of the image to convey this information. Using a data first approach is preferred because it provides the foundational elements of building different interfaces for people with varying abilities.
This section is non-normative.
Implementers are advised to be aware of a number of internationalization considerations when publishing data described in this specification. As with any web standards or protocols implementation, ignoring internationalization makes it difficult for data to be produced and consumed across a disparate set of languages and societies, which limits the applicability of the specification and significantly diminishes its value as a standard.
Implementers are strongly advised to read the Strings on the Web: Language and Direction Metadata document [ STRING-META ], published by the W3C Internationalization Activity, which elaborates on the need to provide reliable metadata about text to support internationalization. For the latest information on internationalization considerations, implementers are also urged to read the Verifiable Credentials Implementation Guidelines [ VC-IMP-GUIDE ] document.
This section outlines general internationalization considerations to take into account when using this data model and is intended to highlight specific parts of the Strings on the Web: Language and Direction Metadata document [ STRING-META ] that implementers might be interested in reading.
Data publishers are strongly encouraged to read the section on Cross-Syntax Expression in the Strings on the Web: Language and Direction Metadata document [ STRING-META ] to ensure that expressing language and base direction information is possible across multiple expression syntaxes, such as [ JSON-LD11 ], [ JSON ], and CBOR [ RFC7049 ].
The general design pattern is to use the following markup template when expressing a text string that is tagged with a language and, optionally, a specific base direction.
"myProperty": {
"@value": "The string value",
"@language": "LANGUAGE"
"@direction": "DIRECTION"
}
When
the
language
value
object
is
used
in
place
of
a
string
value,
the
object
MUST
contain
a
@value
property
whose
value
is
a
string,
and
SHOULD
contain
a
@language
property
whose
value
is
a
string
containing
a
well-formed
Language-Tag
as
defined
by
[
BCP47
],
and
MAY
contain
a
@direction
property
whose
value
is
a
base
direction
string
defined
by
the
@direction
property
in
[
JSON-LD11
].
The
language
value
object
MUST
NOT
include
any
other
keys
beyond
@value
,
@language
,
and
@direction
.
Using the design pattern above, the following example expresses the title of a book in the English language without specifying a text direction.
"title": {
"@value": "HTML and CSS: Designing and Creating Websites",
"@language": "en"
}
The next example uses a similar title expressed in the Arabic language with a base direction of right-to-left.
"title": {
"@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
"@language": "ar",
"@direction": "rtl"
}
The text above would most likely be rendered incorrectly as left-to-right without the explicit expression of language and direction because many systems use the first character of a text string to determine its base direction .
Multiple language value objects MAY be provided as an array value for the property:
"title": [ { "@value": "HTML and CSS: Designing and Creating Websites", "@language": "en" }, { "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب", "@language": "ar", "@direction": "rtl" } ]
{ "@context": [ "https://www.w3.org/ns/credentials/v2", "https://achievement.example/multilingual/v2" ], "type": [ "VerifiableCredential", "ExampleAchievementCredential" ], "issuer": { "id": "did:example:2g55q912ec3476eba2l9812ecbfe", "type": "Profile" }, "validFrom": "2024-03-14T22:32:52Z", "validUntil": "2025-01-01T00:00:00Z", "credentialSubject": { "type": [ "AchievementSubject" ], "achievement": { "id": "urn:uuid:9a652678-4616-475d-af12-aca21cfbe06d", "type": [ "Achievement" ], "name": { "en": "Successful installation of the Example application", "es": "Instalación exitosa de la aplicación Example" }, "criteria": { "narrative": { "es": "Instaló exitosamente de la aplicación Example.", "en": "Successfully installed the Example application." } } } } }
The
language
and
base
direction
of
each
natural
language
string
property
value
SHOULD
be
provided,
either
via
the
language
value
structure
for
each
property
value,
or
via
a
default
language
and
base
direction
for
all
values
in
the
entire
credential.
Using
the
per-value
language
value
structure
is
preferred,
because
using
document
defaults
can
result
in
a
requirement
that
downstream
processors
perform
JSON-LD
expansion-based
transformation
which
is
otherwise
optional.
See
the
String
Internationalization
section
of
the
[
JSON-LD11
]
specification
for
more
information.
Natural
language
string
values
that
do
not
have
a
language
associated
with
them
SHOULD
be
treated
as
if
the
language
value
is
undefined
(language
tag
"
und
").
Natural
language
string
values
that
do
not
have
a
base
direction
associated
with
them
SHOULD
be
treated
as
if
the
direction
value
is
"
auto
".
This section is non-normative.
While this specification does not provide conformance criteria for the process of the validation of verifiable credentials or verifiable presentations , readers might be curious about how the information in this data model is expected to be used by verifiers during the process of validation . This section captures a selection of conversations held by the Working Group related to the expected use of the properties in this specification by verifiers .
This section is non-normative.
When a verifier requests one or more verifiable credentials from a holder , they can specify the type of credential(s) that they would like to receive. Credential types, as well as validation schemas for each type and each of their claims , are defined by specification authors and are published in places like the Verifiable Credential Extensions .
The
type
of
a
credential
is
expressed
via
the
type
property.
A
verifiable
credential
of
a
specific
type
contains
specific
properties
(which
might
be
deeply
nested)
that
can
be
used
to
determine
whether
or
not
the
presentation
satisfies
a
set
of
processing
rules
that
the
verifier
executes.
By
requesting
verifiable
credentials
of
a
particular
type
,
the
verifier
is
able
to
gather
specific
information
from
the
holder
,
which
originated
with
the
issuer
of
each
verifiable
credential
,
that
will
enable
the
verifier
to
determine
the
next
stage
of
an
interaction
with
a
holder
.
When a verifier requests a verifiable credential of a specific type, there will be a set of mandatory and optional claims that are associated with that type. A verifier's validation of a verifiable credential will fail when mandatory claims are not included, and any claim that is not associated with the specific type will be ignored. In other words, a verifier will perform input validation on the verifiable credential it receives and will reject malformed input based on the credential type specification.
This section is non-normative.
In
the
verifiable
credentials
presented
by
a
holder
,
the
value
associated
with
the
id
property
for
each
credentialSubject
identifies
a
subject
to
the
verifier
.
If
the
holder
is
also
the
subject
,
then
the
verifier
could
authenticate
the
holder
if
they
have
verification
metadata
related
to
the
holder
.
The
verifier
could
then
authenticate
the
holder
using
a
signature
generated
by
the
holder
contained
in
the
verifiable
presentation
.
The
id
property
is
optional.
Verifiers
could
use
other
properties
in
a
verifiable
credential
to
uniquely
identify
a
subject
.
For information on how authentication and WebAuthn might work with verifiable credentials , see the Verifiable Credentials Implementation Guidelines 1.0 document.
This section is non-normative.
The
value
associated
with
the
issuer
property
identifies
an
issuer
to
the
verifier
.
Metadata
related
to
the
issuer
property
is
available
to
the
verifier
through
the
verification
algorithm
as
defined
in
Section
7.1
Verification
.
This
metadata
includes
identification
of
the
verified
controller
of
the
verification
method
used
by
the
securing
mechanism
to
secure
each
verifiable
credential
or
verifiable
presentation
,
of
which
the
controller
is
typically
the
respective
issuer
or
holder
.
Some ecosystems might have more complex relationships between issuers and controllers of verification methods and might use lists of verified issuers in addition to, or instead of, the mapping described above.
This section is non-normative.
The
value
associated
with
the
holder
property
is
used
to
identify
the
holder
to
the
verifier
.
Often
relevant
metadata
about
the
holder
,
as
identified
by
the
value
of
the
holder
property
,
is
available
to,
or
retrievable
by,
the
verifier
.
For
example,
a
holder
can
publish
information
containing
the
verification
material
used
to
secure
verifiable
presentations
.
This
metadata
is
used
when
checking
proofs
on
verifiable
presentations
.
Some
cryptographic
identifiers
contain
all
necessary
metadata
in
the
identifier
itself.
In
those
cases,
no
additional
metadata
is
required.
Other
identifiers
use
verifiable
data
registries
where
such
metadata
is
automatically
published
for
use
by
verifiers
,
without
any
additional
action
by
the
holder
.
See the Verifiable Credentials Implementation Guidelines 1.0 and Verifiable Credentials Use Cases for additional examples related to subject and holder .
Validation is the process by which verifiers apply business rules to evaluate the propriety of a particular use of a verifiable credential .
A verifier might need to validate a given verifiable presentation against complex business rules; for example, the verifier might need confidence that the holder is the same entity as a subject of a verifiable credential . In such a situation, the following factors can provide a verifier with reasonable confidence that the claims expressed regarding that identifier, in included verifiable credentials , are, in fact, about the current presenter:
holder
property
of
the
verifiable
presentation
and
at
least
one
identifier
property
of
at
least
one
object
in
the
credentialSubject
array
are
the
same.
This section is non-normative.
The
validFrom
is
expected
to
be
within
an
expected
range
for
the
verifier
.
For
example,
a
verifier
can
check
that
the
start
of
the
validity
period
for
a
verifiable
credential
is
not
in
the
future.
This section is non-normative.
The securing mechanism used to prove that the information in a verifiable credential or verifiable presentation was not tampered with is called a cryptographic proof . There are many types of cryptographic proofs including, but not limited to, digital signatures and zero-knowledge proofs. In general, when verifying cryptographic proofs, implementations are expected to ensure:
In general, when verifying digital signatures, implementations are expected to ensure:
This section is non-normative.
The
verifier
expects
that
the
validFrom
and
validUntil
properties
will
be
within
a
certain
range.
For
example,
a
verifier
can
check
that
the
end
of
the
validity
period
of
a
verifiable
credential
is
not
in
the
past.
Because
some
credentials
can
be
useful
for
secondary
purposes
even
if
their
original
validity
period
has
expired,
validity
period,
as
expressed
using
the
validFrom
and
validUntil
properties,
is
always
considered
a
component
of
validation,
which
is
performed
after
verification.
This section is non-normative.
If
the
credentialStatus
property
is
available,
the
status
of
a
verifiable
credential
is
expected
to
be
evaluated
by
the
verifier
according
to
the
credentialStatus
type
definition
for
the
verifiable
credential
and
the
verifier's
own
status
evaluation
criteria.
For
example,
a
verifier
can
ensure
the
status
of
the
verifiable
credential
is
not
"withdrawn
for
cause
by
the
issuer
".
This section is non-normative.
If
the
credentialSchema
property
is
available,
the
schema
of
a
verifiable
credential
is
expected
to
be
evaluated
by
the
verifier
according
to
the
credentialSchema
type
definition
for
the
verifiable
credential
and
the
verifier's
own
schema
evaluation
criteria.
For
example,
if
the
credentialSchema
's
type
value
is
[
VC-JSON-SCHEMA
],
then
a
verifier
can
ensure
a
credential's
data
is
valid
against
the
given
JSON
Schema.
This section is non-normative.
Fitness
for
purpose
is
about
whether
the
custom
properties
in
the
verifiable
credential
are
appropriate
for
the
verifier's
purpose.
For
example,
if
a
verifier
needs
to
determine
whether
a
subject
is
older
than
21
years
of
age,
they
might
rely
on
a
specific
birthdate
property
,
or
on
more
abstract
properties
,
such
as
ageOver
.
The issuer is trusted by the verifier to make the claims at hand. For example, a franchised fast food restaurant location trusts the discount coupon claims made by the corporate headquarters of the franchise. Policy information expressed by the issuer in the verifiable credential should be respected by holders and verifiers unless they accept the liability of ignoring the policy.
This section is non-normative.
Systems using what is today commonly referred to as "artificial intelligence" and/or "machine learning" might be capable of performing complex tasks at a level that meets or exceeds human performance. This might include tasks such as the acquisition and use of verifiable credentials . Using such tasks to distinguish between human and automated "bot" activity, as is commonly done today with a CAPTCHA , for instance, might thereby cease to provide adequate or acceptable protection.
Implementers of security architectures that use verifiable credentials and/or perform validation on their content are urged to consider the existence of machine-based actors, such as those which are today commonly referred to as "artificial intelligence", that might legitimately hold verifiable credentials for use in interactions with other systems. Implementers might also consider how threat actors could couple such "artificial intelligence" systems with verifiable credentials to pose as humans when interacting with their systems. Such systems might include, but not be limited to, global infrastructure such as social media, election, energy distribution, supply chain, and autonomous vehicle systems.
This
section
lists
cryptographic
hash
values
that
might
change
during
the
Candidate
Recommendation
phase
based
on
implementer
feedback
that
requires
the
referenced
files
to
be
modified.
The
Working
Group
is
expecting
all
of
the
terms
and
URLs
supplied
in
the
JSON-LD
Context
to
be
either
stabilized,
or
removed,
before
the
publication
of
this
specification
as
a
Proposed
Recommendation.
While
that
means
that
this
specification
could
be
delayed
if
dependencies
such
as
[
VC-DATA-INTEGRITY
],
[
VC-JOSE-COSE
],
SD-JWT,
[
VC-JSON-SCHEMA
],
or
status
list
do
not
enter
the
Proposed
Recommendation
phase
around
the
same
time
frame,
the
Working
Group
is
prepared
to
remove
the
dependencies
if
an
undue
burden
is
placed
on
transitioning
to
the
Recommendation
phase.
This
is
a
calculated
risk
that
the
Working
Group
is
taking
and
has
a
mitigation
strategy
in
place
to
ensure
the
timely
transition
of
this
specification
to
a
Recommendation.
Implementations
MUST
treat
the
base
context
value,
located
at
https://www.w3.org/ns/credentials/v2
,
as
already
retrieved;
the
following
value
is
the
hexadecimal
encoded
SHA2-256
digest
value
of
the
base
context
file:
24a18c90e9856d526111f29376e302d970b2bd10182e33959995b0207d7043b9
.
It
is
possible
to
confirm
the
cryptographic
digest
above
by
running
the
following
command
from
a
modern
Unix
command
interface
line:
curl
-s
https://www.w3.org/ns/credentials/v2
|
openssl
dgst
-sha256
.
It is strongly advised that all JSON-LD Context URLs used by an application use the same mechanism, or a functionally equivalent mechanism, to ensure end-to-end security. Implementations are expected to throw errors if a cryptographic hash value for a resource does not match the expected hash value.
Implementations
that
apply
the
base
context
above,
as
well
as
other
contexts
and
values
in
any
@context
property,
during
operations
such
as
JSON-LD
Expansion
or
transformation
to
RDF
,
are
expected
to
do
so
without
experiencing
any
errors.
If
such
operations
are
performed
and
result
in
an
error,
the
verifiable
credential
or
verifiable
presentation
MUST
result
in
a
verification
failure.
It is extremely unlikely that the files that have associated cryptographic hash values in this specification will change. However, if critical errata are found in the specification and corrections are required to ensure ecosystem stability, the cryptographic hash values might change. As such, the HTTP cache times for the files are not set to infinity and implementers are advised to check for errata if a cryptographic hash value change is detected.
This section serves as a reminder of the importance of ensuring that, when verifying verifiable credentials and verifiable presentations , the verifier has information that is consistent with what the issuer or holder had when securing the credential or presentation . This information might include at least:
Verifiers are warned that other data that is referenced from within a credential , such as resources that are linked to via URLs, are not cryptographically protected by default. It is considered a best practice to ensure that the same sorts of protections are provided for any URL that is critical to the security of the verifiable credential through the use of permanently cached files and/or cryptographic hashes. Ultimately, knowing the cryptographic digest of any linked external content enables a verifier to confirm that the content is the same as what the issuer or holder intended.
This section lists URL values that might change during the Candidate Recommendation phase based on migration of documents to time-stamped locations, migration of documents to the W3C Technical Reports namespace, and/or implementer feedback that requires the referenced URLs to be modified.
Implementations that depend on RDF vocabulary processing MUST ensure that the following vocabulary URLs used in the base context ultimately resolve to the following files when loading the JSON-LD serializations, which are normative. Other semantically equivalent serializations of the vocabulary files MAY be used by implementations. A cryptographic hash is provided for each JSON-LD document to ensure that developers can verify that the content of each file is correct.
JSON-LD Documents and Hashes |
---|
URL:
https://www.w3.org/2018/credentials#
Resolved Document: https://www.w3.org/2018/credentials/index.jsonld SHA2-256 Digest:
e3c8b846b166e387f2c9f0d993aa60f750ce4871089afc03bcb379201e9d42d5
|
URL:
https://w3id.org/security#
Resolved Document: https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.jsonld SHA2-256 Digest:
e659cfbacfe7e59bcb96b67bebbc2d70cebafa5b5e5fb69ef339520b16aabe16
|
It
is
possible
to
confirm
the
cryptographic
digests
listed
above
by
running
a
command
like
the
following,
replacing
<DOCUMENT_URL>
with
the
appropriate
value,
through
a
modern
UNIX-like
OS
command
line
interface:
curl
-sL
-H
"Accept:
application/ld+json"
<DOCUMENT_URL>
|
openssl
dgst
-sha256
Implementers
and
document
authors
might
note
that
cryptographic
digests
for
schema.org
are
not
provided.
This
is
because
the
schema.org
vocabulary
undergoes
regular
changes;
any
digest
provided
would
be
out
of
date
within
weeks
of
publication.
The
Working
Group
discussed
this
concern
and
concluded
that
the
vocabulary
terms
from
schema.org
,
that
are
used
by
this
specification,
have
been
stable
for
years
and
are
highly
unlikely
to
change
in
their
semantic
meaning.
The following base classes are defined in this specification for processors and other specifications that benefit from such definitions:
Base Class | Purpose |
---|---|
CredentialEvidence
|
Serves as a superclass for specific evidence types that are placed into the evidence property. |
CredentialSchema
|
Serves as a superclass for specific schema types that are placed into the credentialSchema property. |
CredentialStatus
|
Serves as a superclass for specific credential status types that are placed into the credentialStatus property. |
ConfidenceMethod
|
Serves
as
a
superclass
for
specific
confidence
method
types
that
are
placed
into
the
confidenceMethod
property.
|
RefreshService
|
Serves as a superclass for specific refresh service types that are placed into the credentialRefresh property. |
RenderMethod
|
Serves
as
a
superclass
for
specific
render
method
types
that
are
placed
into
the
renderMethod
property.
|
TermsOfUse
|
Serves as a superclass for specific terms of use types that are placed into the termsOfUse property. |
This section defines datatypes that are used by this specification.
The
sriString
datatype
is
associated
with
a
value
to
provide
the
integrity
information
for
a
resource
using
the
method
specified
in
the
Subresource
Integrity
specification.
The
sriString
datatype
is
defined
as
follows:
https://www.w3.org/2018/credentials#sriString
integrity
attribute
in
the
[
SRI
]
specification,
for
the
restrictions
on
the
string
format.
This section is non-normative.
The
verifiable
credential
and
verifiable
presentation
data
models
leverage
a
variety
of
underlying
technologies
including
[
JSON-LD11
]
and
[
VC-JSON-SCHEMA
].
This
section
will
provide
a
comparison
of
the
@context
,
type
,
and
credentialSchema
properties,
and
cover
some
of
the
more
specific
use
cases
where
it
is
possible
to
use
these
features
of
the
data
model.
The
type
property
is
used
to
uniquely
identify
the
type
of
the
verifiable
credential
in
which
it
appears,
that
is,
to
indicate
which
set
of
claims
the
verifiable
credential
contains.
This
property,
and
the
value
VerifiableCredential
within
the
set
of
its
values,
are
mandatory.
Whilst
it
is
good
practice
to
include
one
additional
value
depicting
the
unique
subtype
of
this
verifiable
credential
,
it
is
permitted
to
either
omit
or
include
additional
type
values
in
the
array.
Many
verifiers
will
request
a
verifiable
credential
of
a
specific
subtype,
then
omitting
the
subtype
value
could
make
it
more
difficult
for
verifiers
to
inform
the
holder
which
verifiable
credential
they
require.
When
a
verifiable
credential
has
multiple
subtypes,
listing
all
of
them
in
the
type
property
is
sensible.
The
use
of
the
type
property
in
a
[
JSON-LD11
]
representation
of
a
verifiable
credential
enables
to
enforce
the
semantics
of
the
verifiable
credential
because
the
machine
is
able
to
check
the
semantics.
With
[
JSON-LD11
],
the
technology
is
not
only
describing
the
categorization
of
the
set
of
claims,
the
technology
is
also
conveying
the
structure
and
semantics
of
the
sub-graph
of
the
properties
in
the
graph.
In
[
JSON-LD11
],
this
represents
the
type
of
the
node
in
the
graph
which
is
why
some
[
JSON-LD11
]
representations
of
a
verifiable
credential
will
use
the
type
property
on
many
objects
in
the
verifiable
credential
.
The
primary
purpose
of
the
@context
property,
from
a
[
JSON-LD11
]
perspective,
is
to
convey
the
meaning
of
the
data
and
term
definitions
of
the
data
in
a
verifiable
credential
,
in
a
machine-readable
way.
The
@context
property
is
used
to
map
the
globally
unique
URLs
for
properties
in
verifiable
credentials
and
verifiable
presentations
into
short-form
alias
names,
making
[
JSON-LD11
]
representations
more
human-friendly
to
read.
From
a
[
JSON-LD11
]
perspective,
this
mapping
also
allows
the
data
in
a
credential
to
be
modeled
in
a
network
of
machine-readable
data,
by
enhancing
how
the
data
in
the
verifiable
credential
or
verifiable
presentation
relates
to
a
larger
machine-readable
data
graph.
This
is
useful
for
telling
machines
how
to
relate
the
meaning
of
data
to
other
data
in
an
ecosystem
where
parties
are
unable
to
coordinate.
This
property,
with
the
first
value
in
the
set
being
https://www.w3.org/ns/credentials/v2
,
is
mandatory.
Since
the
@context
property
is
used
to
map
data
to
a
graph
data
model,
and
the
type
property
in
[
JSON-LD11
]
is
used
to
describe
nodes
within
the
graph,
the
type
property
becomes
even
more
important
when
using
the
two
properties
in
combination.
For
example,
if
the
type
property
is
not
included
within
the
resolved
@context
resource
using
[
JSON-LD11
],
it
could
lead
to
claims
being
dropped
and/or
their
integrity
no
longer
being
protected
during
production
and
consumption
of
the
verifiable
credential
.
Alternatively,
it
could
lead
to
errors
being
raised
during
production
or
consumption
of
a
verifiable
credential
.
This
will
depend
on
the
design
choices
of
the
implementation
and
both
paths
are
used
in
implementations
today,
so
it's
important
to
pay
attention
to
these
properties
when
using
a
[
JSON-LD11
]
representation
of
a
verifiable
credential
or
verifiable
presentation
.
The
primary
purpose
of
the
credentialSchema
property
is
to
define
the
structure
of
the
verifiable
credential
,
and
the
datatypes
for
the
values
of
each
property
that
appears.
A
credentialSchema
is
useful
for
defining
the
contents
and
structure
of
a
set
of
claims
in
a
verifiable
credential
,
whereas
[
JSON-LD11
]
and
a
@context
in
a
verifiable
credential
are
best
used
only
for
conveying
the
semantics
and
term
definitions
of
the
data,
and
can
be
used
to
define
the
structure
of
the
verifiable
credential
as
well.
While
it
is
possible
to
use
some
[
JSON-LD11
]
features
to
allude
to
the
contents
of
the
verifiable
credential
,
it's
not
generally
suggested
to
use
@context
to
constrain
the
data
types
of
the
data
model.
For
example,
"@type":
"@json"
is
useful
for
leaving
the
semantics
open-ended
and
not
strictly
defined.
This
can
be
dangerous
if
the
implementer
is
looking
to
constrain
the
data
type
of
the
claims
in
the
credential
,
and
is
expected
not
to
be
used.
When
the
credentialSchema
and
@context
properties
are
used
in
combination,
both
producers
and
consumers
can
be
more
confident
about
the
expected
contents
and
data
types
of
the
verifiable
credential
and
verifiable
presentation
.
This section is non-normative.
This section will be submitted to the Internet Engineering Steering Group (IESG) for review, approval, and registration with IANA.
This
specification
registers
the
application/vc
media
type
specifically
for
identifying
documents
conforming
to
the
verifiable
credentials
format.
Type name: | application |
Subtype name: | vc |
Required parameters: | None |
Encoding considerations: |
Resources
that
use
the
application/vc
media
type
are
required
to
conform
to
all
of
the
requirements
for
the
application/ld+json
media
type
and
are
therefore
subject
to
the
same
encoding
considerations
specified
in
Section
11
of
The
JavaScript
Object
Notation
(JSON)
Data
Interchange
Format
.
|
Security considerations: | As defined in the Verifiable Credentials Data Model v2.0 . |
Contact: | W3C Verifiable Credentials Working Group public-vc-wg@w3.org |
Note that while the verifiable credentials format uses JSON-LD conventions, there are a number of constraints and additional requirements for verifiable credential implementations that justify the use of a specific media type.
This media type can be used in an enveloping proof to denote the enveloped payload.
The
credential
is
expected
to
be
a
valid
JSON-LD
document
.
Verifiable
credentials
served
with
the
application/vc
media
type
are
expected
to
have
all
JSON-LD
1.1
context
information,
including
references
to
external
contexts,
within
the
body
of
the
document.
Contexts
linked
via
a
http://www.w3.org/ns/json-ld#context
HTTP
Link
Header
(see
Section
6.1
of
JSON-LD
1.1
)
are
ignored.
This
specification
registers
the
application/vp
media
type
specifically
for
identifying
documents
conforming
to
the
verifiable
presentations
format.
Type name: | application |
Subtype name: | vp |
Required parameters: | None |
Encoding considerations: |
Resources
that
use
the
application/vp
media
type
are
required
to
conform
to
all
of
the
requirements
for
the
application/ld+json
media
type
and
are
therefore
subject
to
the
same
encoding
considerations
specified
in
Section
11
of
The
JavaScript
Object
Notation
(JSON)
Data
Interchange
Format
.
|
Security considerations: | As defined in Verifiable Credentials Data Model v2.0 . |
Contact: | W3C Verifiable Credentials Working Group public-vc-wg@w3.org |
Note that while the verifiable presentations format uses JSON-LD conventions, there are a number of constraints and additional requirements for verifiable presentation implementations that justify the use of a specific media type.
This media type can be used in an enveloping proof to denote the enveloped payload.
The
presentation
is
expected
to
be
a
valid
JSON-LD
document
.
Verifiable
presentations
served
with
the
application/vp
media
type
are
expected
to
have
all
JSON-LD
1.1
context
information,
including
references
to
external
contexts,
within
the
body
of
the
document.
Contexts
linked
via
a
http://www.w3.org/ns/json-ld#context
HTTP
Link
Header
(see
Section
6.1
of
[
JSON-LD11
])
are
ignored.
This section is non-normative.
Figure
14
below
is
a
variant
of
Figure
9
:
a
verifiable
presentation
referring
to
two
verifiable
credentials
,
and
using
embedded
proofs
based
on
[
VC-DATA-INTEGRITY
].
Each
verifiable
credential
graph
is
connected
to
its
own
separate
proof
graph
;
the
verifiableCredential
property
is
used
to
connect
the
verifiable
presentation
to
the
verifiable
credential
graphs
.
The
presentation
proof
graph
represents
the
digital
signature
of
the
verifiable
presentation
graph
,
both
verifiable
credential
graphs
,
and
the
proof
graphs
linked
from
the
verifiable
credential
graphs
.
The
complete
verifiable
presentation
consists,
in
this
case,
of
six
information
graphs
.
Figure
15
below
shows
the
same
verifiable
presentation
as
Figure
14
,
but
using
an
enveloping
proof
based
on
[
VC-JOSE-COSE
].
Each
verifiable
credential
graph
contains
a
single
EnvelopedVerifiableCredential
instance,
referring,
via
a
data:
URL
[
RFC2397
],
to
a
verifiable
credential
secured
via
an
enveloping
proof
.
This section contains the substantive changes that have been made to this specification over time.
Changes since the v2.0 First Candidate Recommendation :
@vocab
from
the
base
context
and
added
warnings
about
its
use
in
application-specific
context
files.
application/vc
and
application/vp
.
Changes since the v1.1 Recommendation :
proof
between
Data
Integrity
and
this
specification.
issuer
property.
name
and
description
properties
for
issuers
and
credentials.
dateTimeStamp
is
used
for
time
values.
Provide
further
guidance
on
proper
use
of
time
values
and
timezones.
validFrom
optional.
relatedResource
feature.
renderMethod
and
confidenceMethod
to
list
of
reserved
properties.
termsOfUse
to
presentations
in
v2
context.
application/vc
and
application/vp
.
issuanceDate
/
expirationDate
to
validFrom
/
validUntil
.
credentialSubject
values
cannot
be
strings.
Changes since the v1.0 Recommendation :
id
property
of
the
credentialStatus
and
refreshService
sections
of
the
data
model.
issuer
,
issuanceDate
,
credentialStatus
,
dates,
dead
links,
and
minor
syntax
errors.
This section is non-normative.
The Working Group thanks the following individuals not only for their contributions toward the content of this document, but also for yeoman's work in this standards community that drove changes, discussion, and consensus among a sea of varied opinions: Matt Stone, Gregg Kellogg, Ted Thibodeau Jr, Oliver Terbu, Joe Andrieu, David I. Lehn, Matthew Collier, and Adrian Gropper.
Work on this specification has been supported by the Rebooting the Web of Trust community facilitated by Christopher Allen, Shannon Appelcline, Kiara Robles, Brian Weller, Betty Dhamers, Kaliya Young, Manu Sporny, Drummond Reed, Joe Andrieu, Heather Vescent, Kim Hamilton Duffy, Samantha Chase, and Andrew Hughes. The participants in the Internet Identity Workshop, facilitated by Phil Windley, Kaliya Young, Doc Searls, and Heidi Nobantu Saul, also supported the refinement of this work through numerous working sessions designed to educate about, debate on, and improve this specification.
The Working Group also thanks our Chairs, Dan Burnett, Matt Stone, Brent Zundel, Wayne Chang, and Kristina Yasuda as well as our W3C Staff Contacts, Kazuyuki Ashimura and Ivan Herman, for their expert management and steady guidance of the group through the W3C standardization process.
Portions of the work on this specification have been funded by the United States Department of Homeland Security's Science and Technology Directorate under contracts HSHQDC-17-C-00019, 70RSAT20T00000010/P00001, 70RSAT20T00000029, 70RSAT21T00000016/P00001, 70RSAT23T00000005, 70RSAT23C00000030, 70RSAT23R00000006, 70RSAT24T00000014, 70RSAT22T00000001, and the National Science Foundation under NSF 22-572. The content of this specification does not necessarily reflect the position or the policy of the U.S. Government and no official endorsement should be inferred.
The Working Group would like to thank the following individuals for reviewing and providing feedback on the specification (in alphabetical order):
Christopher Allen, David Ammouial, Joe Andrieu, Bohdan Andriyiv, Ganesh Annan, Kazuyuki Ashimura, Tim Bouma, Pelle Braendgaard, Dan Brickley, Allen Brown, Jeff Burdges, Daniel Burnett, ckennedy422, David Chadwick, Chaoxinhu, Kim (Hamilton) Duffy, Lautaro Dragan, enuoCM, Ken Ebert, Eric Elliott, William Entriken, David Ezell, Nathan George, Reto Gmür, Ryan Grant, glauserr, Adrian Gropper, Joel Gustafson, Amy Guy, Lovesh Harchandani, Daniel Hardman, Dominique Hazael-Massieux, Jonathan Holt, David Hyland-Wood, Iso5786, Renato Iannella, Richard Ishida, Ian Jacobs, Anil John, Tom Jones, Rieks Joosten, Gregg Kellogg, Kevin, Eric Korb, David I. Lehn, Michael Lodder, Dave Longley, Christian Lundkvist, Jim Masloski, Pat McBennett, Adam C. Migus, Liam Missin, Alexander Mühle, Anthony Nadalin, Clare Nelson, Mircea Nistor, Grant Noble, Darrell O'Donnell, Nate Otto, Matt Peterson, Addison Phillips, Eric Prud'hommeaux, Liam Quin, Rajesh Rathnam, Drummond Reed, Yancy Ribbens, Justin Richer, Evstifeev Roman, RorschachRev, Steven Rowat, Pete Rowley, Markus Sabadello, Kristijan Sedlak, Tzviya Seigman, Reza Soltani, Manu Sporny, Orie Steele, Matt Stone, Oliver Terbu, Ted Thibodeau Jr, John Tibbetts, Mike Varley, Richard Varn, Heather Vescent, Christopher Lemmer Webber, Benjamin Young, Kaliya Young, Dmitri Zagidulin, and Brent Zundel.
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: