diff --git a/remove_key.go b/remove_key.go new file mode 100644 index 00000000..a65e4f51 --- /dev/null +++ b/remove_key.go @@ -0,0 +1,40 @@ +package main + +import ( + "os" + "path/filepath" + + "github.com/flynn/go-docopt" + "github.com/theupdateframework/go-tuf" + + +) +func init() { + register("remove-key", cmdRemoveKey, ` +usage: tuf remove-key [--expires=] + +Remove a signing key + +Before the key is removed the key will be first revoked +The key will then be removed from the root metadata file and if the key is present in +"keys" directory it will also be removed + +Options: + --expires= Set the root metadata file to expire days from now. +`) +} + +func cmdRemoveKey(args *docopt.Args, repo *tuf.Repo) error { + role := args.String[""] + keyID := args.String[""] + if err := repo.RevokeKey(role, keyID); err != nil{ + return err + } + keyPath := filepath.Join("keys", keyID) + if _ , err := os.Stat(keyPath); err==nil{ + if err := os.Remove(keyPath); err != nil{ + return err + } + } + return nil +}