From 2f43fa66cc1445aa54ced4372c64210bc3719387 Mon Sep 17 00:00:00 2001 From: Ying Li Date: Mon, 9 May 2016 12:02:48 -0700 Subject: [PATCH] Shift the code that saves the roles around to be slightly more clear what roles it's saving and why. Signed-off-by: Ying Li --- tuf/tuf.go | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/tuf/tuf.go b/tuf/tuf.go index 5bb4bb4d78..b6f312f410 100644 --- a/tuf/tuf.go +++ b/tuf/tuf.go @@ -845,22 +845,26 @@ func (tr *Repo) SignRoot(expires time.Time) (*data.Signed, error) { } } - // if the root role has changed and original role had not been saved as a previous role, save it now - if !tr.originalRootRole.Equals(currRoot) && !tr.originalRootRole.Equals(latestSavedRole) { - rolesToSignWith = append(rolesToSignWith, tr.originalRootRole) - latestSavedRole = tr.originalRootRole - - versionName := oldRootVersionName(tempRoot.Signed.Version) - tempRoot.Signed.Roles[versionName] = &data.RootRole{ - KeyIDs: latestSavedRole.ListKeyIDs(), Threshold: latestSavedRole.Threshold} - - } - tempRoot.Signed.Expires = expires tempRoot.Signed.Version++ - // if the root role has changed, save the current role too + // if the root role (root keys or root threshold) has changed, save the + // current role if it hasn't already been saved, as well as saving the + // new root role if !tr.originalRootRole.Equals(currRoot) { + // if the current role has not been saved before, save it now as + // role name "root." + if !tr.originalRootRole.Equals(latestSavedRole) { + rolesToSignWith = append(rolesToSignWith, tr.originalRootRole) + latestSavedRole = tr.originalRootRole + + versionName := oldRootVersionName(tempRoot.Signed.Version - 1) + tempRoot.Signed.Roles[versionName] = &data.RootRole{ + KeyIDs: latestSavedRole.ListKeyIDs(), Threshold: latestSavedRole.Threshold} + } + + // always save the new root as role name "root.", since + // it would not have been saved yet versionName := oldRootVersionName(tempRoot.Signed.Version) tempRoot.Signed.Roles[versionName] = &data.RootRole{ KeyIDs: currRoot.ListKeyIDs(), Threshold: currRoot.Threshold}