Skip to content

Commit 2cdefe6

Browse files
authored
clarify, add context, or otherwise improve examples (#457)
* work on simple example in sec 6 * Simple Structured SD-JWT work * work on Complex Structured SD-JWT * SD-JWT-based Verifiable Credentials work * Work on W3C Verifiable Credentials Data Model v2.0 * Try to better link the digests to the Disclosures in the respective text around examples * Document History is part of the document too * typo fix * actually...
1 parent 4496a73 commit 2cdefe6

File tree

1 file changed

+30
-21
lines changed

1 file changed

+30
-21
lines changed

draft-ietf-oauth-selective-disclosure-jwt.md

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -716,32 +716,32 @@ lines in RFCs and for readability. JSON does not allow line breaks within string
716716

717717
## Issuance
718718

719-
The Issuer is using the following input JWT Claims Set:
719+
The following data about the user comprises the input JWT Claims Set used by the Issuer:
720720

721721
<{{examples/simple/user_claims.json}}
722722

723-
The Issuer in this case made the following decisions:
723+
In this example, the following decisions were made by the Issuer in constructing the SD-JWT:
724724

725725
* The `nationalities` array is always visible, but its contents are selectively disclosable.
726-
* The `sub` element and essential verification data (`iss`, `iat`, `cnf`, etc.) are always visible.
726+
* The `sub` element as well as essential verification data (`iss`, `exp`, `cnf`, etc.) are always visible.
727727
* All other End-User claims are selectively disclosable.
728-
* For `address`, the Issuer is using a flat structure, i.e., all of the claims
728+
* For `address`, the Issuer is using a flat structure, i.e., all the claims
729729
in the `address` claim can only be disclosed in full. Other options are
730730
discussed in (#nested_data).
731731

732732
The following payload is used for the SD-JWT:
733733

734734
<{{examples/simple/sd_jwt_payload.json}}
735735

736-
The following Disclosures are created by the Issuer:
736+
The respective Disclosures are created by the Issuer:
737737

738738
{{examples/simple/disclosures.md}}
739739

740-
The payload is then signed by the Issuer to create the following JWT:
740+
The payload is then signed by the Issuer to create the following Issuer-signed JWT:
741741

742742
<{{examples/simple/sd_jwt_jws_part.txt}}
743743

744-
The following is the issued SD-JWT:
744+
Adding the Disclosures produces the SD-JWT:
745745

746746
<{{examples/simple/sd_jwt_issuance.txt}}
747747

@@ -763,6 +763,10 @@ If the Verifier did not require Key Binding, then the Holder could have
763763
presented the SD-JWT with selected Disclosures directly, instead of encapsulating it in
764764
an SD-JWT+KB.
765765

766+
After validation, the Verifier will have the following processed SD-JWT payload available for further handling:
767+
768+
<{{examples/simple/verified_contents.json}}
769+
766770
# Considerations on Nested Data in SD-JWTs {#nested_data}
767771

768772
Being JSON, an object in an SD-JWT payload MAY contain name/value pairs where the value is another object or objects MAY be elements in arrays. In SD-JWT, the Issuer decides for each claim individually, on each level of the JSON, whether the claim should be selectively disclosable or not. This choice can be made on each level independent from whether keys higher in the hierarchy are selectively disclosable.
@@ -788,7 +792,7 @@ The Issuer can decide to treat the `address` claim as a block that can either be
788792

789793
<{{examples/address_only_flat/sd_jwt_payload.json}}
790794

791-
The Issuer would create the following Disclosure:
795+
The Issuer would create the following Disclosure referenced by the one hash in the SD-JWT:
792796

793797
{{examples/address_only_flat/disclosures.md}}
794798

@@ -1681,7 +1685,7 @@ Line breaks have been added for readability.
16811685

16821686
In this example, in contrast to (#main-example), the Issuer decided to create a structured object for the `address` claim, allowing to separately disclose individual members of the claim.
16831687

1684-
The Issuer is using the following input JWT Claims Set:
1688+
The following data about the user comprises the input JWT Claims Set used by the Issuer:
16851689

16861690
<{{examples/simple_structured/user_claims.json}}
16871691

@@ -1691,7 +1695,7 @@ The following payload is used for the SD-JWT:
16911695

16921696
<{{examples/simple_structured/sd_jwt_payload.json}}
16931697

1694-
The following Disclosures are created:
1698+
The digests in the SD-JWT payload reference the following Disclosures:
16951699

16961700
{{examples/simple_structured/disclosures.md}}
16971701

@@ -1704,28 +1708,32 @@ and `country` of the `address` property:
17041708

17051709
<{{examples/simple_structured/sd_jwt_presentation.txt}}
17061710

1711+
After validation, the Verifier will have the following processed SD-JWT payload available for further handling:
1712+
1713+
<{{examples/simple_structured/verified_contents.json}}
1714+
17071715
## Complex Structured SD-JWT {#example-complex-structured-sd-jwt}
17081716

17091717
In this example, an SD-JWT with a complex object is represented. The data
17101718
structures defined in OpenID Connect for Identity Assurance [@OIDC.IDA] are used.
17111719

1712-
The Issuer is using the following input JWT Claims Set:
1720+
The Issuer is using the following user data as the input JWT Claims Set:
17131721

17141722
<{{examples/complex_ekyc/user_claims.json}}
17151723

17161724
The following payload is used for the SD-JWT:
17171725

17181726
<{{examples/complex_ekyc/sd_jwt_payload.json}}
17191727

1720-
The following Disclosures are created by the Issuer:
1728+
The digests in the SD-JWT payload reference the following Disclosures:
17211729

17221730
{{examples/complex_ekyc/disclosures.md}}
17231731

17241732
The following is a presentation of the SD-JWT:
17251733

17261734
<{{examples/complex_ekyc/sd_jwt_presentation.txt}}
17271735

1728-
After the validation, the Verifier will have the following data for further processing:
1736+
The Verifier will have this processed SD-JWT payload available after validation:
17291737

17301738
<{{examples/complex_ekyc/verified_contents.json}}
17311739

@@ -1740,7 +1748,7 @@ a German citizen.
17401748
Key Binding is applied
17411749
using the Holder's public key passed in a `cnf` claim in the SD-JWT.
17421750

1743-
The Issuer is using the following input JWT Claims Set:
1751+
The following citizen data is the input JWT Claims Set:
17441752

17451753
<{{examples/arf-pid/user_claims.json}}
17461754

@@ -1752,19 +1760,19 @@ The following payload is used for the SD-JWT:
17521760

17531761
<{{examples/arf-pid/sd_jwt_payload.json}}
17541762

1755-
The following Disclosures are created by the Issuer:
1763+
The digests in the SD-JWT payload reference the following Disclosures:
17561764

17571765
{{examples/arf-pid/disclosures.md}}
17581766

17591767
The following is an example of an SD-JWT+KB that discloses only nationality and the fact that the person is over 18 years old:
17601768

17611769
<{{examples/arf-pid/sd_jwt_presentation.txt}}
17621770

1763-
The following is the payload of a corresponding Key Binding JWT:
1771+
This is the payload of the corresponding Key Binding JWT:
17641772

17651773
<{{examples/arf-pid/kb_jwt_payload.json}}
17661774

1767-
After the validation, the Verifier will have the following data for further processing:
1775+
After validation, the Verifier will have the following processed SD-JWT payload available for further handling:
17681776

17691777
<{{examples/arf-pid/verified_contents.json}}
17701778

@@ -1776,7 +1784,7 @@ could be used to express a W3C Verifiable Credentials Data Model v2.0 [@VC_DATA_
17761784
Key Binding is applied
17771785
using the Holder's public key passed in a `cnf` claim in the SD-JWT.
17781786

1779-
The Issuer is using the following input JWT Claims Set:
1787+
The following is the input JWT Claims Set:
17801788

17811789
<{{examples/jsonld/user_claims.json}}
17821790

@@ -1788,15 +1796,15 @@ The following payload is used for the SD-JWT:
17881796

17891797
<{{examples/jsonld/sd_jwt_payload.json}}
17901798

1791-
The following Disclosures are created by the Issuer:
1799+
The digests in the SD-JWT payload reference the following Disclosures:
17921800

17931801
{{examples/jsonld/disclosures.md}}
17941802

1795-
The following is an example of an SD-JWT+KB that discloses only `type`, `medicinalProductName`, `atcCode` of the vaccine, `type` of the `recipient`, `type`, `order` and `dateOfVaccination`:
1803+
This is an example of an SD-JWT+KB that discloses only `type`, `medicinalProductName`, `atcCode` of the vaccine, `type` of the `recipient`, `type`, `order` and `dateOfVaccination`:
17961804

17971805
<{{examples/jsonld/sd_jwt_presentation.txt}}
17981806

1799-
After the validation, the Verifier will have the following data for further processing:
1807+
After the validation, the Verifier will have the following processed SD-JWT payload available for further handling:
18001808

18011809
<{{examples/jsonld/verified_contents.json}}
18021810

@@ -1925,6 +1933,7 @@ data. The original JSON data is then used by the application. See
19251933

19261934
-12
19271935

1936+
* Clarify, add context, or otherwise improve the examples
19281937
* Editorial and reference fixes
19291938
* Moved considerations around unlinkability to the top of the Privacy Considerations section
19301939

0 commit comments

Comments
 (0)