Skip to content

Commit 45675bf

Browse files
committed
add test cases for (1) when there is no local root, (2) there is a local root but no other top-level metadata
1 parent bdb5cee commit 45675bf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+2011
-4
lines changed

client/client_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -386,11 +386,13 @@ func newClientWithMeta(baseDir string, relPath string, serverAddr string) (*Clie
386386
}
387387
c := NewClient(MemoryLocalStore(), remote)
388388
for _, m := range []string{"root.json", "snapshot.json", "timestamp.json", "targets.json"} {
389-
metadataJSON, err := ioutil.ReadFile(initialStateDir + "/" + m)
390-
if err != nil {
391-
return nil, err
389+
if _, err := os.Stat(initialStateDir + "/" + m); err == nil {
390+
metadataJSON, err := ioutil.ReadFile(initialStateDir + "/" + m)
391+
if err != nil {
392+
return nil, err
393+
}
394+
c.local.SetMeta(m, metadataJSON)
392395
}
393-
c.local.SetMeta(m, metadataJSON)
394396
}
395397
return c, nil
396398
}
@@ -411,6 +413,8 @@ func (s *ClientSuite) TestUpdateRoots(c *C) {
411413
}{
412414
// Succeeds when there is no root update.
413415
{"testdata/Published1Time", nil, map[string]int{"root": 1, "timestamp": 1, "snapshot": 1, "targets": 1}},
416+
// Succeeds when client only has root.json
417+
{"testdata/Published1Time_client_root_only", nil, map[string]int{"root": 1, "timestamp": 1, "snapshot": 1, "targets": 1}},
414418
// Succeeds updating root from version 1 to version 2.
415419
{"testdata/Published2Times_keyrotated", nil, map[string]int{"root": 2, "timestamp": 1, "snapshot": 1, "targets": 1}},
416420
// Succeeds updating root from version 1 to version 2 when the client's initial root version is expired.
@@ -429,6 +433,8 @@ func (s *ClientSuite) TestUpdateRoots(c *C) {
429433
{"testdata/Published1Time_backwardRootVersion", verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 1, Expected: 2}), map[string]int{}},
430434
// Fails updating root to 2.root.json when the value of the version field inside it is 3 (rollforward attack prevention).
431435
{"testdata/Published3Times_keyrotated_forwardRootVersion", verify.ErrWrongVersion(verify.ErrWrongVersion{Given: 3, Expected: 2}), map[string]int{}},
436+
// Fails updating when there is no local trusted root.
437+
{"testdata/Published1Time_client_no_root", errors.New("tuf: no root keys found in local meta store"), map[string]int{}},
432438

