1
1
# <p align =" center " >The Update Framework Specification
2
2
3
- Last modified: ** 2 June 2020**
3
+ Last modified: ** 9 June 2020**
4
4
5
- Version: ** 1.0.3 **
5
+ Version: ** 1.0.4 **
6
6
7
7
We strive to make the specification easy to implement, so if you come across
8
8
any inconsistencies or experience any difficulty, do let us know by sending an
@@ -332,7 +332,7 @@ repo](https://github.com/theupdateframework/specification/issues).
332
332
333
333
The snapshot role signs a metadata file that provides information about
334
334
the latest version of all targets metadata on the repository
335
- (the top-level targets.json and all delegated roles). This information allows
335
+ (the top-level targets role and all delegated roles). This information allows
336
336
clients to know which metadata files have been updated and also prevents
337
337
mix-and-match attacks.
338
338
@@ -411,34 +411,36 @@ repo](https://github.com/theupdateframework/specification/issues).
411
411
+ ** 3.1.2 Metadata files**
412
412
413
413
The filenames and directory structure of repository metadata are strictly
414
- defined. The following are the metadata files of top-level roles relative
414
+ defined. All metadata filenames will have an extension (EXT) based on the
415
+ metaformat, for example JSON metadata files would have an EXT of json.
416
+ The following are the metadata files of top-level roles relative
415
417
to the base URL of metadata available from a given repository mirror.
416
418
417
- /root.json
419
+ /root.EXT
418
420
419
421
Signed by the root keys; specifies trusted keys for the other
420
422
top-level roles.
421
423
422
- /snapshot.json
424
+ /snapshot.EXT
423
425
424
426
Signed by the snapshot role's keys. Lists the version numbers of all
425
- target metadata files: the top-level targets.json and all delegated
427
+ target metadata files: the top-level targets.EXT and all delegated
426
428
roles.
427
429
428
- /targets.json
430
+ /targets.EXT
429
431
430
432
Signed by the target role's keys. Lists hashes and sizes of target
431
433
files. Specifies delegation information and trusted keys for delegated
432
434
target roles.
433
435
434
- /timestamp.json
436
+ /timestamp.EXT
435
437
436
438
Signed by the timestamp role's keys. Lists hash(es), size, and version
437
439
number of the snapshot file. This is the first and potentially only
438
440
file that needs to be downloaded when clients poll for the existence
439
441
of updates.
440
442
441
- /mirrors.json (optional)
443
+ /mirrors.EXT (optional)
442
444
443
445
Signed by the mirrors role's keys. Lists information about available
444
446
mirrors and the content available from each mirror.
@@ -452,13 +454,13 @@ repo](https://github.com/theupdateframework/specification/issues).
452
454
453
455
A delegated role file is located at:
454
456
455
- /DELEGATED_ROLE.json
457
+ /DELEGATED_ROLE.EXT
456
458
457
459
where DELEGATED_ROLE is the name of the delegated role that has been
458
- specified in targets.json . If this role further delegates trust to a role
460
+ specified in targets.EXT . If this role further delegates trust to a role
459
461
named ANOTHER_ROLE, that role's signed metadata file is made available at:
460
462
461
- /ANOTHER_ROLE.json
463
+ /ANOTHER_ROLE.EXT
462
464
463
465
Delegated target roles are authorized by the keys listed in the directly
464
466
delegating target role.
@@ -472,7 +474,12 @@ repo](https://github.com/theupdateframework/specification/issues).
472
474
473
475
* ** 4.1. Metaformat**
474
476
475
- All documents use a subset of the JSON object format, with
477
+ Implementers of TUF may use any data format for metadata files as long as
478
+ all fields in this specification are included and TUF clients are able to
479
+ interpret them without ambiguity. Implementers should choose a data format
480
+ that allows for canonicalization, or one that will decode data
481
+ deterministically by default so that signatures can be accurately verified.
482
+ The examples in this document use a subset of the JSON object format, with
476
483
floating-point numbers omitted. When calculating the digest of an
477
484
object, we use the "canonical JSON" subdialect as described at
478
485
http://wiki.laptop.org/go/Canonical_JSON
@@ -494,8 +501,8 @@ repo](https://github.com/theupdateframework/specification/issues).
494
501
495
502
KEYID is the identifier of the key signing the ROLE dictionary.
496
503
497
- SIGNATURE is a hex-encoded signature of the canonical JSON form of
498
- ROLE.
504
+ SIGNATURE is a hex-encoded signature of the canonical form of
505
+ the metadata for ROLE.
499
506
500
507
501
508
All keys have the format:
@@ -568,7 +575,7 @@ repo](https://github.com/theupdateframework/specification/issues).
568
575
PUBLIC is in PEM format and a string.
569
576
570
577
The KEYID of a key is the hexdigest of the SHA-256 hash of the
571
- canonical JSON form of the key.
578
+ canonical form of the key.
572
579
573
580
Metadata date-time data follows the ISO 8601 standard. The expected format
574
581
of the combined date and time string is "YYYY-MM-DDTHH:MM: SSZ ". Time is
0 commit comments