From 3b243ed1ddbbfe54b565b5f2bb279e23384b9325 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 25 Nov 2014 23:23:09 +0100 Subject: [PATCH] Add command "key change" to change repository password --- cmd/khepri/cmd_key.go | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/cmd/khepri/cmd_key.go b/cmd/khepri/cmd_key.go index 6e8552f99..3ce2c6e78 100644 --- a/cmd/khepri/cmd_key.go +++ b/cmd/khepri/cmd_key.go @@ -41,7 +41,7 @@ func add_key(be backend.Server, key *khepri.Key) error { pw2 := readPassword("KHEPRI_NEWPASSWORD", "enter password again: ") if pw != pw2 { - errx(1, "passwords do not match") + return errors.New("passwords do not match") } id, err := key.AddKey(be, pw) @@ -68,9 +68,34 @@ func delete_key(be backend.Server, key *khepri.Key, id backend.ID) error { return nil } +func change_password(be backend.Server, key *khepri.Key) error { + pw := readPassword("KHEPRI_NEWPASSWORD", "enter password for new key: ") + pw2 := readPassword("KHEPRI_NEWPASSWORD", "enter password again: ") + + if pw != pw2 { + return errors.New("passwords do not match") + } + + // add new key + id, err := key.AddKey(be, pw) + if err != nil { + return fmt.Errorf("creating new key failed: %v\n", err) + } + + // remove old key + err = be.Remove(backend.Key, key.ID()) + if err != nil { + return err + } + + fmt.Printf("saved new key as %s\n", id) + + return nil +} + func commandKey(be backend.Server, key *khepri.Key, args []string) error { if len(args) < 1 || (args[0] == "rm" && len(args) != 2) { - return errors.New("usage: key [list|add|rm] [ID]") + return errors.New("usage: key [list|add|rm|change] [ID]") } switch args[0] { @@ -85,6 +110,8 @@ func commandKey(be backend.Server, key *khepri.Key, args []string) error { } return delete_key(be, key, id) + case "change": + return change_password(be, key) } return nil