433439
// snapshot role key rotation increase the snapshot and timestamp.
434440
{"testdata/Published2Times_snapshot_keyrotated", nil, map[string]int{"root": 2, "timestamp": 2, "snapshot": 2, "targets": 1}},
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93",
5+
"sig": "60a5724ac31af58ece866b723ab121a168b9e93f0033a98dd8449e6550f4d897db0329cdb135fd3a016c8c375e4177c16f1f4d3ada550eb6d06a52b5c84fbb07"
6+
}
7+
],
8+
"signed": {
9+
"_type": "snapshot",
10+
"expires": "2031-09-14T02:30:57Z",
11+
"meta": {
12+
"targets.json": {
13+
"version": 1
14+
}
15+
},
16+
"spec_version": "1.0.0",
17+
"version": 1
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4",
5+
"sig": "ecb8da4380f992d0d80cbcb78c31c91baf171dad346725fcbf6b1487f52653fc9a2f1ab46a28d32a733a48badbbd316814dcda52cc49cf3bf6fb415403ce7a0a"
6+
}
7+
],
8+
"signed": {
9+
"_type": "targets",
10+
"delegations": {
11+
"keys": {},
12+
"roles": []
13+
},
14+
"expires": "2031-09-14T02:30:57Z",
15+
"spec_version": "1.0.0",
16+
"targets": {},
17+
"version": 1
18+
}
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae",
5+
"sig": "4e4f72264b522cf8e2867fcaf1a6b1463d43bdf58027fb5770b6d611ae68a9f36b93ce5a50f874744ef1d7b72a11ad685f24081511c306fd7118dc60c90bdf08"
6+
}
7+
],
8+
"signed": {
9+
"_type": "timestamp",
10+
"expires": "2031-09-14T02:30:57Z",
11+
"meta": {
12+
"snapshot.json": {
13+
"hashes": {
14+
"sha256": "195c327842ae9601900016a50d0536a05136bfbf55ddb70657427ae12ed52181",
15+
"sha512": "8deed35dcd9d634fcce94c42049829078c15a57d35ee83b15c201b6a0c80111fefba49cca522dedb1d79bc000393bf6c45b72d485f9d027f7c5a3f8922734a5c"
16+
},
17+
"length": 431,
18+
"version": 1
19+
}
20+
},
21+
"spec_version": "1.0.0",
22+
"version": 1
23+
}
24+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93",
5+
"sig": "60a5724ac31af58ece866b723ab121a168b9e93f0033a98dd8449e6550f4d897db0329cdb135fd3a016c8c375e4177c16f1f4d3ada550eb6d06a52b5c84fbb07"
6+
}
7+
],
8+
"signed": {
9+
"_type": "snapshot",
10+
"expires": "2031-09-14T02:30:57Z",
11+
"meta": {
12+
"targets.json": {
13+
"version": 1
14+
}
15+
},
16+
"spec_version": "1.0.0",
17+
"version": 1
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4",
5+
"sig": "ecb8da4380f992d0d80cbcb78c31c91baf171dad346725fcbf6b1487f52653fc9a2f1ab46a28d32a733a48badbbd316814dcda52cc49cf3bf6fb415403ce7a0a"
6+
}
7+
],
8+
"signed": {
9+
"_type": "targets",
10+
"delegations": {
11+
"keys": {},
12+
"roles": []
13+
},
14+
"expires": "2031-09-14T02:30:57Z",
15+
"spec_version": "1.0.0",
16+
"targets": {},
17+
"version": 1
18+
}
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae",
5+
"sig": "4e4f72264b522cf8e2867fcaf1a6b1463d43bdf58027fb5770b6d611ae68a9f36b93ce5a50f874744ef1d7b72a11ad685f24081511c306fd7118dc60c90bdf08"
6+
}
7+
],
8+
"signed": {
9+
"_type": "timestamp",
10+
"expires": "2031-09-14T02:30:57Z",
11+
"meta": {
12+
"snapshot.json": {
13+
"hashes": {
14+
"sha256": "195c327842ae9601900016a50d0536a05136bfbf55ddb70657427ae12ed52181",
15+
"sha512": "8deed35dcd9d634fcce94c42049829078c15a57d35ee83b15c201b6a0c80111fefba49cca522dedb1d79bc000393bf6c45b72d485f9d027f7c5a3f8922734a5c"
16+
},
17+
"length": 431,
18+
"version": 1
19+
}
20+
},
21+
"spec_version": "1.0.0",
22+
"version": 1
23+
}
24+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129",
5+
"sig": "257396e371baf489e38653fef8cf0c98d1915a1f61f5bfbb0e3a03bad7c863795b738cdddc6b6899354447cfed0de0f79f8eaeec7acd509322009ee90c49b20d"
6+
}
7+
],
8+
"signed": {
9+
"_type": "root",
10+
"consistent_snapshot": true,
11+
"expires": "2031-09-14T02:30:57Z",
12+
"keys": {
13+
"3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae": {
14+
"keyid_hash_algorithms": [
15+
"sha256",
16+
"sha512"
17+
],
18+
"keytype": "ed25519",
19+
"keyval": {
20+
"public": "6bac59b8d9e1aae02fae6fba6e7fe3fc9fe5b4a9fe98c3fca255d8c8ec3e5b35"
21+
},
22+
"scheme": "ed25519"
23+
},
24+
"77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93": {
25+
"keyid_hash_algorithms": [
26+
"sha256",
27+
"sha512"
28+
],
29+
"keytype": "ed25519",
30+
"keyval": {
31+
"public": "6400d770c7c1bce4b3d59ce0079ed686e843b6500bbea77d869a1ae7df4565a1"
32+
},
33+
"scheme": "ed25519"
34+
},
35+
"d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129": {
36+
"keyid_hash_algorithms": [
37+
"sha256",
38+
"sha512"
39+
],
40+
"keytype": "ed25519",
41+
"keyval": {
42+
"public": "28bf74baa87ed923f8fa27e3292684f8ec4730ce0bdc65150ed58199206ce089"
43+
},
44+
"scheme": "ed25519"
45+
},
46+
"e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4": {
47+
"keyid_hash_algorithms": [
48+
"sha256",
49+
"sha512"
50+
],
51+
"keytype": "ed25519",
52+
"keyval": {
53+
"public": "e6ae9d3b67d7b3ce274130291dd90287f32b8fd72bfb4ac5430859ebd1c28a46"
54+
},
55+
"scheme": "ed25519"
56+
}
57+
},
58+
"roles": {
59+
"root": {
60+
"keyids": [
61+
"d4dab4b4d68b91665a6d0dac5b4e64677aa6d853fc787669168b4b4ba9822129"
62+
],
63+
"threshold": 1
64+
},
65+
"snapshot": {
66+
"keyids": [
67+
"77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93"
68+
],
69+
"threshold": 1
70+
},
71+
"targets": {
72+
"keyids": [
73+
"e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4"
74+
],
75+
"threshold": 1
76+
},
77+
"timestamp": {
78+
"keyids": [
79+
"3a05831328273e4b821c3bbe1fed0c5332749d8e071675879af26a401a5c85ae"
80+
],
81+
"threshold": 1
82+
}
83+
},
84+
"spec_version": "1.0.0",
85+
"version": 1
86+
}
87+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "77dfdca206c0fe1b8e55d67d21dd0e195a0998a9d2b56c6d3ee8f68d04c21e93",
5+
"sig": "60a5724ac31af58ece866b723ab121a168b9e93f0033a98dd8449e6550f4d897db0329cdb135fd3a016c8c375e4177c16f1f4d3ada550eb6d06a52b5c84fbb07"
6+
}
7+
],
8+
"signed": {
9+
"_type": "snapshot",
10+
"expires": "2031-09-14T02:30:57Z",
11+
"meta": {
12+
"targets.json": {
13+
"version": 1
14+
}
15+
},
16+
"spec_version": "1.0.0",
17+
"version": 1
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"signatures": [
3+
{
4+
"keyid": "e4dae3872d28d29f7624a702bfd25f68453544d597229ee9e0a8569d1f940cf4",
5+
"sig": "ecb8da4380f992d0d80cbcb78c31c91baf171dad346725fcbf6b1487f52653fc9a2f1ab46a28d32a733a48badbbd316814dcda52cc49cf3bf6fb415403ce7a0a"
6+
}
7+
],
8+
"signed": {
9+
"_type": "targets",
10+
"delegations": {
11+
"keys": {},
12+
"roles": []
13+
},
14+
"expires": "2031-09-14T02:30:57Z",
15+
"spec_version": "1.0.0",
16+
"targets": {},
17+
"version": 1
18+
}
19+
}

0 commit comments

Comments
 (0)