Mercurial > hg > ietf
annotate jwt_review.txt @ 23:2eda17d4debf default tip
as submitted
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Wed, 21 Oct 2026 17:24:38 +0100 |
| parents | f2a7c10fbdd7 |
| children |
| rev | line source |
|---|---|
| 16 | 1 Document: draft-ietf-oauth-selective-disclosure-jwt-18 |
| 2 Title: Selective Disclosure for JWTs (SD-JWT) | |
| 3 Reviewer: Henry S. Thompson | |
| 4 Review Date: 2025-05-02 | |
| 5 | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
6 *Summary* |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
7 |
| 16 | 8 The substance of this is, as far as I can tell as a non-specialist, is |
| 9 in good shape. There are a few nits and editorial points at the end | |
| 10 of this review, but as will be evident by its length, there is one | |
| 11 essentially presentational issue, classified as Minor because a | |
| 12 specialist in this area will shrug and say "yes, but I see what | |
| 13 they're getting at". I hope none-the-less the authors will find it | |
| 14 useful and address the points I raise, because I do think as things | |
| 15 stand there's a genuine risk of misunderstanding exactly what's | |
| 16 required of an implementation. | |
| 17 | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
18 *Minor points* |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
19 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
20 4.2.1 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
21 This bullet |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
22 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
23 "JSON-encode the array, producing [a] UTF-8 string" |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
24 |
| 16 | 25 looks simple, but ended up taking me several days to sort out. |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
26 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
27 For the rest of things to work, you must mean "Serialize the array |
| 16 | 28 to the corresponding UTF-8 byte sequence", but that's not |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
29 exactly trivial in the JSON-native context you've adopted in this |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
30 document. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
31 |
| 16 | 32 In the end I think you should include one extra step in the |
| 33 Disclosure construction, example, namely what the that byte | |
| 34 sequence looks like as (what [RFC8259] calls) "UTF-8 encoded JSON | |
| 35 text", immediately after the array creation display: | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
36 |
| 16 | 37 ["_26bc4LT-ac6q2KI6cBW5es", "family_name", "Möbius"] [1] |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
38 |
| 16 | 39 ["26bc4LT-ac6q2KI6cBW5es", "family_name", "M%xc3%xb6bius"] [2] |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
40 |
| 16 | 41 It would also be good at this point to clarify notation and |
| 42 terminology, following [RFC8259]. That is, to emphasise the | |
| 43 distinction that [1] is a "JSON text" per the RFC, whose final | |
| 44 value is a six-character Unicode string, while [2] is a UTF-8 | |
| 45 byte sequence, the result of what you call "JSON-encoding". | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
46 |
| 16 | 47 It's true that they are both valid JSON texts, per RFC8259, but |
| 48 you have to apply a JSON parser to them to get to | |
| 49 indistinguishable JSON objects. | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
50 |
| 16 | 51 To be more specific, since you use "JSON-encode" a number of |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
52 times in later sections, I would _strongly recommend_ that you |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
53 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
54 a) Add the following to section 1.2, immediately after the |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
55 definition of *base64url*: |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
56 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
57 *JSON-encode* denotes the conversion of a JSON object to |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
58 "JSON text" and encoding that text in UTF-8, as defined in |
| 16 | 59 [RFC8259]. That is, mapping a JSON object to a UTF-8 byte |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
60 sequence which when decoded and parsed will reconstruct an |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
61 object indistinguishable from the original. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
62 |
| 16 | 63 b) Replace the first two bullets in the algorithm description, with |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
64 |
| 16 | 65 * JSON-encode the array, producing a UTF-8 byte sequence. |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
66 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
67 * base64url-encode the resulting byte sequence. The resulting |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
68 string is the Disclosure. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
69 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
70 c) Be careful never to use "string" when "(UTF-8) byte sequence" |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
71 is meant, starting in 4.2.2 with |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
72 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
73 The Disclosure string is created by JSON-encoding this array |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
74 and base64url-encoding the resulting byte sequence as |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
75 described in Section 4.2.1 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
76 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
77 d) In the second media type registration in 12.2 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
78 "represented as a JSON Object" -> |
| 16 | 79 'represented as UTF-8 encoded "JSON text" as defined in [RFC8259]' |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
80 |
| 16 | 81 e) Include [RFC8259] in 13.1 |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
82 |
| 16 | 83 Appendices A and B. |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
84 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
85 The above problem resurfaces here, with confusion between three |
| 16 | 86 possible interpretations, in the terms of [RFC8259], of what is |
| 87 displayed at various points: | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
88 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
89 * a JSON object, that is, structured data composed of |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
90 instances of the six primitive types which JSON can |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
91 represent. It is _not_ to be understood as string, byte |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
92 sequence or file contents; |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
93 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
94 * a possible JSON text for some JSON object. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
95 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
96 * a UTF-8 encoding of some JSON text, aka a "JSON encoding". |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
97 |
| 16 | 98 I'll use the first example figure in Appendix B to go through |
| 99 this in detail, expanding on the discussion above about 4.2.1. | |
| 100 | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
101 The first figure is labelled as a JSON object, which is OK. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
102 |
| 16 | 103 But it is indistinguishable from one of the possible JSON texts |
| 104 corresponding to that object, and that should be explicitly | |
| 105 acknowledged. | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
106 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
107 The next figure purports to present two alternative "JSON |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
108 encodings", the second of which is problematic. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
109 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
110 Its first line appears indistinguishable from that shown for the |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
111 JSON object in the preceding figure, but is in fact different. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
112 |
| 16 | 113 In the first figure, construed as "JSON text", the o-umlaut glyph |
| 114 denotes a single Unicode character in a six-character | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
115 representation of a six-character object member string value. |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
116 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
117 However in the second figure, second alternative, the o-umlaut |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
118 corresponds to a _two_-byte UTF-8 sub-part of the JSON encoding of |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
119 that value as a seven-byte UTF-8 byte sequence, either in some |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
120 internal representation or an external stream or file. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
121 |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
122 What to do? First, add something similar to |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
123 https://www.ietf.org/archive/id/draft-bray-unichars-14.html#name-notation |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
124 Then, whenever presenting JSON, always indicate whether what is |
| 16 | 125 being shown is JSON text or JSON-encoded text (that is UTF-8 |
| 126 byte sequences). In JSON text, always include a version using the | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
127 U+xxxx notation whenever the underlying string contains non-ASCII |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
128 characters. In JSON-encoded text, _always_ use the %xnn notation |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
129 for non-ASCII characters. |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
130 |
| 16 | 131 Some examples of a possible way of indicating JSON text (*JT*) |
| 132 and JSON-encoded text (*JUBS*), from section 4.2.1 | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
133 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
134 Replace the first figure with these two: |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
135 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
136 _________________________________________________________ |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
137 |*JT* | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
138 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
139 | ["_26bc4LT-ac6q2KI6cBW5es", "family_name", "Möbius"] | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
140 | ^ | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
141 | | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
142 | X+00F6 | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
143 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
144 |________________________________________________________| |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
145 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
146 _______________________________________________________________ |
| 16 | 147 |*JUBS* | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
148 | | |
| 16 | 149 | ["_26bc4LT-ac6q2KI6cBW5es", "family_name", "M%xC3%xB6bius"] | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
150 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
151 |_______________________________________________________________| |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
152 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
153 and the first bullet of the three alternatives which follow with |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
154 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
155 * A different way to encode the unicode o-umlaut: |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
156 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
157 ______________________________________________________________ |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
158 |*JT* | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
159 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
160 | ["_26bc4LT-ac6q2KI6cBW5es", "family_name", "M\x00f6bius"] | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
161 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
162 |_____________________________________________________________| |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
163 |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
164 ______________________________________________________________ |
| 16 | 165 |*JUBS* | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
166 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
167 | ["_26bc4LT-ac6q2KI6cBW5es", "family_name", "M\x00f6bius"] | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
168 | | |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
169 |_____________________________________________________________| |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
170 |
| 16 | 171 The corresponding declaration is then |
| 172 | |
| 173 WyJfMjZiYzRMVC1hYzZxMktJNmNCVzVlcyIsICJmYW1pbHlfbmFtZSIsICJNX | |
|
12
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
174 HUwMGY2Yml1cyJd |
|
9cb53ac26388
mostly done with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
11
diff
changeset
|
175 |
| 13 | 176 And throughout the examples in Appendices A and B, label the initial |
| 16 | 177 figure with *JT* and the 'Content' boxes with *JUBS*. You don't |
| 13 | 178 need to gloss every Chinese/German string with their U+xxxx version, |
| 179 but saying something at the top of A that where non-ASCII characters | |
| 180 appear in any of the initial examples that the actual Unicode | |
| 181 character is what is meant. | |
| 182 | |
| 183 The Appendix B example then looks like this, along with some small | |
| 184 changes to the text: | |
| 185 | |
| 186 Usually, JSON-based formats transport claim values as simple | |
| 187 properties of a JSON object such as this: | |
| 188 | |
| 189 _________________________________________ | |
| 190 |*JT* | | |
| 191 | | | |
| 192 | ... | | |
| 16 | 193 | "family_name": "Möbius", | ö is the single character |
| 194 | "address": { | LATIN SMALL LETTER O | |
| 195 | "street_address": "Schulstr. 12", | WITH DIAERESIS | |
| 13 | 196 | "locality": "Schulpforta" | |
| 197 | } | | |
| 198 | ... | | |
| 199 |________________________________________| | |
| 200 | |
| 201 | |
| 16 | 202 [In first para, change "byte string" to "byte sequence" |
| 203 twice, and three more times further down] | |
| 204 | |
| 205 JSON, however, does not prescribe a unique representation for | |
| 206 data, allowing for variations in the how it presented. The JSON | |
| 207 text above is only one possibility. Other possible | |
| 208 representations include | |
| 209 ________________________________________ | |
| 210 |*JT* and *JUEBS* | | |
| 211 | | | |
| 212 | ... | | |
| 213 | "family_name": "M\u00f6bius", | | |
| 214 | "address": { | | |
| 215 | "street_address": "Schulstr. 12", | | |
| 216 | "locality": "Schulpforta" | | |
| 217 | } | | |
| 218 | ... | | |
| 219 |_______________________________________| | |
| 220 | |
| 221 and | |
| 222 | |
| 223 __________________________________________________________________________ | |
| 224 |*JT* | | |
| 225 | | | |
| 226 | ... | | |
| 227 | "family_name": "Möbius", | | |
| 228 | "address": {"locality":"Schulpforta", "street_address":"Schulstr. 12"} | | |
| 229 | ... | | |
| 230 |_________________________________________________________________________| | |
| 231 | |
| 232 ö is the single character LATIN SMALL LETTER O WITH DIAERESIS | |
| 233 | |
| 234 __________________________________________________________________________ | |
| 235 |*JUBS* | | |
| 236 | | | |
| 237 | ... | | |
| 238 | "family_name": "M%xC3%xB6bius", | | |
| 239 | "address": {"locality":"Schulpforta", "street_address":"Schulstr. 12"} | | |
| 240 | ... | | |
| 241 |_________________________________________________________________________| | |
| 242 | |
| 243 | |
| 244 The two representations of the value in family_name are very | |
| 245 different on the byte-level, but when decoded from UTF-8 byte | |
| 246 sequences to JSON texts, those texts would be parsed into | |
| 247 indistinguishable JSON objects. The same goes for ... | |
| 248 | |
| 249 The variations in white space, ordering of object properties, and | |
| 250 representation of Unicode characters are all explicitly allowed | |
| 251 in [RFC8259]. There are further variations, e.g. for floating | |
| 252 point values ([RFC 8785]) and UNICODE combining characters | |
| 253 ([UNICODE]). | |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
254 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
255 *Nits* |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
256 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
257 4. "(for those who celebrate)" will be anywhere from obscure to |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
258 confusing for many readers from many cultures -- best to remove it. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
259 |
| 16 | 260 4.2.1. "an UTF-8" -> "a UTF-8" [overtaken above] |
|
11
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
261 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
262 "However, the digest is calculated over the respective |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
263 base64url-encoded value itself, which effectively signs" |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
264 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
265 -> |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
266 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
267 "Because the digest is calculated over the respective |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
268 base64url-encoded value itself, this effectively signs" |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
269 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
270 4.3.1. I'd recommend |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
271 "The bytes of the digest MUST" -> "The bytes of the sd_hash value MUST" |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
272 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
273 6. I have decoded a few of the Disclosures and they're fine, but you |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
274 might want to ask a friendly 3rd party to double-check all the |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
275 Disclosures and digests, at least here and in Appendix A. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
276 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
277 9. "Security considerations in this section help achieve the |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
278 following properties:" |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
279 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
280 This confused me for a while. I think what you mean to say here |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
281 is something like |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
282 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
283 This spec aims to provide two security guarantees: |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
284 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
285 *Selective Disclosure*: ... |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
286 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
287 *Integrity*: ... |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
288 |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
289 The following sub-sections show how the various aspects of the |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
290 design presented here combine to achieve this. |
|
bc100f494ca0
nearly done, still struggling with o-umlaut
Henry S. Thompson <ht@inf.ed.ac.uk>
parents:
diff
changeset
|
291 |
