@@ -1826,17 +1826,17 @@ <h2>Algorithms</h2>
1826
1826
no proof values. An < dfn > input document</ dfn > is an [=map=] that has not yet had
1827
1827
the current proof added to it, but it MAY contain a proof value that was added
1828
1828
to it by a previous process. A < dfn class ="export "> secured data document</ dfn >
1829
- is a [=map=] that contains one or more proof value, one of which might be the
1830
- current proof(s) being generated to be added to it.
1829
+ is a [=map=] that contains one or more proof values.
1831
1830
</ p >
1832
1831
1833
1832
< p >
1834
1833
Implementers MAY implement reasonable defaults and safeguards in addition to the
1835
1834
algorithms below, to help mitigate developer error, excessive resource
1836
1835
consumption, newly discovered attack models against which there is a particular
1837
- protection, etc. The algorithms provided below are the minimum requirements for
1838
- an interoperable implementation, and developers are urged to include additional
1839
- measures that could contribute to a safer and more efficient ecosystem.
1836
+ protection, and other improvements. The algorithms provided below are the
1837
+ minimum requirements for an interoperable implementation, and developers are
1838
+ urged to include additional measures that could contribute to a safer and more
1839
+ efficient ecosystem.
1840
1840
</ p >
1841
1841
1842
1842
< section class ="normative ">
@@ -1951,11 +1951,11 @@ <h3>Add Proof Set/Chain</h3>
1951
1951
< p >
1952
1952
The following algorithm specifies how to incrementally add a proof to a proof
1953
1953
set or proof chain starting with a secured document containing either a proof or
1954
- proof set/chain. Required inputs are a [=secured data document=]
1955
- ([=map=] |securedDocument|), a [=cryptographic suite=]
1956
- ( |suite:cryptosuite instance |), and a set of options ([=map=] |options|). Output
1957
- is a new [=secured data document=] ([=map=]). Whenever this algorithm
1958
- encodes strings, it MUST use UTF-8 encoding.
1954
+ proof set/chain. Required inputs are a [=secured data document=] ([=map=]
1955
+ |securedDocument|), a [=cryptographic suite=] ([=cryptosuite
1956
+ instance=] |suite|), and a set of options ([=map=] |options|). Output is a new
1957
+ [=secured data document=] ([=map=]). Whenever this algorithm encodes strings, it
1958
+ MUST use UTF-8 encoding.
1959
1959
</ p >
1960
1960
1961
1961
< ol class ="algorithm ">
@@ -1990,15 +1990,13 @@ <h3>Add Proof Set/Chain</h3>
1990
1990
</ li >
1991
1991
< li >
1992
1992
Set |inputDocument|.|proof| to |matchingProofs|.
1993
- < div class ="note ">
1993
+ < div class ="note " title =" This step protects the document and existing proofs " >
1994
1994
< p >
1995
- This step adds references to the graph names, as well as adding a copy
1996
- of < em > all</ em > the claims contained in the proof graphs.
1997
- </ p >
1998
- < p >
1999
- The step is critical, as it < q > binds</ q > any matching proofs to the document prior
2000
- to applying the current signature. The |proof| value for the document will be updated
2001
- in a later step of this algorithm.
1995
+ This step adds references to the [=named graphs=], as well as adding a copy of
1996
+ < em > all</ em > the claims contained in the [=proof graphs=]. The step is critical,
1997
+ as it < q > binds</ q > any matching proofs to the document prior to applying the
1998
+ current proof. The |proof| value for the document will be updated in a later
1999
+ step of this algorithm.
2002
2000
</ p >
2003
2001
</ div >
2004
2002
</ li >
@@ -2068,26 +2066,26 @@ <h3>Verify Proof</h3>
2068
2066
< a data-cite ="INFRA#nulls "> Null</ a > , if [=verification result/verified=] is
2069
2067
`false`; otherwise, an [=input document=]
2070
2068
</ dd >
2071
- < dt > < dfn data-dfn-for ="verification result "> media type </ dfn > </ dt >
2069
+ < dt > < dfn data-dfn-for ="verification result "> mediaType </ dfn > </ dt >
2072
2070
< dd >
2073
2071
< a data-cite ="INFRA#nulls "> Null</ a > , if [=verification result/verified=] is
2074
2072
`false`; otherwise, a [=MIME type|media type=], which MAY include [=MIME
2075
2073
type/parameters=]
2076
2074
</ dd >
2077
2075
< dt > < dfn data-dfn-for ="verification result " class ="lint-ignore "> warnings</ dfn > </ dt >
2078
2076
< dd >
2079
- a [=list=] of
2080
- < dfn data-cite ="VC-DATA-MODEL-2.0#dfn-problemdetails "> ProblemDetails</ dfn > ,
2081
- which defaults to an empty [=list=]</ dd >
2077
+ a [=list=] of [=ProblemDetails=], which defaults to an empty [=list=]
2078
+ </ dd >
2082
2079
< dt > < dfn data-dfn-for ="verification result "> errors</ dfn > </ dt >
2083
2080
< dd >
2084
- a [=list=] of [=ProblemDetails=], which defaults to an empty [=list=]</ dd >
2081
+ a [=list=] of [=ProblemDetails=], which defaults to an empty [=list=]
2082
+ </ dd >
2085
2083
</ dl >
2086
2084
2087
2085
< p >
2088
2086
When a step says "an error MUST be raised", it means that a [=verification
2089
- result=] MUST be returned with a [=verification result/verified=] of `false`
2090
- and a non-empty [=verification result/errors=] list.
2087
+ result=] MUST be returned with a [=verification result/verified=] value of
2088
+ `false` and a non-empty [=verification result/errors=] list.
2091
2089
</ p >
2092
2090
2093
2091
< ol class ="algorithm ">
@@ -2141,7 +2139,7 @@ <h3>Verify Proof</h3>
2141
2139
< dd > |cryptosuiteVerificationResult|.|verified|</ dd >
2142
2140
< dt > [=verifiedDocument=]</ dt >
2143
2141
< dd > |cryptosuiteVerificationResult|.|verifiedDocument|</ dd >
2144
- < dt > [=media type =]</ dt >
2142
+ < dt > [=mediaType =]</ dt >
2145
2143
< dd > |mediaType|</ dd >
2146
2144
</ dl >
2147
2145
</ li >
@@ -2151,21 +2149,18 @@ <h3>Verify Proof</h3>
2151
2149
< section >
2152
2150
< h3 > Verify Proof Sets and Chains</ h3 >
2153
2151
< p >
2154
- In a proof set or proof chain, a [=secured data document=] has a
2155
- `proof` attribute which contains a list of proofs
2156
- (|allProofs|).
2157
- The following algorithm provides one method of checking the authenticity and
2158
- integrity of a [=secured data document=], achieved by verifying every
2159
- proof in |allProofs|. Other approaches are possible, particularly if
2160
- it is only desired to verify a subset of the proofs contained in
2161
- |allProofs|. If another approach is taken to verify only a subset of the
2162
- proofs, then it is important to note that any proof in that subset with a
2163
- `previousProof` can only be considered verified if the proofs it
2164
- references are also considered verified.
2165
- </ p >
2166
- < p >
2167
- Required input is a
2168
- [=secured data document=] (|securedDocument|). A list of
2152
+ In a [=proof set=] or [=proof chain=], a [=secured data document=] has a `proof`
2153
+ attribute which contains a list of [=proofs=] (|allProofs|). The following
2154
+ algorithm provides one method of checking the authenticity and integrity of a
2155
+ [=secured data document=], achieved by verifying every proof in |allProofs|.
2156
+ Other approaches are possible, particularly if it is only desired to verify a
2157
+ subset of the proofs contained in |allProofs|. If another approach is taken to
2158
+ verify only a subset of the proofs, then it is important to note that any proof
2159
+ in that subset with a `previousProof` can only be considered verified if the
2160
+ proofs it references are also considered verified.
2161
+ </ p >
2162
+ < p >
2163
+ Required input is a [=secured data document=] (|securedDocument|). A list of
2169
2164
[=verification results=] corresponding to each proof in |allProofs| is
2170
2165
generated, and a single combined [=verification result=] is returned as output.
2171
2166
Implementations MAY return any of the other [=verification result=]s and/or any
@@ -2185,13 +2180,13 @@ <h3>Verify Proof Sets and Chains</h3>
2185
2180
Let |matchingProofs| be an empty list.
2186
2181
</ li >
2187
2182
< li >
2188
- If |proof| contains a `previousProof` attribute and that attribute is a string,
2189
- add the element from |allProofs| with an `id` attribute matching `previousProof`
2190
- to `matchingProofs`. If a proof with `id` does not exist in |allProofs|, an
2191
- error MUST be raised and SHOULD convey an error type of
2183
+ If |proof| contains a `previousProof` attribute and that attribute is a
2184
+ [=string=], add the element from |allProofs| with an `id` attribute matching
2185
+ `previousProof` to `matchingProofs`. If a proof with `id` does not exist in
2186
+ |allProofs|, an error MUST be raised and SHOULD convey an error type of
2192
2187
< a href ="#PROOF_VERIFICATION_ERROR "> PROOF_VERIFICATION_ERROR</ a > . If the
2193
- `previousProof` attribute is an array , add each element from |allProofs| with an
2194
- `id` attribute that matches an element of that array . If any element of
2188
+ `previousProof` attribute is a [=list=] , add each element from |allProofs| with an
2189
+ `id` attribute that matches an element of that [=list=] . If any element of
2195
2190
`previousProof` [=list=] has an `id` attribute that does not match the `id`
2196
2191
attribute of any element of |allProofs|, an error MUST be raised and SHOULD
2197
2192
convey an error type of
@@ -2201,9 +2196,9 @@ <h3>Verify Proof Sets and Chains</h3>
2201
2196
Let |inputDocument| be a copy of |securedDocument| with the proof value
2202
2197
removed and then set |inputDocument|.|proof| to |matchingProofs|.
2203
2198
2204
- < p class ="note ">
2205
- See the note in < a href =" #add-proof-set-chain " > </ a > to learn what
2206
- claims this step entails .
2199
+ < p class ="note " title =" Secure document and previous proofs " >
2200
+ See the note in Step 6 of Section [[[ #add-proof-set-chain]]] to learn about
2201
+ what document properties and previous proofs this step secures .
2207
2202
</ p >
2208
2203
</ li >
2209
2204
< li >
@@ -2339,7 +2334,8 @@ <h3>Processing Errors</h3>
2339
2334
2340
2335
< p >
2341
2336
When exposing these errors through an HTTP interface, implementers SHOULD use
2342
- [[RFC9457]] to encode the error data structure. If [[RFC9457]] is used:
2337
+ [[RFC9457]] to encode the error data structure as a < dfn > ProblemDetails</ dfn >
2338
+ [=map=]. If [[RFC9457]] is used:
2343
2339
</ p >
2344
2340
2345
2341
< ul >
0 commit comments