@@ -528,11 +528,11 @@ where:
528
528
529
529
: <dfn for="role">KEYID</dfn>
530
530
::
531
- the identifier of the key signing the ROLE dictionary.
531
+ the identifier of the key signing the <a for="role"> ROLE</a> dictionary.
532
532
533
533
: <dfn>SIGNATURE</dfn>
534
534
::
535
- a hex-encoded signature of the canonical form of the metadata for ROLE.
535
+ a hex-encoded signature of the canonical form of the metadata for <a for="role"> ROLE</a> .
536
536
537
537
538
538
All keys have the format:
@@ -594,7 +594,7 @@ The <dfn for="keytype">"rsa"</dfn> format is:
594
594
595
595
<pre highlight =" json " >
596
596
{
597
- "keytype" : " rsa",
597
+ "keytype" : < a for = " keytype " >" rsa"</ a > ,
598
598
"scheme" : <a for =" scheme " >"rsassa-pss-sha256"</a >,
599
599
"keyval" : {
600
600
"public" : <a for =" keyval-rsa " >PUBLIC</a >
@@ -612,7 +612,7 @@ The <dfn for="keytype">"ed25519"</dfn> format is:
612
612
613
613
<pre highlight =" json " >
614
614
{
615
- "keytype" : " ed25519",
615
+ "keytype" : < a for = " keytype " >" ed25519"</ a > ,
616
616
"scheme" : <a for =" scheme " >"ed25519"</a >,
617
617
"keyval" : {
618
618
"public" : <a for =" keyval-ed25519 " >PUBLIC</a >
@@ -630,7 +630,7 @@ The <dfn for="keytype">"ecdsa-sha2-nistp256"</dfn> format is:
630
630
631
631
<pre highlight =" json " >
632
632
{
633
- "keytype" : " ecdsa-sha2-nistp256",
633
+ "keytype" : < a for = " keytype " >" ecdsa-sha2-nistp256"</ a > ,
634
634
"scheme" : <a for =" scheme " >"ecdsa-sha2-nistp256"</a >,
635
635
"keyval" : {
636
636
"public" : <a for =" keyval-ecdsa " >PUBLIC</a >
@@ -650,7 +650,7 @@ the canonical form of the key.
650
650
Metadata <dfn >date-time</dfn > follows the ISO 8601 standard. The expected
651
651
format of the combined date and time string is "YYYY-MM-DDTHH:MM: SSZ ". Time is
652
652
always in UTC, and the "Z" time zone designator is attached to indicate a
653
- zero UTC offset. An example date-time string is "1985-10-21T01:21:00Z".
653
+ zero UTC offset. An example < a > date-time</ a > string is "1985-10-21T01:21:00Z".
654
654
655
655
656
656
## File formats: root.json ## {#file-formats-root}
@@ -855,7 +855,7 @@ where:
855
855
: <dfn for =" snapshot " >METAPATH</dfn >
856
856
::
857
857
A string giving the file path of the metadata on the repository relative to
858
- the metadata base URL. For snapshot.json, these are top-level targets
858
+ the metadata base URL. For < a > snapshot.json</ a > , these are top-level targets
859
859
metadata and delegated targets metadata.
860
860
861
861
: <dfn for =" metapath " >VERSION</dfn >
@@ -956,7 +956,7 @@ where:
956
956
957
957
: <a for =" targets-obj " >TARGETS</a >
958
958
::
959
- Each key of the TARGETS object is a <a >TARGETPATH</a >.
959
+ Each key of the < a for = " targets-obj " > TARGETS</ a > object is a <a >TARGETPATH</a >.
960
960
961
961
: <dfn >TARGETPATH</dfn >
962
962
::
@@ -998,16 +998,16 @@ where:
998
998
<pre highlight =" json " >
999
999
{
1000
1000
"keys" : {
1001
- KEYID : KEY,
1001
+ < a for = " role " > KEYID</ a > : KEY,
1002
1002
...
1003
1003
},
1004
1004
"roles" : [
1005
1005
{
1006
1006
"name": <a >ROLENAME</a >,
1007
- "keyids" : [ KEYID, ... ] ,
1007
+ "keyids" : [ < a for = " role " > KEYID</ a > , ... ] ,
1008
1008
"threshold" : <a >THRESHOLD</a >,
1009
- ("path_hash_prefixes" : [ HEX_DIGEST, ... ] |
1010
- "paths" : [ PATHPATTERN, ... ]),
1009
+ (< a > "path_hash_prefixes"</ a > : [ HEX_DIGEST, ... ] |
1010
+ "< a > paths</ a > " : [ < a > PATHPATTERN</ a > , ... ]),
1011
1011
"terminating": <a >TERMINATING</a >,
1012
1012
},
1013
1013
...
@@ -1084,7 +1084,7 @@ over the second one, the second delegation is trusted more than the third
1084
1084
one, and so on. Likewise, the metadata of the first delegation will override that
1085
1085
of the second delegation, the metadata of the second delegation will override
1086
1086
that of the third one, etc. In order to accommodate prioritized
1087
- delegations, the "roles" key in the DELEGATIONS object above points to an array
1087
+ delegations, the "roles" key in the < a > DELEGATIONS</ a > object above points to an array
1088
1088
of delegated roles, rather than to a hash table.
1089
1089
1090
1090
The metadata files for delegated target roles has the same format as the
@@ -1171,10 +1171,10 @@ The "signed" portion of <a>timestamp.json</a> is as follows:
1171
1171
}
1172
1172
</pre >
1173
1173
1174
- <a >SPEC_VERSION</a >, <a for =" role " >VERSION</a > and <a >EXPIRES</a > are the same as is described for the root.json file.
1174
+ <a >SPEC_VERSION</a >, <a for =" role " >VERSION</a > and <a >EXPIRES</a > are the same as is described for the < a > root.json</ a > file.
1175
1175
1176
1176
<a >METAFILES</a > is the same as described for the <a >snapshot.json</a > file. In the case
1177
- of the timestamp.json file, this MUST only include a description of the
1177
+ of the < a > timestamp.json</ a > file, this MUST only include a description of the
1178
1178
<a >snapshot.json</a > file.
1179
1179
1180
1180
<div class =" example " id =" example-timestamp.json " >
@@ -1224,7 +1224,7 @@ The "signed" portion of <a>mirrors.json</a> is as follows:
1224
1224
"mirrors" : [
1225
1225
{ "urlbase" : <a >URLBASE</a >,
1226
1226
"metapath" : <a for =" mirrors " >METAPATH</a >,
1227
- "targetspath" : TARGETSPATH,
1227
+ "targetspath" : < a > TARGETSPATH</ a > ,
1228
1228
"metacontent" : [ <a >PATHPATTERN</a > ... ] ,
1229
1229
"targetscontent" : [ <a >PATHPATTERN</a > ... ] ,
1230
1230
("custom" : { ... }) }
@@ -1335,13 +1335,13 @@ it in the next step.
1335
1335
8 . ** Persist root metadata.** The client MUST write the file to
1336
1336
non-volatile storage as FILENAME.EXT (e.g. root.json).
1337
1337
1338
- 9 . Repeat steps 5.3.1 to 5.3.8
1338
+ 9 . Repeat steps 5.3.2 to 5.3.9
1339
1339
1340
1340
10 . ** Check for a freeze attack.** The expiration timestamp in the
1341
1341
trusted root metadata file MUST be higher than the fixed update start time.
1342
1342
If the trusted root metadata file has expired, abort the update cycle,
1343
1343
report the potential freeze attack. On the next update cycle, begin at step
1344
- 5.1 and version N of the root metadata file.
1344
+ [[ #update-root ]] and version N of the root metadata file.
1345
1345
1346
1346
11 . ** If the timestamp and / or snapshot keys have been rotated, then delete the
1347
1347
trusted timestamp and snapshot metadata files.** This is done
@@ -1488,7 +1488,7 @@ it in the next step.
1488
1488
1 . If this role has been visited before, then skip this role
1489
1489
(so that cycles in the delegation graph are avoided). Otherwise, if an
1490
1490
application-specific maximum number of roles have been visited, then go to
1491
- step 5.6 (so that attackers cannot cause the client to waste excessive
1491
+ step [[ #fetch-target ]] (so that attackers cannot cause the client to waste excessive
1492
1492
bandwidth or time). Otherwise, if this role contains metadata about the
1493
1493
desired target, then go to step [[ #fetch-target]] .
1494
1494
@@ -1564,7 +1564,7 @@ the latest trusted version) of the root metadata is available from the
1564
1564
repository. This ensures that an outdated client can always correctly
1565
1565
re-trace the chain of trust across multiple root key updates, even if the
1566
1566
latest set of root keys on the client dates back multiple root metadata
1567
- versions. See step 5.2 of the client application workflow for more details.
1567
+ versions. See step [[ #update-root ]] of the client application workflow for more details.
1568
1568
1569
1569
Note that an attacker, who controls the repository, can launch freeze
1570
1570
attacks by withholding new root metadata. The attacker does not need to
@@ -1643,7 +1643,7 @@ so that outdated clients can update to the latest available root.
1643
1643
1644
1644
## Reading consistent snapshots ## {#reading-consistent-snapshots}
1645
1645
1646
- See section 5 (The client application) for more details.
1646
+ See [[ #detailed- client-workflow ]] for more details.
1647
1647
1648
1648
# Future directions and open questions # {#future-directions-and-open-questions}
1649
1649
0 commit comments