Copyright © 2023 World Wide Web Consortium . W3C ® liability , trademark and permissive document license rules apply.
This specification defines how to secure credentials and presentations conforming to the [ VC-DATA-MODEL ], with JSON Object Signing and Encryption ( JOSE ), and CBOR Object Signing and Encryption (COSE) [ RFC9052 ]. This enables the Verifiable Credential data model [ VC-DATA-MODEL ]to be implemented with standards for signing and encryption that are widely adopted.
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/.
This document was published by the Verifiable Credentials Working Group as a Working Draft using the Recommendation track .
Publication as a Working Draft does not imply endorsement by W3C and its Members.
This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
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 12 June 2023 W3C Process Document .
This
specification
describes
how
to
secure
media
types
expressing
Verifiable
Credentials
and
Verifiable
Presentations
as
described
in
the
[
VC-DATA-MODEL
],
using
approaches
described
by
the
OAUTH,
JOSE,
and
COSE
working
groups
at
IETF.
This
includes
JWTs
[
RFC7519
],
JWS
[
RFC7515
],
SD-JWT
[
SD-JWT
],
and
COSE
[
RFC9052
],
and
provides
an
approach
using
well-defined
content
types
[
RFC6838
]
and
structured
suffixes
[
MULTIPLE-SUFFIXES
]
to
distinguish
the
data
types
of
documents
conforming
to
[
VC-DATA-MODEL
]
from
the
data
types
of
secured
documents
conforming
to
[
VC-DATA-MODEL
],
defined
in
this
specification.
JSON
Web
Signatures
(JWS)
Selective
Disclosure
JWT
(SD-JWT)
[
RFC7515
SD-JWT
]
provide
provides
a
standardized
mechanism
for
digitally
signing
JSON
documents.
It
provides
a
means
to
ensure
the
integrity,
authenticity,
selective
disclosure
and
non-repudiation
of
the
information
contained
in
a
JSON
document.
JWS
enables
secure
communication
and
trust
between
parties
by
adding
a
cryptographic
signature
to
a
payload.
This
signature
is
generated
using
a
private
key
and
can
be
verified
using
the
corresponding
public
key.
JWS
enables
content
integrity,
authentication
and
non
repudiation,
protecting
data
from
unauthorized
modifications.
The
versatility
and
wide
adoption
of
JWS
make
it
an
essential
component
for
verifying
the
authenticity
and
integrity
of
various
application
media
types,
including
authentication,
authorization,
and
secure
data
exchange.
These
properties
make
JWS
SD-JWT
especially
well
suited
to
securing
the
JSON-LD
[
VC-DATA-MODEL
]
and
through
this
to
provide
a
means
of
supporting
the
three
party
model
(issuer,
holder,
verifier)
for
exchange
of
verifiable
credentials
and
verifiable
presentations.
JSON
Web
Token
(JWT)
[
RFC7519
]
is
a
widely-used
means
of
expressing
claims
,
represented
in
JSON,
to
be
transferred
between
two
parties.
Providing
a
representation
of
the
[
VC-DATA-MODEL
]
for
JWT
allows
existing
systems
and
libraries
to
participate
in
the
ecosystem
described
in
Section
ecosystem
overview
.
A
JWT
encodes
a
set
of
claims
as
a
JSON
object
that
is
secured
via
a
JSON
Web
Signature
(JWS)
[
RFC7515
]
and/or
JSON
Web
Encryption
(JWE)
[
RFC7516
].
For
this
specification,
the
use
of
JWE
is
out
of
scope.
The working group is discussing how we might comment on recent work, that does make use of encryption in OpenID for Verifiable Presentations .
CBOR Object Signing and Encryption (COSE) [ RFC9052 ] is a specification that defines a framework for representing signed and encrypted data using (Concise Binary Object Representation) [RFC8949] data structures. COSE provides a standardized way to secure the integrity, authenticity, and confidentiality of CBOR-encoded information. It offers a flexible and extensible set of cryptographic options, allowing for a wide range of algorithms to be used for signing and encryption. COSE supports two main operations: signing and encryption. For signing, COSE allows the creation of digital signatures over CBOR data using various algorithms such as HMAC, RSA, ECDSA, or EdDSA. These signatures provide assurance of data integrity and authenticity. COSE also supports encryption, enabling the confidentiality of CBOR data by encrypting it with symmetric or asymmetric encryption algorithms.
This section outlines how to secure documents conforming to the [ VC-DATA-MODEL ] using JOSE and COSE.
Documents conforming to the [ VC-DATA-MODEL ], and their associated media types, rely on JSON-LD, which is a flexible and extensible format for describing linked data, see JSON-LD Relationship to RDF .
A benefit to this approach is that payloads can be made to conform directly to the [ VC-DATA-MODEL ] without any mappings or transformation, while at the same time supporting registered claims that are understood in the context of JOSE and COSE.
It is RECOMMENDED that media types be used to distinguish verifiable credentials and verifiable presentations from other kinds of secured JSON or CBOR.
The
most
specific
media
type
(or
subtype)
available
SHOULD
be
used,
instead
of
more
generic
media
types
(or
supertypes).
For
example,
rather
than
the
general
application/sd-jwt
,
application/vc+ld+json+sd-jwt
ought
to
be
used,
unless
there
is
a
more
specific
media
type
that
would
even
better
identify
the
secured
envelope
format.
If implementations do not know which media type to use, media types defined in this specification MUST be used.
This
section
details
how
to
secure
data
payloads
with
the
type
application/vc+ld+json
with
JOSE.
[ rfc7515 ] MAY be used to secure this media type.
The
typ
parameter
SHOULD
be
vc+ld+json+sd-jwt
When
present,
the
cty
SHOULD
be
vc+ld+json
See
Common
JOSE
Header
Parameters
for
additional
details
regarding
usage
of
typ
and
cty
.
{
"@context": ["https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "http://example.edu/credentials/3732",
"type": ["VerifiableCredential",
"UniversityDegreeCredential"
],
"issuer": "https://example.edu/issuers/14",
"issuanceDate": "2010-01-01T19:23:24Z",
"credentialSubject": {
"id": "did:example:123",
"degree": {
"type": "BachelorDegree",
"name": "Bachelor of Science and Arts"
}
}
}
graph
LR
0("VerifiableCredential")
1{{"id"}}
2("http://example.edu/credentials/3732")
3(("type"))
4("UniversityDegreeCredential")
5("issuer")
6("https://example.edu/issuers/14")
7("issuanceDate")
8("2010-01-01T19:23:24Z")
9("credentialSubject")
10{{"id"}}
11("did:example:123")
12("degree")
13(("type"))
14("BachelorDegree")
15("name")
16("Bachelor
of
Science
and
Arts")
0
---
1
1
---
2
0
---
3
3
---
4
0
---
5
5
---
6
0
---
7
7
---
8
0
---
9
9
---
10
10
---
11
9
---
12
12
---
13
13
---
14
12
---
15
15 --- 16
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 - https://www.w3.org/ns/credentials/examples/v2 !sd id: http://example.edu/credentials/3732 !sd type: - VerifiableCredential - UniversityDegreeCredential issuer: https://example.edu/issuers/14 issuanceDate: 2010-01-01T19:23:24Z credentialSubject: !sd id: did:example:123 degree: !sd type: BachelorDegree name: Bachelor of Science and Arts ---------------- Holder Disclosure ---------------- issuer: id: True credentialStatus: id: True credentialSubject: id: True type: False ---------------- Decoded Protected Header ---------------- { "alg": "ES384" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "issuer": "https://example.edu/issuers/14", "issuanceDate": "2010-01-01T19:23:24Z", "credentialSubject": { "degree": { "name": "Bachelor of Science and Arts" }, "id": "did:example:123" }, "iss": "did:web:issuer.example","iat": 1694132937, "exp": 1725755337,"iat": 1694132936, "exp": 1725755336, "cnf": { "jwk": { "kty": "EC", "crv": "P-384", "alg": "ES384","x": "ODPeTWb_OGXCt2Rc8HFccEAjDL6XBbs3PetR13BImlFJRYAXB-IzF4BLjlqtoEBX", "y": "Am0MAuPHOWNLxAsP6rrHPLkXKjmRVrQPAdiP2rpsMlKtPZnhFZ-NPZL48pRLL-KH""x": "9mC6IyqQ-ozGNpQRpoQ1Rr4FEk30o9av6Ber0Ys9E-M9n4XmWfLeBv7tVq5MEOaC", "y": "1iwhlF4pfX1EnPPEpi-GE2aWyNC42Bxxx6jrzEaafz3Xc-7He2UPf6a-884UOmbb" } } } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9leGFtcGxlLmVkdS9pc3N1ZXJzLzE0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsid0hJaWdjRVEyMmJZM3BhLUF1UHQyNi1lQ1VZMzNwRHp0WDJUUjdlU05XayJdfSwiX3NkIjpbInQtY3dqNURGUUtZUWVBejQxdTZjbmstRG5OVnlISXljZzhNWGNWcDZsclkiXX0sIl9zZCI6WyIwV0dmeE53OFgyNFZ1T1d0UEVPbVhPalNLY3RkTkNlSjJQZ2daUE45M04wIiwieUV6UXpPVVNQQ2w4bDBDMlYyemFhSDJ3VHkxSjItVkJmcGZfeF92d1pXbyJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6ImRpZDp3ZWI6aXNzdWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzcsImV4cCI6MTcyNTc1NTMzNywiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoiT0RQZVRXYl9PR1hDdDJSYzhIRmNjRUFqREw2WEJiczNQZXRSMTNCSW1sRkpSWUFYQi1JekY0QkxqbHF0b0VCWCIsInkiOiJBbTBNQXVQSE9XTkx4QXNQNnJySFBMa1hLam1SVnJRUEFkaVAycnBzTWxLdFBabmhGWi1OUFpMNDhwUkxMLUtIIn19fQ.DTQXovR7bWNAc1BTI2vlkhglxUvWix0U-nyBsZBQIES3CawYX5l78RyswvKZVIZLQ0g9Kxv3UABrw-8giQn6p3bGjiUuJBLFWCn8NBHwkeZRLahry9b-L7rXolwkVkUD~WyJRb3J1RGlPbmxDT2VWcnNpLWZzNWNnIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6Im9Cc3BLYVRGTXM1OS1KY2kwUC1iaVEiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.ol7MagXQ2jQh_CUGvZ8meL5z7pFOOL77dgyNV2_re_2PBrWlPdzKA1_znKD7fYgqJxA0vyDCdN21r3zGRwvgejzU-LoygjvLWc4ZAorku-mgEWyPMktPTDmGnXIdXLj9eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9leGFtcGxlLmVkdS9pc3N1ZXJzLzE0IiwiaXNzdWFuY2VEYXRlIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsieXdoNzJkRWlpeVFlV3FCUmFCQ1UwYzVkUnFaRVBySTlHZUZzcV8zd1ItcyJdfSwiX3NkIjpbIkJyOG1GWlUxZzdrS1NaTXV2Vng4UTUzSEVadGNtVmN4RU9fQXdwcjN6M0EiXX0sIl9zZCI6WyJCNUQwbXlxRUNWVTRKODJBYjRTdjJLZUxxUlY0dFRlU3k5dXd6a181V0o0IiwiWjJWRl9QREQtNzdXdnZnWTJnVzlteGtwWjcxZkliYVhidThRQnI4dkJwQSJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6ImRpZDp3ZWI6aXNzdWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzYsImV4cCI6MTcyNTc1NTMzNiwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoiOW1DNkl5cVEtb3pHTnBRUnBvUTFScjRGRWszMG85YXY2QmVyMFlzOUUtTTluNFhtV2ZMZUJ2N3RWcTVNRU9hQyIsInkiOiIxaXdobEY0cGZYMUVuUFBFcGktR0UyYVd5TkM0MkJ4eHg2anJ6RWFhZnozWGMtN0hlMlVQZjZhLTg4NFVPbWJiIn19fQ.Y-Clp5myOAKT_hLe8hQXW5RJiMAf9u8PV1ayCd0KWftyRalS_I0H0Wywjp0FQvBCIQxtpOqmLjPS5LqF6ZFKuvZOGTtYp0I8Puply3DpPxdt2YuED9F6JPnyzBZS7cAY~WyJPRWNjY3BEem9iOVdDYzkzVzBIdlBRIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IlMwYWxkcmlTNGpBNVZEc2FTb0VwZnciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzZ9.Lm9v7fc1lUz74OISmBsuqBaPk_bEZ7030kmI_SV00JLArsivGN28GuCobff5xXlLtKZVwSHHnUMYnsuUIa92E5KBAxYEFGckUp3wuDjuA71KAHSf_XAVZJ4nl0_ZPOo4
This
section
details
how
to
secure
verifiable
presentations
with
the
type
application/vp+ld+json
with
JOSE.
[ rfc7515 ] MAY be used to secure this media type.
The
typ
parameter
SHOULD
be
vp+ld+json+jwt
vp+ld+json+sd-jwt
When
present,
the
cty
parameter
SHOULD
be
vp+ld+json
See
Common
JOSE
Header
Parameters
for
additional
details
regarding
usage
of
typ
and
cty
.
{
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiablePresentation"]
}
graph
LR
69("VerifiablePresentation")
+sd-jwt does not support algorithm none.
{
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiablePresentation"]
}
graph
LR
70("VerifiablePresentation")
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 !sd type: - VerifiablePresentation ---------------- Holder Disclosure ---------------- id: True type: True holder: id: True ---------------- Decoded Protected Header ---------------- { "alg": "ES384" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2" ], "iss": "did:web:issuer.example","iat": 1694132937, "exp": 1725755337,"iat": 1694132936, "exp": 1725755336, "cnf": { "jwk": { "kty": "EC", "crv": "P-384", "alg": "ES384","x": "NiQY3HrEbNmfBo1NoFLf1Ko2qV8PzlmQxhxRJ1au5rh6nq3HXqdp5opxlkOrq5zR", "y": "gJXX7iVA70kA0h06IJ7m0_3gv662tEgu9s0m9PzHF_GSou6kXr3ywQQ30LiTxGfS""x": "pxWiTN81rzTkh-jpZBWK4OMtEC0YIHY0wRN9U1-pD5UO65OiT7MgflWtrq4XEQNx", "y": "dPuIQNwej7Bv44BJJ5lxRaLcXLKbgJaVrYht24Ud2K2TQZOWG2cE_yHd1M1hw6aD" } }, "type": [ "VerifiablePresentation" ] } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiX3NkIjpbInpPYm9xYTdxdGoweHRvOThaVEFLYTdWTU5DdjNkdFJTdGFlenRZTXBja3MiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJpc3MiOiJkaWQ6d2ViOmlzc3Vlci5leGFtcGxlIiwiaWF0IjoxNjk0MTMyOTM3LCJleHAiOjE3MjU3NTUzMzcsImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6Ik5pUVkzSHJFYk5tZkJvMU5vRkxmMUtvMnFWOFB6bG1ReGh4UkoxYXU1cmg2bnEzSFhxZHA1b3B4bGtPcnE1elIiLCJ5IjoiZ0pYWDdpVkE3MGtBMGgwNklKN20wXzNndjY2MnRFZ3U5czBtOVB6SEZfR1NvdTZrWHIzeXdRUTMwTGlUeEdmUyJ9fX0.RrukAYCVbbJpa3KR0aICMQomv5Jg4cJDIYV342vaHsOwhTDV7LKrjAqBFkFSP8zyfq3paUUvwAiGFBNgYtrKC1MoGygaXwUmuDaNVVNjJinuOGgyQuSFZ_lDdjpuc4RN~WyJxb2FMeExQelZuQlNaWmhGR21OdHFRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IlJxYnloYUp1dEZnUWE2QmtCc2FldGciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.-Hk68XD9-TrAU_Q0-MEXe_DD--Bxj-ieOlHApS-Z6FkW61nxgHme2SFiz5ncbOAE2TbN21TNZP63inePEr1CV4RVV7RzJEP-AJlp3wpe6RYqChHSFuj3HvEUS7HhCYzQeyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiX3NkIjpbIkJnbXBHWFdUU3JEaGhQWU80c3lNVUlTVDhvekxrOWs3QW9rNnRlMEJVejAiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJpc3MiOiJkaWQ6d2ViOmlzc3Vlci5leGFtcGxlIiwiaWF0IjoxNjk0MTMyOTM2LCJleHAiOjE3MjU3NTUzMzYsImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6InB4V2lUTjgxcnpUa2gtanBaQldLNE9NdEVDMFlJSFkwd1JOOVUxLXBENVVPNjVPaVQ3TWdmbFd0cnE0WEVRTngiLCJ5IjoiZFB1SVFOd2VqN0J2NDRCSko1bHhSYUxjWExLYmdKYVZyWWh0MjRVZDJLMlRRWk9XRzJjRV95SGQxTTFodzZhRCJ9fX0.AOjF5uNw7LUOauZh1U_KzZVRhUnxqeL42aMi4KTy35-6_xuoXzuK78zHTyGDze13HNhZLRuGuYhgLWLI5N7zLbB0Ixp2FScD94eVfrmQX3cc-RYYGnECYj9QfsYVKsln~WyJjYUZfR2tORmpDclVYcXpfZ3hGdkFBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6Ikc0bENJeFlVUGNZdEJPSnAzVXliNEEiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.JtW5hFgYGiC57_qGce3r4lMvQU8ZVbyznNAEh6P8s-rd_wonmBrrI657juotNG4ppKRRkv53Tz6PA7z0g3JiNcSkhp7IR5Aqh5T5EV7O2uRT1FGhKBAOaECxy0JYDied
{
"@context": ["https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": ["VerifiablePresentation"],
"holder": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs"
}
graph
LR
71("VerifiablePresentation")
72("holder")
73("urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs")
71
---
72
72 --- 73
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 - https://www.w3.org/ns/credentials/examples/v2 !sd type: - VerifiablePresentation holder: urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs ---------------- Holder Disclosure ---------------- id: True type: True holder: id: True ---------------- Decoded Protected Header ---------------- { "alg": "ES384" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "holder": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs", "iss": "did:web:issuer.example", "iat": 1694132937, "exp": 1725755337, "cnf": { "jwk": { "kty": "EC", "crv": "P-384", "alg": "ES384","x": "j73bCr5ZwR5TL5e1afZGHLFiuC4AFU444CPHiYLJd9I5FxfYK_Gw-i-3cKePo6RE", "y": "wgyFH_peaROeUezKkko6eyUN0-4iJ85FZE9NYo8Pi_MYyDIF47V4fn7uWNOuM_zV""x": "DMg1FT0ig7e3ypNrw84XWSWYadqWtdcayciQtxJU4tbDmuzwgKSmLuoEosCNYHCK", "y": "4VXbFwJPqAfnQagPn1XwjU50_qoVWzKXwR0kDiVP7LUbdBMABNw-MSFYlshmf-PT" } }, "type": [ "VerifiablePresentation" ] } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaG9sZGVyIjoidXJuOmlldGY6cGFyYW1zOm9hdXRoOmp3ay10aHVtYnByaW50OnNoYS0yNTY6TnpiTHNYaDh1RENjZC02TU53WEY0V183bm9XWEZaQWZIa3hac1JHQzlYcyIsIl9zZCI6WyIyeC1INmZ2OFljbGZMNXQxbjREeEkyN3ZpQkF2YWxvendBZlRuY0hIbWpVIl0sIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiZGlkOndlYjppc3N1ZXIuZXhhbXBsZSIsImlhdCI6MTY5NDEzMjkzNywiZXhwIjoxNzI1NzU1MzM3LCJjbmYiOnsiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0zODQiLCJhbGciOiJFUzM4NCIsIngiOiJqNzNiQ3I1WndSNVRMNWUxYWZaR0hMRml1QzRBRlU0NDRDUEhpWUxKZDlJNUZ4ZllLX0d3LWktM2NLZVBvNlJFIiwieSI6IndneUZIX3BlYVJPZVVlektra282ZXlVTjAtNGlKODVGWkU5TllvOFBpX01ZeURJRjQ3VjRmbjd1V05PdU1felYifX19.870zcYX-cDYDvQvR4eXvVrNNucbCD1PDeZal_qAP_f18J3zRQ661K40ADjIxh-DGGr2uLBX69vDYKaB0jYM1efgQHGZaKWwhdCCL0qM6IhVP_mfC0uCTLL-iPzP70DyJ~WyJIb2FwdlZneWFkUlBmQlNDME1EcG5RIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IktFNGNPamRneXFWZ1lIaE8yLUVCR1EiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.lzwzlZJ8XCSScGdqB3rR0TSP1rm_f0buKVpWvcGmRGu4PZQ-Vg8E2joMTcSE63TjSwzBr8pRg4ijeR6aEkspT-U04bVqCyHlAbxfx7LD1p2n1m_ipAUgUzVtG-R-PPB1eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaG9sZGVyIjoidXJuOmlldGY6cGFyYW1zOm9hdXRoOmp3ay10aHVtYnByaW50OnNoYS0yNTY6TnpiTHNYaDh1RENjZC02TU53WEY0V183bm9XWEZaQWZIa3hac1JHQzlYcyIsIl9zZCI6WyJUOThPY2h5T2lEMzg0aHVqeldFTlBoTEhLTm03eVNOMmFuY2xIMTZlT0JNIl0sIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiZGlkOndlYjppc3N1ZXIuZXhhbXBsZSIsImlhdCI6MTY5NDEzMjkzNywiZXhwIjoxNzI1NzU1MzM3LCJjbmYiOnsiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0zODQiLCJhbGciOiJFUzM4NCIsIngiOiJETWcxRlQwaWc3ZTN5cE5ydzg0WFdTV1lhZHFXdGRjYXljaVF0eEpVNHRiRG11endnS1NtTHVvRW9zQ05ZSENLIiwieSI6IjRWWGJGd0pQcUFmblFhZ1BuMVh3alU1MF9xb1ZXektYd1Iwa0RpVlA3TFViZEJNQUJOdy1NU0ZZbHNobWYtUFQifX19.g_A2cvk53a8z1X0N8S15kuRmS2yuiilXXascVsF8x2C8Lm7RmRmPPYO1A1AHg4vEviCDWwmGWNt5iSoFe48ISukLxZk8aDNuXYyb5S6ZL5DiEg_o94_1e3UIqC_s10AZ~WyJ4Qml5NndraGZOLTZVSllyaXlmU25BIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IldIRElfdDR2LTRsbUpGenhyNHdRV0EiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.SPnehNv8t5Tlcz8Lar-7BCTtq8sBBFVEPJ-AHbBlzAsezar9_61EDOr0P-oIYBx3AdC339Gmkv1ZnUbUwDsDDxDsfOXkuOov49o3Kyvv46nMsct6bqNpON4O_7JQ4p5S
{
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiablePresentation"],
"holder": {
"id": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs",
"type": "Organization",
"name": "Contoso"
}
}
graph
LR
74("VerifiablePresentation")
75("holder")
76{{"id"}}
77("urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs")
78(("type"))
79("Organization")
80("name")
81("Contoso")
74
---
75
75
---
76
76
---
77
75
---
78
78
---
79
75
---
80
80 --- 81
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 !sd type: - VerifiablePresentation holder: !sd id: urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs !sd type: Organization name: Contoso ---------------- Holder Disclosure ---------------- id: True type: True holder: id: True ---------------- Decoded Protected Header ---------------- { "alg": "ES384" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2" ], "holder": { "name": "Contoso", "id": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs" }, "iss": "did:web:issuer.example", "iat": 1694132937, "exp": 1725755337, "cnf": { "jwk": { "kty": "EC", "crv": "P-384", "alg": "ES384","x": "aQ8TIE46DIcTSs9TWgtUVCyzt12RCUYL2lF1dcNQ1xXY5eTPZsWGkZLwmjqnMKIZ", "y": "_Kp9nNvk0qC3jaXibHOf0F-z03ftY5an3V8eH9dzchwe3z0IyCXrIfO96Bo6Glek""x": "d-gZKxvagBrW63kJRU2hatAt_ZIE6nKTFO_ZcOda_FjQ1hWNLkWfrDNCwMIWf0Mq", "y": "VnGe7MYcz2PxLNyy657UjIyGDHWfRYtMCB8TfyMN0fTl5jR8F77N3uLzjh4EazZA" } }, "type": [ "VerifiablePresentation" ] } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiaG9sZGVyIjp7Im5hbWUiOiJDb250b3NvIiwiX3NkIjpbIkc0NWxsUFdVY2lNM0FNOFdQUlR6a0J1eGY2ZGNOOFpMVGp2OEYybnZubWciLCJyejlUOXJIeHBvYnFjYk56eWQyWjJGdC14VHdNYnNVajE0Nzl2a0FjQzV3Il19LCJfc2QiOlsiZnF4eEtFbkdoVHZkaXAzUjRsOEsxYXFYUkt6NlhuTnhpTFctVHR6b3ZxTSJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6ImRpZDp3ZWI6aXNzdWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzcsImV4cCI6MTcyNTc1NTMzNywiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoiYVE4VElFNDZESWNUU3M5VFdndFVWQ3l6dDEyUkNVWUwybEYxZGNOUTF4WFk1ZVRQWnNXR2taTHdtanFuTUtJWiIsInkiOiJfS3A5bk52azBxQzNqYVhpYkhPZjBGLXowM2Z0WTVhbjNWOGVIOWR6Y2h3ZTN6MEl5Q1hySWZPOTZCbzZHbGVrIn19fQ.qDHYBl_Kwx-5hfRALRVRQppU7OgFjcDMbv0eIzT4vF6Pjlvd4de6zlslivGO60MQsteIEGqU7VeCM-zZe7MIzWh7sp3Zel5Z5gYXO3fMOSHxoCHlSCol1qqr_6qEnIiT~WyJvTWQwelRyUExsMkN3NHlsaFQzSGFRIiwgImlkIiwgInVybjppZXRmOnBhcmFtczpvYXV0aDpqd2stdGh1bWJwcmludDpzaGEtMjU2Ok56YkxzWGg4dURDY2QtNk1Od1hGNFdfN25vV1hGWkFmSGt4WnNSR0M5WHMiXQ~WyJhb1kwSFMwbE5CSjg0RnRuOHVGNVRnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6InVjRkNSZ21jc3htUHVIeVFrdy1JUHciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.KBitwKdkjvGpgYAjv8BgHscQDSr5o2QVS5tSxKcehkZuxXF34vYvNNP6iHhZCGzgxh6SJm_VjV3gkfZz3XuPDc37NL9XDHgeVGVEpbiFnhYkUXWnRUtZiMIq1WuwYZSkeyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiaG9sZGVyIjp7Im5hbWUiOiJDb250b3NvIiwiX3NkIjpbIlVpWjdRZWpuTXlDbUh3SHBxaGJLa1BFdnNJTXZleXphYTdDS0hYblU5TFUiLCJkT182OUZsSTF2Qmg4NzlPckZ6OWEzaHlHS2Z0MGV6THBfNlY5WWtHYWtVIl19LCJfc2QiOlsiY2lJRTBfOXY0S3JOMTkxWjBHRV9Dd19ETTZJcDRlY2o0Rm5iUG4zazREQSJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6ImRpZDp3ZWI6aXNzdWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzcsImV4cCI6MTcyNTc1NTMzNywiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoiZC1nWkt4dmFnQnJXNjNrSlJVMmhhdEF0X1pJRTZuS1RGT19aY09kYV9GalExaFdOTGtXZnJETkN3TUlXZjBNcSIsInkiOiJWbkdlN01ZY3oyUHhMTnl5NjU3VWpJeUdESFdmUll0TUNCOFRmeU1OMGZUbDVqUjhGNzdOM3VMempoNEVhelpBIn19fQ.9Qii7wpDOWgfocuz_8aMxIov4ibfNKeXQWYhr0IqwQYVHd_0ubAi5RO1EOZDVCWxGIW3dxRYZ4KY8vThb2NjEARM998A6VLsysgM4yOO9br7YQhqkr3JS7vxoS1db1q9~WyJDT3BFTWFOUkk2c21NaHAxRXJiX1dRIiwgImlkIiwgInVybjppZXRmOnBhcmFtczpvYXV0aDpqd2stdGh1bWJwcmludDpzaGEtMjU2Ok56YkxzWGg4dURDY2QtNk1Od1hGNFdfN25vV1hGWkFmSGt4WnNSR0M5WHMiXQ~WyJGRXZvelBmOHBfZnUxbTR0NUtUNVNRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IkNpU1Ffb1pXZ2FWVVlxYjFhYXZXRVEiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.XhKPMbFS0NB9LL9vp1s-iIaqOeWdhOP7WTLAJqFwzupkrFFVvGENcPBPACYCJPTE88jgmpsPOXhVMFkdrjJtE1KrGGC3DUOboTLFZa2EPqciADih9C8YWIq2KDT6AU88
COSE [ rfc9052 ] is a common approach to encoding and securing information using CBOR [ rfc8949 ]. Verifiable credentials MAY be secured using COSE [ rfc9052 ] and SHOULD be identified through use of content types as outlined in this section.
This
section
details
how
to
secure
data
with
the
type
application/vc+ld+json
with
COSE.
[ rfc9052 ] MAY be used to secure this media type.
When
using
this
approach,
the
type
(TBD)
SHOULD
be
vc+ld+json+cose
See draft-jones-cose-typ-header-parameter , regarding progress towards explicit typing for COSE.
When
using
this
approach,
the
content
type
(3)
SHOULD
be
application/vc+ld+json
See Common COSE Header Parameters for additional details.
See Concise Binary Object Representation (CBOR) Tags for additional details.
There
is
no
registered
tag
for
typ
in
COSE.
This prevents following the guidance from the JWT BCP
This section is non-normative.
Issuers , holders and verifiers might rely on clients, as defined in RFC4949 . Such clients are often referred to as wallets or digital credential wallets , when they support storing and presenting digital credentials.
In order to meet verifier requirements, some issuers might need to assess the quality of a wallet used by a holder , prior to issuing and delivering credentials to a holder .
For example, some verifiers might require that cryptographic material associated with a holder , be protected at specific assurance levels. (See NIST 800-63-3: Authenticator Assurance Levels .)
Also see OAuth 2.0 Attestation-Based Client Authentication .
The working group is still discussing how to close many related issues.
Originally posted by @TallTed in #111 (comment)
line 377 says (and another line says the same) --
If <code>kid</code> is also present, it is expected to be useful to distinguish the specific key used.
-- in response to which I ask --
how is
kid
to beuseful to distinguish the specific key used
? This cries out for an example, or a fair amount of additional prose.
Just read that section, and I have to say that it's not intuitive at all. I think it would be worth either: adding an example that refers to this controller document, pointing to the spec you mentioned, or explicitly stating the relationship between controller docs and `iss` & `kid`.
Originally posted by @andresuribe87 in #104 (comment)
https://www.w3.org/TR/vc-data-model/#jwt-encoding shows:
kid MAY be used if there are multiple keys associated with the issuer of the JWT. The key discovery is out of the scope of this specification. For example, the kid can refer to a key in a DID document , or can be the identifier of a key inside a JWKS.
I'd like some clarification on the optionality of the "kid" field. My guess is that VCs/VPs are trying to be generic regarding issuers/holders, allowing for URIs, which precludes the possibility of giving any more details about how the "kid" field should be used. Is that right?
I'm coming from a DID-centric ecosystem, and in that scenario it seems that there's no reason not to set the "kid" field on a JWT-formatted VC/VP to the DID fragment URL of the specific key used to sign. From w3c/vc-data-model#914 I understand that it would still be necessary to tie the "kid" to the "iss" field, but that seems fine.
As far as I can tell, if the "kid" field is missing, and assuming we're working with DIDs here, the process to resolve the signing key has to be:
To me, this seems sloppy, involving unnecessary complexity and computation, and making detecting errors in implementations harder. It also wouldn't scale if for whatever reason a DID had very many keys (inefficient at best, possible DoS at worst). Maybe I'm missing something here. Can anyone comment on this? Thanks.
See https://github.com/decentralized-identity/did-jose-extensions/blob/master/options.md
^ this guidance is ancient, I believe we can do better.
Can we add an explanation why do these members need to be translated to the equivalents of the JWT claims?
iss, nbf, all of them are optional in RFC 7519 itself. They only become required when the JWT is used for a specific purpose, and the only place I can think of right now is an ID Token.
See: #11 (comment)
Originally posted by @TallTed in #111 (comment)
line 377 says (and another line says the same) --
If <code>kid</code> is also present, it is expected to be useful to distinguish the specific key used.
-- in response to which I ask --
how is
kid
to beuseful to distinguish the specific key used
? This cries out for an example, or a fair amount of additional prose.
Originally posted by @TallTed in #111 (comment)
line 377 says (and another line says the same) --
If <code>kid</code> is also present, it is expected to be useful to distinguish the specific key used.
-- in response to which I ask --
how is
kid
to beuseful to distinguish the specific key used
? This cries out for an example, or a fair amount of additional prose.
In order to complete the verification process, a verifier needs to obtain the cryptographic keys used to secure the credential .
There are several different ways to discover the verification keys of the issuers and holders .
When found in the Protected Header , or the Protected Claimset , members present in IANA Assignments for JSON Web Token (JWT) and IANA Assignments for JSON Object Signing and Encryption (JOSE) are to be interpreted according to the associated specifications referenced by IANA.
Registered claims that are present in either the Protected Header or the Claimset can be used to help verifiers discover verification keys.
If
kid
is
present
in
the
Protected
Header
,
a
verifier
can
use
this
parameter
to
obtain
a
JSON
Web
Key
to
use
in
the
verification
process.
If
iss
is
present
in
the
Protected
Header
or
the
JWT
Claims
,
a
verifier
can
use
this
parameter
to
obtain
a
JSON
Web
Key
to
use
in
the
verification
process.
If
kid
is
also
present
in
the
Protected
Header
,
it
is
expected
to
be
useful
to
distinguish
the
specific
key
used.
If
cnf
is
present
in
the
Protected
Header
or
the
JWT
Claims
,
a
verifier
can
use
this
parameter
to
obtain
a
JSON
Web
Key
to
use
in
the
verification
process.
If
kid
is
also
present
in
the
Protected
Header
,
it
is
expected
to
be
useful
to
distinguish
the
specific
key
used.
The working group is currently exploring how Defining Well-Known Uniform Resource Identifiers (URIs) could be leveraged to assist a verifier in discovering verification keys for issuers and holders .
OpenID Connect uses Well-Known Uniform Resource Identifiers (URIs) to enable issuer key discovery.
The
verifier
(or
relying
party)
decodes
the
JWT
claimset,
and
obtains
the
iss
claim.
The
iss
value
is
converted
to
the
well-known
OpenID
Connect
Configuration
Endpoint
URL
by
applying
the
following
URI
template:
https://{iss}/
.well-known
/openid-configuration
The
OIDC
Configuration
Endpoint
URL
is
dereferenced
to
a
JSON
document
which
contains
issuer
configuration
details,
one
of
which
is
the
jwks_uri
.
This
URL
might
also
be
well-known,
for
example:
https://{iss}/
.well-known
/jwks
The
OIDC
jwks_uri
is
dereferenced
to
a
JSON
Web
Key
Set.
The content type of the key set could be application/jwk-set+json or application/json .
Here is an example of a key set used by an issuer:
{
"keys": [
{
"alg": "RS256",
"kty": "RSA",
"use": "sig",
"n": "wW9TkSbcn5FV3iUJ-812sqTvwTGCFrDm6vD2U-g23gn6rrBdFZQbf2bgEnSkolph6CanOYTQ1lKVhKjHLd6Q4MDVGidbVBhESxib2YIzJVUS-0oQgizkBEJxyHI4Zl3xX_sdA_yegLUi-Ykt_gaMPSw_vpxe-pBxu-jd14i-jDfwoPJUdF8ZJGS9orCPRiHCYLDgOscC9XibH9rUbTvG8q4bAPx9Ox6malx4OLvU3pXVjew6LG3iBi2YhpCWe6voMvZJYXqC1n5Mk_KOdGcCFtDgu3I56SGSfsF7-tI7qG1ZO8RMuzqH0LkJVirujYzXrnMZ7WgbMPXmHU8i4z04zw",
"e": "AQAB",
"kid": "NTBGNTJEMDc3RUE3RUVEOTM4NDcyOEFDNzEyOTY5NDNGOUQ4OEU5OA",
"x5t": "NTBGNTJEMDc3RUE3RUVEOTM4NDcyOEFDNzEyOTY5NDNGOUQ4OEU5OA",
"x5c": [
"MIIDCzCCAfOgAwIBAgIJANPng0XRWwsdMA0GCSqGSIb3DQEBBQUAMBwxGjAYBgNVBAMMEWNvbnRvc28uYXV0aDAuY29tMB4XDTE0MDcxMTE2NTQyN1oXDTI4MDMxOTE2NTQyN1owHDEaMBgGA1UEAwwRY29udG9zby5hdXRoMC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBb1ORJtyfkVXeJQn7zXaypO/BMYIWsObq8PZT6DbeCfqusF0VlBt/ZuASdKSiWmHoJqc5hNDWUpWEqMct3pDgwNUaJ1tUGERLGJvZgjMlVRL7ShCCLOQEQnHIcjhmXfFf+x0D/J6AtSL5iS3+Bow9LD++nF76kHG76N3XiL6MN/Cg8lR0XxkkZL2isI9GIcJgsOA6xwL1eJsf2tRtO8byrhsA/H07HqZqXHg4u9TeldWN7DosbeIGLZiGkJZ7q+gy9klheoLWfkyT8o50ZwIW0OC7cjnpIZJ+wXv60juobVk7xEy7OofQuQlWKu6NjNeucxntaBsw9eYdTyLjPTjPAgMBAAGjUDBOMB0GA1UdDgQWBBTLarHdkNa5CzPyiKJU51t8JWn9WTAfBgNVHSMEGDAWgBTLarHdkNa5CzPyiKJU51t8JWn9WTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQA2FOjm+Bpbqk59rQBC0X6ops1wBcXH8clnXfG1G9qeRwLEwSef5HPz4TTh1f2lcf4Pcq2vF0HbVNJFnLVV+PjR9ACkto+v1n84i/U4BBezZyYuX2ZpEbv7hV/PWxg8tcVrtyPaj60UaA/pUA86CfYy+LckY4NRKmD7ZrcCzjxW2hFGNanfm2FEryxXA3RMNf6IiW7tbJ9ZGTEfA/DhVnZgh/e82KVX7EZnkB4MjCQrwj9QsWSMBtBiYp0/vRi9cxDFHlUwnYAUeZdHWTW+Rp2JX7Qwf0YycxgyjkGAUEZc4WpdNiQlwYf5G5epfOtHGiwiJS+u/nSYvqCFt57+g3R+"
]
},
{
"alg": "RS256",
"kty": "RSA",
"use": "sig",
"n": "ylgVZbNR4nlsU_AbU8Zd7ZhVfmYuwq-RB1_YQWHY362pAed-qgSXV1QmKwCukQ2WDsPHWgpPuEf3O_acmJcCiSxhctpBr5WKkji5o50YX2FqC3xymGkYW5NilvFznKaKU45ulBVByrcb3Vt8BqqBAhaD4YywZZKo7mMudcq_M__f0_tB4fHsHHe7ehWobWtzAW7_NRP0_FjB4Kw4PiqJnChPvfbuxTCEUcIYrshRwD6GF4D_oLdeR44dwx4wtEgvPOtkQ5XIGrhQC_sgWcb2jh7YXauVUjuPezP-VkK7Wm9mZRe758q43SWxwT3afo5BLa3_YLWazqcpWRXn9QEDWw",
"e": "AQAB",
"kid": "aMIKy_brQk3nLd0PKd9ln",
"x5t": "-xcTyx47q3ddycG7LtE6QCcETbs",
"x5c": [
"MIIC/TCCAeWgAwIBAgIJH62yWyX7VxxQMA0GCSqGSIb3DQEBCwUAMBwxGjAYBgNVBAMTEWNvbnRvc28uYXV0aDAuY29tMB4XDTIwMDMxMTE5Mjk0N1oXDTMzMTExODE5Mjk0N1owHDEaMBgGA1UEAxMRY29udG9zby5hdXRoMC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKWBVls1HieWxT8BtTxl3tmFV+Zi7Cr5EHX9hBYdjfrakB536qBJdXVCYrAK6RDZYOw8daCk+4R/c79pyYlwKJLGFy2kGvlYqSOLmjnRhfYWoLfHKYaRhbk2KW8XOcpopTjm6UFUHKtxvdW3wGqoECFoPhjLBlkqjuYy51yr8z/9/T+0Hh8ewcd7t6Fahta3MBbv81E/T8WMHgrDg+KomcKE+99u7FMIRRwhiuyFHAPoYXgP+gt15Hjh3DHjC0SC8862RDlcgauFAL+yBZxvaOHthdq5VSO497M/5WQrtab2ZlF7vnyrjdJbHBPdp+jkEtrf9gtZrOpylZFef1AQNbAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFPVdE4SPvuhlODV0GOcPE4QZ7xNuMA4GA1UdDwEB/wQEAwIChDANBgkqhkiG9w0BAQsFAAOCAQEAu2nhfiJk/Sp49LEsR1bliuVMP9nycbSz0zdp2ToAy0DZffTd0FKk/wyFtmbb0UFTD2aOg/WZJLDc+3dYjWQ15SSLDRh6LV45OHU8Dkrc2qLjiRdoh2RI+iQFakDn2OgPNgquL+3EEIpbBDA/uVoOYCbkqJNaNM/egN/s2vZ6Iq7O+BprWX/eM25xw8PMi+MU4K2sJpkcDRwoK9Wy8eeSSRIGYnpKO42g/3QI9+BRa5uD+9shG6n7xgzAPGeldUXajCThomwO8vInp6VqY8k3IeLEYoboJj5KMfJgOWUkmaoh6ZBJHnCogvSXI35jbxCxmHAbK+KdTka/Yg2MadFZdA=="
]
}
]
}
The
verifier
(or
relying
party)
uses
kid
from
the
protected
header
of
the
JWT
to
identify
the
public
key,
controlled
by
the
issuer,
and
uses
it
to
verify
the
token.
The verifier (or relying party) verifies the signature on the JWT. After verification, the claims the issuer has made about the subject can be reviewed or processed, because the integrity of the claims has been protected by a digital signature verification.
The normative statements in Registered Header Parameter Names apply to securing credentials and presentations.
The normative statements in JOSE Header apply to securing credentials and presentations.
The data model for the protected header is JSON (application/json), not JSON-LD (application/ld+json).
The normative statements in Replicating Claims as Header Parameters apply to securing claims about a credential subject.
When
replicating
claims
from
the
claimset
to
the
header,
it
is
RECOMMENDED
to
use
[
RFC7519
],
IANA
Assignments
for
Header
Parameters
,
and
IANA
Assignments
for
JSON
Web
Token
(JWT)
to
identify
any
reserved
claims
that
might
be
confused
with
members
of
the
[[VC-DATA-MODEL].
This
includes
but
is
not
limited
to:
iss
,
kid
,
alg
,
iat
,
exp
and
cnf
.
The
registered
claim
names
vc
and
vp
MUST
NOT
be
present
as
header
parameters.
When present, members of the header are to be interpreted and processed according to IANA Assignments for JSON Web Token (JWT) and IANA Assignments for JSON Object Signing and Encryption (JOSE) .
Additional members may be present, if they are not understood, they MUST be ignored.
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 , RECOMMENDED , and SHOULD 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.
The
Verifiable
Credentials
Data
Model
v1.1
describes
the
approach
taken
by
JSON
Web
Tokens
to
secure
claimsets
as
applying
an
external
proof
.
The
normative
statements
in
Securing
Verifiable
Credentials
apply
to
securing
application/vc+ld+json
and
application/vp+ld+json
as
and
application/vc+ld+json+jwt
application/vc+ld+json+sd-jwt
.
application/vp+ld+json+jwt
application/vp+ld+json+sd-jwt
For clarity, these requirements are repeated here:
At least one securing mechanism, and the details necessary to evaluate it, MUST be expressed for a credential or presentation to be a verifiable credential or verifiable presentation; that is, to be verifiable.
Methods of securing credentials or presentations that embed a proof in the data model MUST use the proof property.
Methods of securing credentials or presentations that use an external proof MAY use the proof property.
One or more cryptographic proofs that can be used to detect tampering and verify the authorship of a credential or presentation. The specific method used for an embedded proof MUST be included using the type property.
The
type
VerifiableCredential
and
VerifiablePresentation
are
RDF
Classes.
The
presence
of
the
word
"Verifiable"
does
not
convey
a
cryptographic
verification
capability
exists.
The
presence
of
the
JSON
proof
member
does
not
convey
a
cryptographic
verification
capability
exists.
The
presence
of
the
JSON
proof
member
is
optional
in
both
VerifiableCredential
and
VerifiablePresentation
.
The
presence
of
the
JSON
proof
member
is
optional
in
both
application/vc+ld+json
and
application/vp+ld+json
.
JSON Web Token implementers are advised to review Implementation Requirements .
Accordingly,
Issuers,
Holders
and
Verifiers
MUST
understand
the
JSON
Web
Token
header
parameter
"alg":
"none"
when
securing
the
[
VC-DATA-MODEL
]
with
JSON
Web
Tokens.
When
content
types
from
the
[
VC-DATA-MODEL
]
are
secured
using
JSON
Web
Tokens,
the
header
parameter
"alg":
"none"
,
MUST
be
used
to
communicate
that
a
claimset
(a
Verifiable
Credential
or
a
Verifiable
Presentation)
has
no
integrity
protection.
When
a
JSON
Web
Token
claimset
(a
Verifiable
Credential
or
a
Verifiable
Presentation)
contains
proof
,
and
the
JSON
Web
Token
header
contains
"alg":
"none"
,
the
claimset
MUST
be
considered
to
have
no
integrity
protection.
Verifiable
Credentials
and
Verifiable
Presenatations
are
not
required
to
be
secured
or
integrity
protected
or
to
contain
a
proof
member.
Issuers, Holders and Verifiers MUST ignore all claimsets that have no integrity protection.
This
specification
registers
the
Media
Type
specifically
for
identifying
a
application/vc+ld+json+jwt
application/vc+ld+json+sd-jwt
Verifiable
Credential
that
has
been
secured
using
a
JWT
.
Type
name:
application
Subtype
name:
vc+ld+json+jwt
Required
parameters:
None
Encoding
considerations:
application/vc+ld+json+jwt
values
are
encoded
as
a
series
of
base64url
encoded
values
(some
of
which
may
be
the
empty
string)
each
separated
from
the
next
by
a
single
period
('.')
character.
Security
considerations:
As
defined
in
this
specification.
See
also
the
security
considerations
in
[
RFC7519
Selective
Disclosure
for
JWTs
(SD-JWT)
].
Contact:
W3C
Verifiable
Credentials
Working
Group
public-vc-wg@w3.org
7.1.2
application/vp+ld+json+jwt
This
specification
registers
conforming
to
the
application/vp+ld+json+jwt
Media
Type
for
identifying
a
Verifiable
Presentation
that
has
been
secured
using
a
JWT
.
Credentials.
Type name: | application |
Subtype name: |
|
Required parameters: | None |
Encoding considerations: |
|
Security considerations: |
As
defined
in
this
specification.
See
also
the
security
considerations
in
|
Contact: | W3C Verifiable Credentials Working Group public-vc-wg@w3.org |
This
specification
registers
the
Media
Type
specifically
for
identifying
a
Selective
Disclosure
for
JWTs
(SD-JWT)
conforming
to
the
Verifiable
application/vc+ld+json+sd-jwt
application/vp+ld+json+sd-jwt
Credentials.
Presentations.
Type name: | application |
Subtype name: |
|
Required parameters: | None |
Encoding considerations: | binary; application/sd-jwt values are a series of base64url-encoded values (some of which may be the empty string) separated by period ('.') or tilde ('~') characters. |
Security considerations: |
As defined in this specification. See also the security considerations in Selective Disclosure for JWTs (SD-JWT) . |
Contact: | W3C Verifiable Credentials Working Group public-vc-wg@w3.org |
This section retains deprecated registered claim names that were previously submitted to the Internet Engineering Steering Group (IESG) for review, approval, and registration with IANA in the "JSON Web Token Claims Registry".
These are registered claims at:
As it says, the change controller is IESG, but it references v1.0 of the data model, specifically:
In v2, we removed these from the core data model, and we removed them from this specification.
Should we tell the IESG to update the registry in any way?
Claim Name: | "vc" |
---|---|
Claim Description: | Verifiable Credential |
Change Controller: | W3C |
Specification Document(s): | Section 6.3.1.2: JSON Web Token Extensions of Verifiable Credentials Data Model 1.0 |
Claim Name: | "vp" |
---|---|
Claim Description: | Verifiable Presentation |
Change Controller: | W3C |
Specification Document(s): | Section 6.3.1.2: JSON Web Token Extensions of Verifiable Credentials Data Model 1.0 |
Verifiable Credentials often contain sensitive information that needs to be protected to ensure the privacy and security of organizations and individuals. This section outlines some privacy considerations relevant to implementers and users.
Implementers are advised to note and abide by all privacy considerations called out in the [ VC-DATA-MODEL ].
Implementers are additionally advised to reference the Privacy Consideration section of the JWT specification for privacy guidance.
In addition to the privacy recommendations in the [ VC-DATA-MODEL ], the following considerations are given:
Minimization of data: It is considered best practice for Verifiable Credentials to only contain the minimum amount of data necessary to achieve their intended purpose. This helps to limit the amount of sensitive information that is shared or stored unnecessarily.
Informed consent: It is considered best practice that individuals be fully informed about how their data will be used and provide the ability to consent to or decline the use of their data. This helps to ensure that individuals maintain control over their own personal information.
Data protection: It is considered best practice to protect Verifiable Credentials using strong encryption and other security measures to prevent unauthorized access, modification, or disclosure.
These considerations are not exhaustive, and implementers and users are advised to consult additional privacy resources and best practices to ensure the privacy and security of Verifiable Credentials implemented using VC-JWT.
This section outlines security considerations for implementers and users of this specification. It is important to carefully consider these factors to ensure the security and integrity of Verifiable Credentials when implemented using JWTs.
When implementing VC-JWTs, it is essential to address all security issues relevant to broad cryptographic applications. This especially includes protecting the user's asymmetric private and symmetric secret keys, as well as employing countermeasures against various attacks. Failure to adequately address these issues could compromise the security and integrity of Verifiable Credentials, potentially leading to unauthorized access, modification, or disclosure of sensitive information.
Implementers are advised to follow best practices and established cryptographic standards to ensure the secure handling of keys and other sensitive data. Additionally, conduct regular security assessments and audits to identify and address any vulnerabilities or threats.
Follow all security considerations outlined in [ rfc7515 ] and [ rfc7519 ].
When utilizing JSON-LD, take special care around remote retrieval of contexts and follow the additional security considerations noted in [ json-ld11 ].
As noted in [ rfc7515 ] when utilizing JSON [ rfc7159 ], strict validation is a security requirement. If malformed JSON is received, it may be impossible to reliably interpret the producer's intent, potentially leading to ambiguous or exploitable situations. To prevent these risks, it is essential to use a JSON parser that strictly validates the syntax of all input data. It is essential that any JSON inputs that do not conform to the JSON-text syntax defined in [ rfc7159 ] be rejected in their entirety by JSON parsers. Failure to reject invalid input could compromise the security and integrity of Verifiable Credentials.
This section is non-normative.
When
implementing
the
VC-JWT
this
specification,
it
is
crucial
for
technical
implementers
to
consider
various
accessibility
factors.
Ignoring
accessibility
concerns
renders
the
information
unusable
for
a
significant
portion
of
the
population.
To
ensure
equal
access
for
all
individuals,
regardless
of
their
abilities,
it
is
vital
to
adhere
to
accessibility
guidelines
and
standards,
such
as
the
Web
Content
Accessibility
Guidelines
(WCAG
2.1)
[
WCAG21
].
This
becomes
even
more
critical
when
establishing
systems
that
involve
cryptography,
as
they
have
historically
posed
challenges
for
assistive
technologies.
Implementers are advised to note and abide by all accessibility considerations called out in the [ VC-DATA-MODEL ].
This section is non-normative.
Implementers should take into account several internationalization considerations when publishing data described in this specification. Disregarding internationalization hampers the production and consumption of data across diverse languages and societies, thereby restricting the applicability and significantly reducing the value of the specification as a standard.
Implementers are advised to note and abide by all internationalization considerations called out in the [ VC-DATA-MODEL ], see also i18n , URL Standard
This section is non-normative.
{
"@context": ["https://www.w3.org/ns/did/v1", {
"@vocab": "https://vendor.example#"
}],
"id": "did:web:vendor.example",
"alsoKnownAs": ["https://vendor.example",
"did:jwk:eyJraWQiOiJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6andrLXRodW1icHJpbnQ6c2hhLTI1NjpGZk1iek9qTW1RNGVmVDZrdndUSUpqZWxUcWpsMHhqRUlXUTJxb2JzUk1NIiwia3R5IjoiT0tQIiwiY3J2IjoiRWQyNTUxOSIsImFsZyI6IkVkRFNBIiwieCI6IkFOUmpIX3p4Y0tCeHNqUlBVdHpSYnA3RlNWTEtKWFE5QVBYOU1QMWo3azQifQ"
],
"verificationMethod": [{
"id": "#urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-521",
"alg": "ES512",
"x": "AFTyMw-fIYJNg6fBVJvOPOsLxmnNj8HgqMChyRL0swLaefVAc7wrWZ8okQJqMmvv03JRUp277meQZM3JcvXFkH1v",
"y": "ALn96CrD88b4TClmkl1sk0xk2FgAIda97ZF8TUOjbeWSzbKnN2KB6pqlpbuJ2xIRXvsn5BWQVlAT2JGpGwDNMyV1"
}
}, {
"id": "#z6MkhEdpG12jyQegrr62ACRmNY8gc531W2j9Xo39cHphuCEH",
"type": "JsonWebKey2020",
"controller": "https://vendor.example",
"publicKeyJwk": {
"kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:FfMbzOjMmQ4efT6kvwTIJjelTqjl0xjEIWQ2qobsRMM",
"kty": "OKP",
"crv": "Ed25519",
"alg": "EdDSA",
"x": "ANRjH_zxcKBxsjRPUtzRbp7FSVLKJXQ9APX9MP1j7k4"
}
}, {
"id": "#subject-authenticaton",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-384",
"alg": "ES384",
"x": "PxgAmVYOQvSNcMYL2tOzoLwSWn4Ta3tIMPEUKR8pxeb-gmR11-DyKHBoIiY-2LhM",
"y": "BZEBTkImVdpwvxR9THIRw16eblnj5-tZa7m-ww5uVd4kyPJNRoWUn2aT9ZuarAe-"
}
}, {
"id": "#credential-issuance",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-256",
"alg": "ES256",
"x": "MYvnaI87pfrn3FpTqW-yNiFcF1K7fedJiqapm20_q7c",
"y": "9YEbT6Tyuc7xp9yRvhOUVKK_NIHkn5HpK9ZMgvK5pVw"
}
}, {
"id": "#key-agreement",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "OKP",
"crv": "X25519",
"alg": "ECDH-ES+A128KW",
"x": "qLZkSTbstvMWPTivmiQglEFWG2Ff7gNDVoVisdZTr1I"
}
}],
"authentication": ["#subject-authenticaton"],
"assertionMethod": ["#credential-issuance"],
"keyAgreement": ["#key-agreement"]
}
{
"@context": ["https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "https://contoso.example/credentials/23894672394",
"type": ["VerifiableCredential", "K9UnitCredential"],
"issuer": {
"id": "https://contoso.example"
},
"validFrom": "2015-04-16T05:11:32.432Z",
"credentialStatus": {
"id": "https://contoso.example/credentials/status/4#273762",
"type": "StatusList2021Entry",
"statusPurpose": "revocation",
"statusListIndex": "273762",
"statusListCredential": "https://contoso.example/credentials/status/4"
},
"credentialSubject": [{
"id": "did:example:1312387641",
"type": "Person"
}, {
"id": "did:example:63888231",
"type": "Dog"
}]
}
graph
LR
17("VerifiableCredential")
18{{"id"}}
19("https://contoso.example/credentials/23894672394")
20(("type"))
21("K9UnitCredential")
22("issuer")
23{{"id"}}
24("https://contoso.example")
25("validFrom")
26("2015-04-16T05:11:32.432Z")
27("credentialStatus")
28{{"id"}}
29("https://contoso.example/credentials/status/4#273762")
30(("type"))
31("StatusList2021Entry")
32("statusPurpose")
33("revocation")
34("statusListIndex")
35("273762")
36("statusListCredential")
37("https://contoso.example/credentials/status/4")
38("credentialSubject")
39{{"id"}}
40("did:example:1312387641")
41(("type"))
42("Person")
43("credentialSubject")
44{{"id"}}
45("did:example:63888231")
46(("type"))
47("Dog")
17
---
18
18
---
19
17
---
20
20
---
21
17
---
22
22
---
23
23
---
24
17
---
25
25
---
26
17
---
27
27
---
28
28
---
29
27
---
30
30
---
31
27
---
32
32
---
33
27
---
34
34
---
35
27
---
36
36
---
37
17
---
38
38
---
39
39
---
40
38
---
41
41
---
42
17
---
43
43
---
44
44
---
45
43
---
46
46 --- 47
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 - https://www.w3.org/ns/credentials/examples/v2 !sd id: https://contoso.example/credentials/23894672394 !sd type: - VerifiableCredential - K9UnitCredential issuer: !sd id: https://contoso.example validFrom: 2015-04-16T05:11:32.432Z credentialStatus: !sd id: https://contoso.example/credentials/status/4#273762 !sd type: StatusList2021Entry statusPurpose: revocation statusListIndex: "273762" statusListCredential: https://contoso.example/credentials/status/4 credentialSubject: - !sd id: did:example:1312387641 !sd type: Person - !sd id: did:example:63888231 !sd type: Dog ---------------- Holder Disclosure ---------------- id: False type: True issuer: id: True credentialStatus: id: True ---------------- Decoded Protected Header ---------------- { "alg": "ES256","typ": "vc+ld+json+jwt","typ": "vc+ld+json+sd-jwt", "cty": "vc+ld+json" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "issuer": { "id": "https://contoso.example" }, "validFrom": "2015-04-16T05:11:32.432Z", "credentialStatus": { "statusPurpose": "revocation", "statusListIndex": "273762", "statusListCredential": "https://contoso.example/credentials/status/4", "id": "https://contoso.example/credentials/status/4#273762" }, "credentialSubject": [ {}, {} ], "iss": "did:web:issuer.example","iat": 1694132937, "exp": 1725755337,"iat": 1694132936, "exp": 1725755336, "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "alg": "ES256","x": "lh7ZyGCfqdUo5mKbTvjfiHjissHaJVKqPzLfqMruaZg", "y": "ghLN8twcM6njcvQyzt6PBxRD5f8DBujh-r6LAWwpCDg""x": "71sqBVyEyMMOvpk7ik2QbBTo8OEVaZAEBElNrSNJAXc", "y": "Jt3h1AgCayR5dX5z2TMfc-T7OIBwpng669jUrlMQ8QI" } }, "type": [ "VerifiableCredential", "K9UnitCredential" ] } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzI1NiIsInR5cCI6InZjK2xkK2pzb24rand0IiwiY3R5IjoidmMrbGQranNvbiJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Il9zZCI6WyJxd2RvbVZoUEZmSkNHYU8yck90MTdTRzRtUl9qVnJmSnRydFBfcVdOQm1vIl19LCJ2YWxpZEZyb20iOiIyMDE1LTA0LTE2VDA1OjExOjMyLjQzMloiLCJjcmVkZW50aWFsU3RhdHVzIjp7InN0YXR1c1B1cnBvc2UiOiJyZXZvY2F0aW9uIiwic3RhdHVzTGlzdEluZGV4IjoiMjczNzYyIiwic3RhdHVzTGlzdENyZWRlbnRpYWwiOiJodHRwczovL2NvbnRvc28uZXhhbXBsZS9jcmVkZW50aWFscy9zdGF0dXMvNCIsIl9zZCI6WyIzdWFnZEkwWEFVc1ZSZkZObXpzM3hhSkZnTENsVFdfTjk0LWEwbUV5cEFNIiwiZGtYWURmZEtoVjIyaEFOajNQbDFhbkd0Zk81cjN3OTVpNURNRUgwcGxSayJdfSwiY3JlZGVudGlhbFN1YmplY3QiOlt7Il9zZCI6WyI1TmlJU0xpb242bG9SWmV0c2dPUm55NGJ6QmQ2MG12RVQ3V1VaX3g1RmlZIiwiZlZ5T0RYT1lKTEhobkY1NGtEWU1uTkpES09BaGRscG12aU5NVXlBdkJrayJdfSx7Il9zZCI6WyJFTjhHTUk1VjZpeDQwSHNLREQ2bXJnQjAtakkzNWhOeURGSWxJRWxWdTVvIiwicnRVVngxa0p6Y1VMMHNxeUhJczREY2lmSlRnbGwtR3NUVGRqaUJWZXpnWSJdfV0sIl9zZCI6WyJMRlBtckd2Z21SczR4eENwMHJCb1l5R1U5UWc1S05mWlZoSHlxMEk5Zmk4IiwicUJocHhxWlRfSDU1S3ZjOFJrdjlmN3laU1VmclVFcjMtOXF3MldueHlBdyJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6ImRpZDp3ZWI6aXNzdWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzcsImV4cCI6MTcyNTc1NTMzNywiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwiYWxnIjoiRVMyNTYiLCJ4IjoibGg3WnlHQ2ZxZFVvNW1LYlR2amZpSGppc3NIYUpWS3FQekxmcU1ydWFaZyIsInkiOiJnaExOOHR3Y002bmpjdlF5enQ2UEJ4UkQ1ZjhEQnVqaC1yNkxBV3dwQ0RnIn19fQ.5SQXVImDvpetNkkxi5G_9txktMz34X2sC-5lJ6g8GJ9DJlIQ1rGt3KGCuOg60dVSIpYgPeu2Dlgg_qFfs-C8qg~WyJYcWpGRVhiT19Wa0pkc0VES0NyNTV3IiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlIl0~WyJVQTVMX1BJX2trOXhZeU4zelMydlZnIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlL2NyZWRlbnRpYWxzL3N0YXR1cy80IzI3Mzc2MiJd~WyJFeTM1SHQ2UnB2RHdpNHVJd1lvQ1d3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIks5VW5pdENyZWRlbnRpYWwiXV0~eyJhbGciOiJFUzI1NiIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6Ikw4YlluVTBWQ2h3S2czaE00TEJQUGciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.TqEfZnzFB5TjFT_q5Uasp6rEEkwsUqPqtmgsPZRfmwvBVqkCKLjm5VmJ8n7EpyOIJNLeQwbV6CkTCRl-uANf8geyJhbGciOiJFUzI1NiIsInR5cCI6InZjK2xkK2pzb24rc2Qtand0IiwiY3R5IjoidmMrbGQranNvbiJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Il9zZCI6WyJRXzZ4OU8tancwdUZPUjUtaDhiUnNhTXR2SEIyNldON0NDb1NkZDNFSDY4Il19LCJ2YWxpZEZyb20iOiIyMDE1LTA0LTE2VDA1OjExOjMyLjQzMloiLCJjcmVkZW50aWFsU3RhdHVzIjp7InN0YXR1c1B1cnBvc2UiOiJyZXZvY2F0aW9uIiwic3RhdHVzTGlzdEluZGV4IjoiMjczNzYyIiwic3RhdHVzTGlzdENyZWRlbnRpYWwiOiJodHRwczovL2NvbnRvc28uZXhhbXBsZS9jcmVkZW50aWFscy9zdGF0dXMvNCIsIl9zZCI6WyJGNzJKSmFEeXZqd29LdktlaGsxVXNRa29CX2hWbHlGQmtvMURhMzhDQnRRIiwiam1Wc19ZcU9PeTBmZnNDVDZzR3BlSnhPandVMkl1cVg1RjVJcVBtRU1HYyJdfSwiY3JlZGVudGlhbFN1YmplY3QiOlt7Il9zZCI6WyIwbDlESm9CRm9SRU5RTzI5Y0ZCcWh4ZGtXc3VXM0c3VWl5NHFJSC1ZNlhRIiwiUVFRbXdEdzFURmJ2RjlkdVVvbEU0THAyM2ZWMEswczRhTW1kZFFleUpaTSJdfSx7Il9zZCI6WyJYcGlrWFFDd3p2QXZ3bl9jcEIzRFVDcVZ1RUJ1TGVHV05VY2JqYmp1WWJRIiwiejhLbWFocTlHQVRTMkpkSjVtUU9hTENfdFdqV24wYUstSENqSHZwNmo4QSJdfV0sIl9zZCI6WyJUVmpqbHFFMndpMkdlTjRBdmxYNnFIWENGUlhWQ3lDMFE1ZVVmRVU2eXNJIiwiX1QxMjFCTmdZc0YtSDlpR0IzWDhGQUZ2RGd2UHludVMtdzFTZ0drVENGbyJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6ImRpZDp3ZWI6aXNzdWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzYsImV4cCI6MTcyNTc1NTMzNiwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwiYWxnIjoiRVMyNTYiLCJ4IjoiNzFzcUJWeUV5TU1PdnBrN2lrMlFiQlRvOE9FVmFaQUVCRWxOclNOSkFYYyIsInkiOiJKdDNoMUFnQ2F5UjVkWDV6MlRNZmMtVDdPSUJ3cG5nNjY5alVybE1ROFFJIn19fQ.Fb3GsZRmPrSy-pM6tNpwqujYQV6EmKYp_ON_NjEmUt1BROK6To3AtJK-eSu8jTibaEWeE4EMxKK_uqL_qSrrfw~WyJVNllHa1drTF81QW9LM3ZfOEdNOWdBIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlIl0~WyJJN19MSkJ0UnNiY1NGVDRVQUxXX0pRIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlL2NyZWRlbnRpYWxzL3N0YXR1cy80IzI3Mzc2MiJd~WyJUT2N6TUhKeTJ1Qy1LeXdFZXZGUHZBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIks5VW5pdENyZWRlbnRpYWwiXV0~eyJhbGciOiJFUzI1NiIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6InFyX3JySmhOTjVBVUdJRWFjZlk4OUEiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzZ9.nzqLECrED7t-xm7xY0eAtqbbKkT4ObM-3q1gEHS02Tauegnn5QkF8KTDbQWmjNBrvM-miZ73bwQwisb0SK1NFA
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "https://contoso.example/credentials/35327255",
"type": ["VerifiableCredential", "KYCExample"],
"issuer": "did:web:contoso.example",
"validFrom": "2019-05-25T03:10:16.992Z",
"validUntil": "2027-05-25T03:10:16.992Z",
"credentialSchema": {
"id": "https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi",
"type": "JsonSchema"
},
"credentialSubject": {
"id": "did:example:1231588",
"type": "Person"
}
}
graph
LR
48("VerifiableCredential")
49{{"id"}}
50("https://contoso.example/credentials/35327255")
51(("type"))
52("KYCExample")
53("issuer")
54("did:web:contoso.example")
55("validFrom")
56("2019-05-25T03:10:16.992Z")
57("validUntil")
58("2027-05-25T03:10:16.992Z")
59("credentialSchema")
60{{"id"}}
61("https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi")
62(("type"))
63("JsonSchema")
64("credentialSubject")
65{{"id"}}
66("did:example:1231588")
67(("type"))
68("Person")
48
---
49
49
---
50
48
---
51
51
---
52
48
---
53
53
---
54
48
---
55
55
---
56
48
---
57
57
---
58
48
---
59
59
---
60
60
---
61
59
---
62
62
---
63
48
---
64
64
---
65
65
---
66
64
---
67
67 --- 68
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 - https://www.w3.org/ns/credentials/examples/v2 !sd id: https://contoso.example/credentials/35327255 !sd type: - VerifiableCredential - KYCExample issuer: did:web:contoso.example validFrom: 2019-05-25T03:10:16.992Z validUntil: 2027-05-25T03:10:16.992Z credentialSchema: !sd id: https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi !sd type: JsonSchema credentialSubject: !sd id: did:example:1231588 !sd type: Person ---------------- Holder Disclosure ---------------- issuer: id: True credentialStatus: id: True credentialSubject: id: True type: False ---------------- Decoded Protected Header ---------------- { "alg": "ES384" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "issuer": "did:web:contoso.example", "validFrom": "2019-05-25T03:10:16.992Z", "validUntil": "2027-05-25T03:10:16.992Z", "credentialSchema": {}, "credentialSubject": { "id": "did:example:1231588" }, "iss": "did:web:issuer.example","iat": 1694132937, "exp": 1725755337,"iat": 1694132936, "exp": 1725755336, "cnf": { "jwk": { "kty": "EC", "crv": "P-384", "alg": "ES384","x": "R7JHHK8fmUxHjy_-ANdzeuvaMxDKW_YmPU13Oc8m0wkL32x4pkym0uB6s6pPpB7m", "y": "iuOUbEHyGDtqupmokFOsM7U9sAW5wMMStiM459-lrQtkC8SdPZwLgGbhgACwfbC5""x": "oo2MdkdbkJZCZoD3DjhqTHq4pS5zHRD8XRgYglazYCO6TETxISL3OrtSEWjY2HMx", "y": "HauontkU0bgavRIX21HBh0u7GB4oEeu6xyiKtBW8C5Wf554o2mYOCbb0apE5pwWg" } } } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiZGlkOndlYjpjb250b3NvLmV4YW1wbGUiLCJ2YWxpZEZyb20iOiIyMDE5LTA1LTI1VDAzOjEwOjE2Ljk5MloiLCJ2YWxpZFVudGlsIjoiMjAyNy0wNS0yNVQwMzoxMDoxNi45OTJaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsickRUODV5R2hFWHh2LXpiSTZRSzZSRzdkRzlZMUdKTVNIeERPaUpCa3ExMCIsInRtSF81MkF0UFluNWd6bUtDVEQ5U3RjejR5OW1zSEhPQ2U4c2RlT1JqYjgiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7Il9zZCI6WyJOZVRqQ0hzSEpJMkJqXzJqTUZST2RpbTZxbWQ1c1NPTkRqSzZuaXRXZ0hnIiwialNLSXlJbncxcjgzdVp6R1NFRlMwamtFNHRRZ3ZCVUptRGhGOGRkX0trSSJdfSwiX3NkIjpbIjE0RXdYVVJTU1B2VEpRTnlId1FSY1M1R3piS0dWVmgyeHRvMEl1NndHS3ciLCJpOGZMQU5XZ1huVnF0dUZJc2pXOTFvZ2RFY2tpR3BYWmQ5MkdNeHhHejlnIl0sIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiZGlkOndlYjppc3N1ZXIuZXhhbXBsZSIsImlhdCI6MTY5NDEzMjkzNywiZXhwIjoxNzI1NzU1MzM3LCJjbmYiOnsiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0zODQiLCJhbGciOiJFUzM4NCIsIngiOiJSN0pISEs4Zm1VeEhqeV8tQU5kemV1dmFNeERLV19ZbVBVMTNPYzhtMHdrTDMyeDRwa3ltMHVCNnM2cFBwQjdtIiwieSI6Iml1T1ViRUh5R0R0cXVwbW9rRk9zTTdVOXNBVzV3TU1TdGlNNDU5LWxyUXRrQzhTZFBad0xnR2JoZ0FDd2ZiQzUifX19.xK2KCNLGIIYMf1Y0xM5q6uUsbJWOLN9_l5Xwztkcut-nQcwAHvpf_ybJd4_Fsd2zaMJLr7b8rPtkHzfOXIcrsD0yjkNZx9bSWFN5hruwmf3x9RVhsgoWuhyL0kl8_Dfb~WyJseGwwbVNiSTMtOWJQZVNPcWd0YXNBIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMzE1ODgiXQ~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6ImtQZnFJNlpqVC1XNDhNMXBwUmxuQWciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.SRdV0cOTXDDNc8qtcCd5SvkiiB3zptG1DeVVT-aL5Ye8_9Yd3cn7Lw0mqkYgjLRKhnRSOEothlUesm42C61iGAXaAFDnIAXFmzHsrMTV7EdNZ8tULDba30iuwLlLRp_MeyJhbGciOiJFUzM4NCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiZGlkOndlYjpjb250b3NvLmV4YW1wbGUiLCJ2YWxpZEZyb20iOiIyMDE5LTA1LTI1VDAzOjEwOjE2Ljk5MloiLCJ2YWxpZFVudGlsIjoiMjAyNy0wNS0yNVQwMzoxMDoxNi45OTJaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsiaE1ncHNIRXpiVkFMM3hfQVJzMUt1Qk9nWXVoeWZPaGhsRDZhNVhrQ2Q1SSIsImtXMTQtOXVobXNjd0lGLVpYZUE4RlJ0UTJQek5IT29ZWG0wbXhfOFZIM3ciXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7Il9zZCI6WyIxYnlYU2x5N09oQUhqREtJYXQ1d3JZbFN0UFR5WnE5V3pmSXFWc2d1N3RnIiwiRjE0ODlZMV9ieXRTNjhQVWxJX0tiSjFJQ3RYSC15ZTRyZFBLUHdWV3ZlTSJdfSwiX3NkIjpbIkpZYmg4VGJrNzFPRG1WTWh0cUVNV051VzZJam56c2JWNUJuby1TN1VtbGsiLCJUMmxiME44YUxrNHZKTW9xMldzT0JrRy1IbzhRYXFWT2ZrcWlmWUlaZmpjIl0sIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiZGlkOndlYjppc3N1ZXIuZXhhbXBsZSIsImlhdCI6MTY5NDEzMjkzNiwiZXhwIjoxNzI1NzU1MzM2LCJjbmYiOnsiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0zODQiLCJhbGciOiJFUzM4NCIsIngiOiJvbzJNZGtkYmtKWkNab0QzRGpocVRIcTRwUzV6SFJEOFhSZ1lnbGF6WUNPNlRFVHhJU0wzT3J0U0VXalkySE14IiwieSI6IkhhdW9udGtVMGJnYXZSSVgyMUhCaDB1N0dCNG9FZXU2eHlpS3RCVzhDNVdmNTU0bzJtWU9DYmIwYXBFNXB3V2cifX19.OrVmStPy4Ec9I_Ya4_kjpaU9RJq553zBo-nEMfsj3INjZIhCCO3XHDffBsebSAd7M5Si2WPne4DbWof441iBKiRSJBEPDmM-OJPm2J7oVSk3DxfG-TuDEG5xiUpup61X~WyJwNmFuNy1tOE5sTzZlVl90dTVJbmZ3IiwgImlkIiwgImRpZDpleGFtcGxlOjEyMzE1ODgiXQ~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IkFDTWVMRkh4bFRCRzRXZmVlYURyM3ciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5MzZ9.eFJfzEwO-JhnT1XCsW1hruWVhh7EU209quADIS_l9cSF8kvat-89K-n3Slz2p8DntdyCNs65mZPlju3nYReN6h7VFCPQfPz-Dz-ijWS_saVG4xzGryWEEr-kNXHlNyoF
{
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiablePresentation"],
"holder": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI",
"verifiableCredential": [{
"@context": [
"https://www.w3.org/ns/credentials/v2"
],
"type": [
"VerifiableCredential"
],
"issuer": "https://issuer.example/issuers/68",
"validFrom": "2023-06-07T21:14:14.148Z",
"credentialSubject": {
"id": "https://subject.vendor.example"
}
},
"https://vendor.example/credentials/42", "did:example:123",
"https://vendor.example/credentials/42",
"did:example:123",
"urn:uuid:01ec9426-c175-4e39-a006-d30050e28214",
"urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI",
"data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=",
"data:application/vc+ld+json+jwt;base64,ZXlKaGJHY2lPaUpGWkVSVFFTSXNJbWx6Y3lJNkltUnBaRHBxZDJzNlpYbEtjbUZYVVdsUGFVb3hZMjAwTm1GWFZqQmFhbkIzV1ZoS2FHSllUVFppTWtZeFpFZG5ObUZ1WkhKTVdGSnZaRmN4YVdOSVNuQmlibEUyWXpKb2FFeFVTVEZPYW5CMlVXMVNiV1J0V2tSUFdHZzJUVVk1UWxWWVdsSk9NMWt4VFZoc1JGZHNPWHBsUjNBMVRucFdRMVJJU2tsbGF6RlBVbXByZVU5WFZUUkphWGRwWVROU05VbHFiMmxVTUhSUlNXbDNhVmt6U2pKSmFtOXBVbGRSZVU1VVZYaFBVMGx6U1cxR2MxcDVTVFpKYTFaclVrWk9Ra2xwZDJsbFEwazJTV3BPYVdOdFRuTmlNRWswWVVSU1RsZHNWa2xpYXpsUlZVZHNhMU50ZDNSVGFtUjFWV3hHU2xkSVVsUmhSbkF6V2pJMWJXTnNjREZVTWpocFpsRWlMQ0pyYVdRaU9pSWpNQ0lzSW5SNWNDSTZJblpqSzJ4a0sycDNkQ0lzSW1saGRDSTZNVFk0TmpJMU1UVTNOSDAuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlYU3dpZEhsd1pTSTZXeUpXWlhKcFptbGhZbXhsUTNKbFpHVnVkR2xoYkNKZExDSnBjM04xWlhJaU9pSmthV1E2YW5kck9tVjVTbkpoVjFGcFQybEtNV050TkRaaFYxWXdXbXB3ZDFsWVNtaGlXRTAyWWpKR01XUkhaelpoYm1SeVRGaFNiMlJYTVdsalNFcHdZbTVSTm1NeWFHaE1WRWt4VG1wd2RsRnRVbTFrYlZwRVQxaG9OazFHT1VKVldGcFNUak5aTVUxWWJFUlhiRGw2WlVkd05VNTZWa05VU0VwSlpXc3hUMUpxYTNsUFYxVTBTV2wzYVdFelVqVkphbTlwVkRCMFVVbHBkMmxaTTBveVNXcHZhVkpYVVhsT1ZGVjRUMU5KYzBsdFJuTmFlVWsyU1d0V2ExSkdUa0pKYVhkcFpVTkpOa2xxVG1samJVNXpZakJKTkdGRVVrNVhiRlpKWW1zNVVWVkhiR3RUYlhkMFUycGtkVlZzUmtwWFNGSlVZVVp3TTFveU5XMWpiSEF4VkRJNGFXWlJJaXdpZG1Gc2FXUkdjbTl0SWpvaU1qQXlNeTB3Tmkwd04xUXlNVG94TkRveE5DNHhORGhhSWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKb2RIUndjem92TDNOMVltcGxZM1F1ZG1WdVpHOXlMbVY0WVcxd2JHVWlmWDAubmczZlpDQXJyNUYwb1hOS1J1UlFNUXYtdnh4YlozUWJKVkJpcU1QUlVnSEFiSDVkMXptYjhLeUNkNnlVS3IxbmlsZmZiZ2pGUmRpRjFsWUdNRGNhQ0E="
"data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0="
]
}
graph
LR
82("VerifiablePresentation")
83("holder")
84("urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI")
85("verifiableCredential")
86("issuer")
87("https://issuer.example/issuers/68")
88("validFrom")
89("2023-06-07T21:14:14.148Z")
90("credentialSubject")
91{{"id"}}
92("https://subject.vendor.example")
93("verifiableCredential")
94("https://vendor.example/credentials/42")
95("verifiableCredential")
96("did:example:123")
97("verifiableCredential")
98("urn:uuid:01ec9426-c175-4e39-a006-d30050e28214")
99("verifiableCredential")
100("urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI")
101("verifiableCredential")
102("data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=")
103("verifiableCredential")
104("data:application/vc+ld+json+jwt;base64,ZXlKaGJHY2lPaUpGWkVSVFFTSXNJbWx6Y3lJNkltUnBaRHBxZDJzNlpYbEtjbUZYVVdsUGFVb3hZMjAwTm1GWFZqQmFhbkIzV1ZoS2FHSllUVFppTWtZeFpFZG5ObUZ1WkhKTVdGSnZaRmN4YVdOSVNuQmlibEUyWXpKb2FFeFVTVEZPYW5CMlVXMVNiV1J0V2tSUFdHZzJUVVk1UWxWWVdsSk9NMWt4VFZoc1JGZHNPWHBsUjNBMVRucFdRMVJJU2tsbGF6RlBVbXByZVU5WFZUUkphWGRwWVROU05VbHFiMmxVTUhSUlNXbDNhVmt6U2pKSmFtOXBVbGRSZVU1VVZYaFBVMGx6U1cxR2MxcDVTVFpKYTFaclVrWk9Ra2xwZDJsbFEwazJTV3BPYVdOdFRuTmlNRWswWVVSU1RsZHNWa2xpYXpsUlZVZHNhMU50ZDNSVGFtUjFWV3hHU2xkSVVsUmhSbkF6V2pJMWJXTnNjREZVTWpocFpsRWlMQ0pyYVdRaU9pSWpNQ0lzSW5SNWNDSTZJblpqSzJ4a0sycDNkQ0lzSW1saGRDSTZNVFk0TmpJMU1UVTNOSDAuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlYU3dpZEhsd1pTSTZXeUpXWlhKcFptbGhZbXhsUTNKbFpHVnVkR2xoYkNKZExDSnBjM04xWlhJaU9pSmthV1E2YW5kck9tVjVTbkpoVjFGcFQybEtNV050TkRaaFYxWXdXbXB3ZDFsWVNtaGlXRTAyWWpKR01XUkhaelpoYm1SeVRGaFNiMlJYTVdsalNFcHdZbTVSTm1NeWFHaE1WRWt4VG1wd2RsRnRVbTFrYlZwRVQxaG9OazFHT1VKVldGcFNUak5aTVUxWWJFUlhiRGw2WlVkd05VNTZWa05VU0VwSlpXc3hUMUpxYTNsUFYxVTBTV2wzYVdFelVqVkphbTlwVkRCMFVVbHBkMmxaTTBveVNXcHZhVkpYVVhsT1ZGVjRUMU5KYzBsdFJuTmFlVWsyU1d0V2ExSkdUa0pKYVhkcFpVTkpOa2xxVG1samJVNXpZakJKTkdGRVVrNVhiRlpKWW1zNVVWVkhiR3RUYlhkMFUycGtkVlZzUmtwWFNGSlVZVVp3TTFveU5XMWpiSEF4VkRJNGFXWlJJaXdpZG1Gc2FXUkdjbTl0SWpvaU1qQXlNeTB3Tmkwd04xUXlNVG94TkRveE5DNHhORGhhSWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKb2RIUndjem92TDNOMVltcGxZM1F1ZG1WdVpHOXlMbVY0WVcxd2JHVWlmWDAubmczZlpDQXJyNUYwb1hOS1J1UlFNUXYtdnh4YlozUWJKVkJpcU1QUlVnSEFiSDVkMXptYjhLeUNkNnlVS3IxbmlsZmZiZ2pGUmRpRjFsWUdNRGNhQ0E=")
82
---
83
83
---
84
82
---
85
85
---
86
86
---
87
85
---
88
88
---
89
85
---
90
90
---
91
91
---
92
82
---
93
93
---
94
82
---
95
95
---
96
82
---
97
97
---
98
82
---
99
99
---
100
82
---
101
101
---
102
82
---
103
103 --- 104---------------- Issuer Claims ----------------
101 --- 102
---------------- Issuer Claims ---------------- "@context": - https://www.w3.org/ns/credentials/v2 !sd type: - VerifiablePresentation holder: urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI verifiableCredential: - "@context": - https://www.w3.org/ns/credentials/v2 !sd type: - VerifiableCredential issuer: https://issuer.example/issuers/68 validFrom: 2023-06-07T21:14:14.148Z credentialSubject: !sd id: https://subject.vendor.example - https://vendor.example/credentials/42 - did:example:123 - urn:uuid:01ec9426-c175-4e39-a006-d30050e28214 - urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI - data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=- data:application/vc+ld+json+jwt;base64,ZXlKaGJHY2lPaUpGWkVSVFFTSXNJbWx6Y3lJNkltUnBaRHBxZDJzNlpYbEtjbUZYVVdsUGFVb3hZMjAwTm1GWFZqQmFhbkIzV1ZoS2FHSllUVFppTWtZeFpFZG5ObUZ1WkhKTVdGSnZaRmN4YVdOSVNuQmlibEUyWXpKb2FFeFVTVEZPYW5CMlVXMVNiV1J0V2tSUFdHZzJUVVk1UWxWWVdsSk9NMWt4VFZoc1JGZHNPWHBsUjNBMVRucFdRMVJJU2tsbGF6RlBVbXByZVU5WFZUUkphWGRwWVROU05VbHFiMmxVTUhSUlNXbDNhVmt6U2pKSmFtOXBVbGRSZVU1VVZYaFBVMGx6U1cxR2MxcDVTVFpKYTFaclVrWk9Ra2xwZDJsbFEwazJTV3BPYVdOdFRuTmlNRWswWVVSU1RsZHNWa2xpYXpsUlZVZHNhMU50ZDNSVGFtUjFWV3hHU2xkSVVsUmhSbkF6V2pJMWJXTnNjREZVTWpocFpsRWlMQ0pyYVdRaU9pSWpNQ0lzSW5SNWNDSTZJblpqSzJ4a0sycDNkQ0lzSW1saGRDSTZNVFk0TmpJMU1UVTNOSDAuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlYU3dpZEhsd1pTSTZXeUpXWlhKcFptbGhZbXhsUTNKbFpHVnVkR2xoYkNKZExDSnBjM04xWlhJaU9pSmthV1E2YW5kck9tVjVTbkpoVjFGcFQybEtNV050TkRaaFYxWXdXbXB3ZDFsWVNtaGlXRTAyWWpKR01XUkhaelpoYm1SeVRGaFNiMlJYTVdsalNFcHdZbTVSTm1NeWFHaE1WRWt4VG1wd2RsRnRVbTFrYlZwRVQxaG9OazFHT1VKVldGcFNUak5aTVUxWWJFUlhiRGw2WlVkd05VNTZWa05VU0VwSlpXc3hUMUpxYTNsUFYxVTBTV2wzYVdFelVqVkphbTlwVkRCMFVVbHBkMmxaTTBveVNXcHZhVkpYVVhsT1ZGVjRUMU5KYzBsdFJuTmFlVWsyU1d0V2ExSkdUa0pKYVhkcFpVTkpOa2xxVG1samJVNXpZakJKTkdGRVVrNVhiRlpKWW1zNVVWVkhiR3RUYlhkMFUycGtkVlZzUmtwWFNGSlVZVVp3TTFveU5XMWpiSEF4VkRJNGFXWlJJaXdpZG1Gc2FXUkdjbTl0SWpvaU1qQXlNeTB3Tmkwd04xUXlNVG94TkRveE5DNHhORGhhSWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKb2RIUndjem92TDNOMVltcGxZM1F1ZG1WdVpHOXlMbVY0WVcxd2JHVWlmWDAubmczZlpDQXJyNUYwb1hOS1J1UlFNUXYtdnh4YlozUWJKVkJpcU1QUlVnSEFiSDVkMXptYjhLeUNkNnlVS3IxbmlsZmZiZ2pGUmRpRjFsWUdNRGNhQ0E=---------------- Holder Disclosure ---------------- id: True type: True holder: id: True ---------------- Decoded Protected Header ---------------- { "alg": "ES256","typ": "vp+ld+json+jwt","typ": "vp+ld+json+sd-jwt", "cty": "vp+ld+json" } ---------------- Decoded Protected Claimset ---------------- { "@context": [ "https://www.w3.org/ns/credentials/v2" ], "holder": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI", "verifiableCredential": [ { "@context": [ "https://www.w3.org/ns/credentials/v2" ], "issuer": "https://issuer.example/issuers/68", "validFrom": "2023-06-07T21:14:14.148Z", "credentialSubject": {} }, "https://vendor.example/credentials/42", "did:example:123", "urn:uuid:01ec9426-c175-4e39-a006-d30050e28214", "urn:ietf:params:oauth:jwk-thumbprint:sha-256:_Fpfe27AuGmEljZE9s2lw2UH-qrZLRFNrWbJrWIe4SI","data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=", "data:application/vc+ld+json+jwt;base64,ZXlKaGJHY2lPaUpGWkVSVFFTSXNJbWx6Y3lJNkltUnBaRHBxZDJzNlpYbEtjbUZYVVdsUGFVb3hZMjAwTm1GWFZqQmFhbkIzV1ZoS2FHSllUVFppTWtZeFpFZG5ObUZ1WkhKTVdGSnZaRmN4YVdOSVNuQmlibEUyWXpKb2FFeFVTVEZPYW5CMlVXMVNiV1J0V2tSUFdHZzJUVVk1UWxWWVdsSk9NMWt4VFZoc1JGZHNPWHBsUjNBMVRucFdRMVJJU2tsbGF6RlBVbXByZVU5WFZUUkphWGRwWVROU05VbHFiMmxVTUhSUlNXbDNhVmt6U2pKSmFtOXBVbGRSZVU1VVZYaFBVMGx6U1cxR2MxcDVTVFpKYTFaclVrWk9Ra2xwZDJsbFEwazJTV3BPYVdOdFRuTmlNRWswWVVSU1RsZHNWa2xpYXpsUlZVZHNhMU50ZDNSVGFtUjFWV3hHU2xkSVVsUmhSbkF6V2pJMWJXTnNjREZVTWpocFpsRWlMQ0pyYVdRaU9pSWpNQ0lzSW5SNWNDSTZJblpqSzJ4a0sycDNkQ0lzSW1saGRDSTZNVFk0TmpJMU1UVTNOSDAuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlYU3dpZEhsd1pTSTZXeUpXWlhKcFptbGhZbXhsUTNKbFpHVnVkR2xoYkNKZExDSnBjM04xWlhJaU9pSmthV1E2YW5kck9tVjVTbkpoVjFGcFQybEtNV050TkRaaFYxWXdXbXB3ZDFsWVNtaGlXRTAyWWpKR01XUkhaelpoYm1SeVRGaFNiMlJYTVdsalNFcHdZbTVSTm1NeWFHaE1WRWt4VG1wd2RsRnRVbTFrYlZwRVQxaG9OazFHT1VKVldGcFNUak5aTVUxWWJFUlhiRGw2WlVkd05VNTZWa05VU0VwSlpXc3hUMUpxYTNsUFYxVTBTV2wzYVdFelVqVkphbTlwVkRCMFVVbHBkMmxaTTBveVNXcHZhVkpYVVhsT1ZGVjRUMU5KYzBsdFJuTmFlVWsyU1d0V2ExSkdUa0pKYVhkcFpVTkpOa2xxVG1samJVNXpZakJKTkdGRVVrNVhiRlpKWW1zNVVWVkhiR3RUYlhkMFUycGtkVlZzUmtwWFNGSlVZVVp3TTFveU5XMWpiSEF4VkRJNGFXWlJJaXdpZG1Gc2FXUkdjbTl0SWpvaU1qQXlNeTB3Tmkwd04xUXlNVG94TkRveE5DNHhORGhhSWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKb2RIUndjem92TDNOMVltcGxZM1F1ZG1WdVpHOXlMbVY0WVcxd2JHVWlmWDAubmczZlpDQXJyNUYwb1hOS1J1UlFNUXYtdnh4YlozUWJKVkJpcU1QUlVnSEFiSDVkMXptYjhLeUNkNnlVS3IxbmlsZmZiZ2pGUmRpRjFsWUdNRGNhQ0E=""data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=" ], "iss": "did:web:issuer.example", "iat": 1694132937, "exp": 1725755337, "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "alg": "ES256","x": "k7qcT74SSihxD4E25M_ohMaRO7tzJw8PG72fb2Fbxmw", "y": "h1exBhZULWXGRY50H5wB1VhyTOnwUFJs2FkTKjqhIUU""x": "t4r3HNyIvMtGvPxrbySsNS1eXhPGrzBTxO5WbVMt8g8", "y": "QuMNtj2BTpptYLz3IV1iXDXu9SR7INnyGAIwNFD7w5Y" } }, "type": [ "VerifiablePresentation" ] } ---------------- Compact Encoded Selective Disclosure JSON Web Token ----------------eyJhbGciOiJFUzI1NiIsInR5cCI6InZwK2xkK2pzb24rand0IiwiY3R5IjoidnArbGQranNvbiJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiaG9sZGVyIjoidXJuOmlldGY6cGFyYW1zOm9hdXRoOmp3ay10aHVtYnByaW50OnNoYS0yNTY6X0ZwZmUyN0F1R21FbGpaRTlzMmx3MlVILXFyWkxSRk5yV2JKcldJZTRTSSIsInZlcmlmaWFibGVDcmVkZW50aWFsIjpbeyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9pc3N1ZXIuZXhhbXBsZS9pc3N1ZXJzLzY4IiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiX3NkIjpbIjA2cUpySmtOdmhYR1gwSUZPcjFyRTR5RkZKa2ZPR0s2NHJWLWZZN0txajAiXX0sIl9zZCI6WyJkSmtRaDB5NHRiejFrZkdRc3pYdlpHbTFqVzJQMXVnamlDS1dGcDFObEV3Il19LCJodHRwczovL3ZlbmRvci5leGFtcGxlL2NyZWRlbnRpYWxzLzQyIiwiZGlkOmV4YW1wbGU6MTIzIiwidXJuOnV1aWQ6MDFlYzk0MjYtYzE3NS00ZTM5LWEwMDYtZDMwMDUwZTI4MjE0IiwidXJuOmlldGY6cGFyYW1zOm9hdXRoOmp3ay10aHVtYnByaW50OnNoYS0yNTY6X0ZwZmUyN0F1R21FbGpaRTlzMmx3MlVILXFyWkxSRk5yV2JKcldJZTRTSSIsImRhdGE6YXBwbGljYXRpb24vdmMrbGQranNvbjtiYXNlNjQsZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlYU3dpZEhsd1pTSTZXeUpXWlhKcFptbGhZbXhsUTNKbFpHVnVkR2xoYkNKZExDSnBjM04xWlhJaU9pSmthV1E2YW5kck9tVjVTbkpoVjFGcFQybEtNV050TkRaaFYxWXdXbXB3ZDFsWVNtaGlXRTAyWWpKR01XUkhaelpoYm1SeVRGaFNiMlJYTVdsalNFcHdZbTVSTm1NeWFHaE1WRWt4VG1wd2RsRnRVbTFrYlZwRVQxaG9OazFHT1VKVldGcFNUak5aTVUxWWJFUlhiRGw2WlVkd05VNTZWa05VU0VwSlpXc3hUMUpxYTNsUFYxVTBTV2wzYVdFelVqVkphbTlwVkRCMFVVbHBkMmxaTTBveVNXcHZhVkpYVVhsT1ZGVjRUMU5KYzBsdFJuTmFlVWsyU1d0V2ExSkdUa0pKYVhkcFpVTkpOa2xxVG1samJVNXpZakJKTkdGRVVrNVhiRlpKWW1zNVVWVkhiR3RUYlhkMFUycGtkVlZzUmtwWFNGSlVZVVp3TTFveU5XMWpiSEF4VkRJNGFXWlJJaXdpZG1Gc2FXUkdjbTl0SWpvaU1qQXlNeTB3Tmkwd04xUXlNVG94TkRveE5DNHhORGhhSWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKb2RIUndjem92TDNOMVltcGxZM1F1ZG1WdVpHOXlMbVY0WVcxd2JHVWlmWDA9IiwiZGF0YTphcHBsaWNhdGlvbi92YytsZCtqc29uK2p3dDtiYXNlNjQsWlhsS2FHSkhZMmxQYVVwR1drVlNWRkZUU1hOSmJXeDZZM2xKTmtsdFVuQmFSSEJ4WkRKek5scFliRXRqYlVaWVZWZHNVR0ZWYjNoWk1qQXdUbTFHV0ZacVFtRmhia0l6VjFab1MyRkhTbGxVVkZwcFRXdFplRnBGWkc1T2JVWjFXa2hLVFZkR1NuWmFSbU40WVZkT1NWTnVRbWxpYkVVeVdYcEtiMkZGZUZWVFZFWlBZVzVDTWxWWE1WTmlWMUowVjJ0U1VGZEhaekpVVlZrMVVXeFdXVmRzU2s5Tk1XdDRWRlpvYzFKR1pITlBXSEJzVWpOQk1WUnVjRmRSTVZKSlUydHNiR0Y2UmxCVmJYQnlaVlU1V0ZaVVVrcGhXR1J3V1ZST1UwNVZiSEZpTW14VlRVaFNVbE5YYkROaFZtdDZVMnBLU21GdE9YQlZiR1JTWlZVMVZWWllhRkJWTUd4NlUxY3hSMk14Y0RWVFZGcEtZVEZhY2xWcldrOVJhMnh3WkRKc2JGRXdhekpUVjNCUFlWZE9kRlJ1VG1sTlJXc3dXVlZTVTFSc1pITldhMnhwWVhwc1VsWlZaSE5oTVU1MFpETlNWR0Z0VWpGV1YzaEhVMnhrU1ZWc1VtaFNia0Y2VjJwSk1XSlhUbk5qUkVaVlRXcG9jRnBzUldsTVEwcHlZVmRSYVU5cFNXcE5RMGx6U1c1U05XTkRTVFpKYmxwcVN6SjRhMHN5Y0ROa1EwbHpTVzFzYUdSRFNUWk5WRmswVG1wSk1VMVVWVE5PU0RBdVpYbEtRVmt5T1hWa1IxWTBaRU5KTmxkNVNtOWtTRkozWTNwdmRrd3paRE5rZVRVelRYazFkbU50WTNaaWJrMTJXVE5LYkZwSFZuVmtSMnhvWWtoTmRtUnFTV2xZVTNkcFpFaHNkMXBUU1RaWGVVcFhXbGhLY0ZwdGJHaFpiWGhzVVROS2JGcEhWblZrUjJ4b1lrTktaRXhEU25Cak0wNHhXbGhKYVU5cFNtdGhWMUUyWVc1a2NrOXRWalZUYmtwb1ZqRkdjRlF5YkV0TlYwNTBUa1JhYUZZeFdYZFhiWEIzWkRGc1dWTnRhR2xYUlRBeVdXcEtSMDFYVWtoYWVscG9ZbTFTZVZSR2FGTmlNbEpZVFZkc2FsTkZjSGRaYlRWU1RtMU5lV0ZIYUUxV1JXdDRWRzF3ZDJSc1JuUlZiVEZyWWxad1JWUXhhRzlPYXpGSFQxVktWbGRHY0ZOVWFrNWFUVlV4V1dKRlVsaGlSR3cyV2xWa2QwNVZOVFpXYTA1VlUwVndTbHBYYzNoVU1VcHhZVE5zVUZZeFZUQlRWMnd6WVZkRmVsVnFWa3BoYlRsd1ZrUkNNRlZWYkhCa01teGFUVEJ2ZVZOWGNIWmhWa3BZVlZoc1QxWkdWalJVTVU1S1l6QnNkRkp1VG1GbFZXc3lVMWQwVjJFeFNrZFVhMHBLWVZoa2NGcFZUa3BPYTJ4eFZHMXNhbUpWTlhwWmFrSktUa2RHUlZWck5WaGlSbHBLV1cxek5WVldWa2hpUjNSVVlsaGtNRlV5Y0d0a1ZsWnpVbXR3V0ZOR1NsVlpWVnAzVFRGdmVVNVhNV3BpU0VGNFZrUkpOR0ZYV2xKSmFYZHBaRzFHYzJGWFVrZGpiVGwwU1dwdmFVMXFRWGxOZVRCM1Rta3dkMDR4VVhsTlZHOTRUa1J2ZUU1RE5IaE9SR2hoU1dsM2FWa3pTbXhhUjFaMVpFZHNhR0pHVGpGWmJYQnNXVE5SYVU5dWMybGhWMUZwVDJsS2IyUklVbmRqZW05MlRETk9NVmx0Y0d4Wk0xRjFaRzFXZFZwSE9YbE1iVlkwV1ZjeGQySkhWV2xtV0RBdWJtY3pabHBEUVhKeU5VWXdiMWhPUzFKMVVsRk5VWFl0ZG5oNFlsb3pVV0pLVmtKcGNVMVFVbFZuU0VGaVNEVmtNWHB0WWpoTGVVTmtObmxWUzNJeGJtbHNabVppWjJwR1VtUnBSakZzV1VkTlJHTmhRMEU9Il0sIl9zZCI6WyI3aVZhOUxwRmk5TTB2ekZmMUdSWjhNU3JPeEZZWldQX1VoRUVoOHdUQ3dBIl0sIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiZGlkOndlYjppc3N1ZXIuZXhhbXBsZSIsImlhdCI6MTY5NDEzMjkzNywiZXhwIjoxNzI1NzU1MzM3LCJjbmYiOnsiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJhbGciOiJFUzI1NiIsIngiOiJrN3FjVDc0U1NpaHhENEUyNU1fb2hNYVJPN3R6Snc4UEc3MmZiMkZieG13IiwieSI6ImgxZXhCaFpVTFdYR1JZNTBINXdCMVZoeVRPbndVRkpzMkZrVEtqcWhJVVUifX19.BpqenlaNpsASguBe4km-0x-sfPHk5uOl1yw6wFeiWHViiKeSLcZZvCxJw_8whXZh1g5s7AI1A7yzXA0BPLYkfQ~WyJZd1phVmRGMlZJekRCOEhlN18tOFRBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzI1NiIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6Im1WTjl6RDMxOU5NUlJvQlRaUGUwcEEiLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.R_rdQ1b_Zu84Qr_MittjHbDRLK2PFbLF3iqPsD0RIO2VkHX8wXM5Ih3WeQLxk7nfrgO6OyLlkyyj5f5V1c5HAgeyJhbGciOiJFUzI1NiIsInR5cCI6InZwK2xkK2pzb24rc2Qtand0IiwiY3R5IjoidnArbGQranNvbiJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiaG9sZGVyIjoidXJuOmlldGY6cGFyYW1zOm9hdXRoOmp3ay10aHVtYnByaW50OnNoYS0yNTY6X0ZwZmUyN0F1R21FbGpaRTlzMmx3MlVILXFyWkxSRk5yV2JKcldJZTRTSSIsInZlcmlmaWFibGVDcmVkZW50aWFsIjpbeyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9pc3N1ZXIuZXhhbXBsZS9pc3N1ZXJzLzY4IiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiX3NkIjpbIndIQWg4b29HZXJQSkZ6aFBaN3MwU0pJNWJoMlVMNUoxY3RibGg2NzNCSEEiXX0sIl9zZCI6WyI0TFhtM1MxcWNzTVFfMGRmcTBSUkpaQmd0T3dwQ3pzY19mY21aYnBRaXRVIl19LCJodHRwczovL3ZlbmRvci5leGFtcGxlL2NyZWRlbnRpYWxzLzQyIiwiZGlkOmV4YW1wbGU6MTIzIiwidXJuOnV1aWQ6MDFlYzk0MjYtYzE3NS00ZTM5LWEwMDYtZDMwMDUwZTI4MjE0IiwidXJuOmlldGY6cGFyYW1zOm9hdXRoOmp3ay10aHVtYnByaW50OnNoYS0yNTY6X0ZwZmUyN0F1R21FbGpaRTlzMmx3MlVILXFyWkxSRk5yV2JKcldJZTRTSSIsImRhdGE6YXBwbGljYXRpb24vdmMrbGQranNvbjtiYXNlNjQsZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlYU3dpZEhsd1pTSTZXeUpXWlhKcFptbGhZbXhsUTNKbFpHVnVkR2xoYkNKZExDSnBjM04xWlhJaU9pSmthV1E2YW5kck9tVjVTbkpoVjFGcFQybEtNV050TkRaaFYxWXdXbXB3ZDFsWVNtaGlXRTAyWWpKR01XUkhaelpoYm1SeVRGaFNiMlJYTVdsalNFcHdZbTVSTm1NeWFHaE1WRWt4VG1wd2RsRnRVbTFrYlZwRVQxaG9OazFHT1VKVldGcFNUak5aTVUxWWJFUlhiRGw2WlVkd05VNTZWa05VU0VwSlpXc3hUMUpxYTNsUFYxVTBTV2wzYVdFelVqVkphbTlwVkRCMFVVbHBkMmxaTTBveVNXcHZhVkpYVVhsT1ZGVjRUMU5KYzBsdFJuTmFlVWsyU1d0V2ExSkdUa0pKYVhkcFpVTkpOa2xxVG1samJVNXpZakJKTkdGRVVrNVhiRlpKWW1zNVVWVkhiR3RUYlhkMFUycGtkVlZzUmtwWFNGSlVZVVp3TTFveU5XMWpiSEF4VkRJNGFXWlJJaXdpZG1Gc2FXUkdjbTl0SWpvaU1qQXlNeTB3Tmkwd04xUXlNVG94TkRveE5DNHhORGhhSWl3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKb2RIUndjem92TDNOMVltcGxZM1F1ZG1WdVpHOXlMbVY0WVcxd2JHVWlmWDA9Il0sIl9zZCI6WyJ0MkFsVzBPbmZWdnpkOG5KdGJhS0xZa3pYWGg4YmMwUUxUWjZ6Y2FBZzNJIl0sIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiZGlkOndlYjppc3N1ZXIuZXhhbXBsZSIsImlhdCI6MTY5NDEzMjkzNywiZXhwIjoxNzI1NzU1MzM3LCJjbmYiOnsiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJhbGciOiJFUzI1NiIsIngiOiJ0NHIzSE55SXZNdEd2UHhyYnlTc05TMWVYaFBHcnpCVHhPNVdiVk10OGc4IiwieSI6IlF1TU50ajJCVHBwdFlMejNJVjFpWERYdTlTUjdJTm55R0FJd05GRDd3NVkifX19.GeXI8XunHRp1-bEDhFlqBaQvK1pYGpu81uV81zXLygPgm3YsO7aL3q5qv2PeXfQj5YY8H6uDTGUhTiWOEbofzA~WyJVY0RValVaenJHLWt5U1gtRzVZS0R3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXV0~eyJhbGciOiJFUzI1NiIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6ImQ5a19DWnhMQWlKdVlSRWcxaGNhNnciLCJhdWQiOiJkaWQ6d2ViOnZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTQxMzI5Mzd9.51Rz4Fgk0VWc-v1hFWIwrZ1JwMSv7W4Nac80EA0jEF5Rq0vnuNwxPN3ZXBau0mWL2M07sPh7EgbqZaFqtNMQ_A
data:application/vc+ld+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=
data:application/vp+ld+json+json;base64,eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJkaWQ6andrOmV5SnJhV1FpT2lKMWNtNDZhV1YwWmpwd1lYSmhiWE02YjJGMWRHZzZhbmRyTFhSb2RXMWljSEpwYm5RNmMyaGhMVEkxTmpwdlFtUm1kbVpET1hoNk1GOUJVWFpSTjNZMU1YbERXbDl6ZUdwNU56VkNUSEpJZWsxT1Jqa3lPV1U0SWl3aWEzUjVJam9pVDB0UUlpd2lZM0oySWpvaVJXUXlOVFV4T1NJc0ltRnNaeUk2SWtWa1JGTkJJaXdpZUNJNklqTmljbU5zYjBJNGFEUk5XbFZJYms5UVVHbGtTbXd0U2pkdVVsRkpXSFJUYUZwM1oyNW1jbHAxVDI4aWZRIiwidmFsaWRGcm9tIjoiMjAyMy0wNi0wN1QyMToxNDoxNC4xNDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJodHRwczovL3N1YmplY3QudmVuZG9yLmV4YW1wbGUifX0=
TODO add COSE Sign1 detached payload examples