github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/pkg/cmd/keys_import.go (about) 1 package cmd 2 3 import ( 4 "os" 5 6 "github.com/spf13/cobra" 7 8 "github.com/kubri/kubri/pkg/crypto/dsa" 9 "github.com/kubri/kubri/pkg/crypto/ed25519" 10 "github.com/kubri/kubri/pkg/crypto/pgp" 11 "github.com/kubri/kubri/pkg/crypto/rsa" 12 "github.com/kubri/kubri/pkg/secret" 13 ) 14 15 func keysImportCmd() *cobra.Command { 16 var force bool 17 18 cmd := &cobra.Command{ 19 Use: "import (dsa|ed25519|pgp|rsa) <path>", 20 Short: "Import private keys", 21 Long: "Import private keys for signing update packages. If keys already exist, this is a no-op.", 22 Aliases: []string{"i"}, 23 Args: cobra.ExactArgs(2), 24 ValidArgs: []string{"dsa", "ed25519", "pgp", "rsa"}, 25 RunE: func(_ *cobra.Command, args []string) error { 26 b, err := os.ReadFile(args[1]) 27 if err != nil { 28 return err 29 } 30 31 switch args[0] { 32 case "dsa": 33 _, err = dsa.UnmarshalPrivateKey(b) 34 case "ed25519": 35 _, err = ed25519.UnmarshalPrivateKey(b) 36 case "pgp": 37 _, err = pgp.UnmarshalPrivateKey(b) 38 case "rsa": 39 _, err = rsa.UnmarshalPrivateKey(b) 40 } 41 if err != nil { 42 return err 43 } 44 45 key := args[0] + "_key" 46 47 if force { 48 _ = secret.Delete(key) 49 } 50 51 return secret.Put(key, b) 52 }, 53 } 54 55 cmd.Flags().BoolVarP(&force, "force", "f", false, "overwrite existing key") 56 57 return cmd 58 }