Add option to immediately export/backup generated signet
This commit is contained in:
parent
48163a56ce
commit
f91ea4bc19
2 changed files with 67 additions and 26 deletions
|
@ -12,7 +12,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
//nolint:gocognit
|
//nolint:gocognit
|
||||||
func newSignet(name, scheme string) (*jess.Signet, error) {
|
func newSignet(name, scheme string, saveToTrustStore bool) (*jess.Signet, error) {
|
||||||
// get name
|
// get name
|
||||||
name = strings.TrimSpace(name)
|
name = strings.TrimSpace(name)
|
||||||
if name == "" {
|
if name == "" {
|
||||||
|
@ -110,28 +110,30 @@ func newSignet(name, scheme string) (*jess.Signet, error) {
|
||||||
Created: time.Now(),
|
Created: time.Now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
// write signet
|
if saveToTrustStore {
|
||||||
err = trustStore.StoreSignet(signet)
|
// write signet
|
||||||
if err != nil {
|
err = trustStore.StoreSignet(signet)
|
||||||
return nil, err
|
if err != nil {
|
||||||
}
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
// export as recipient
|
// export as recipient
|
||||||
switch scheme {
|
switch scheme {
|
||||||
case jess.SignetSchemePassword, jess.SignetSchemeKey:
|
case jess.SignetSchemePassword, jess.SignetSchemeKey:
|
||||||
// is secret, no recipient
|
// is secret, no recipient
|
||||||
default:
|
default:
|
||||||
rcpt, err := signet.AsRecipient()
|
rcpt, err := signet.AsRecipient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = rcpt.StoreKey()
|
err = rcpt.StoreKey()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = trustStore.StoreSignet(rcpt)
|
err = trustStore.StoreSignet(rcpt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -8,11 +10,13 @@ func init() {
|
||||||
rootCmd.AddCommand(generateCmd)
|
rootCmd.AddCommand(generateCmd)
|
||||||
generateCmd.Flags().StringVarP(&generateFlagName, "name", "l", "", "specify signet name/label")
|
generateCmd.Flags().StringVarP(&generateFlagName, "name", "l", "", "specify signet name/label")
|
||||||
generateCmd.Flags().StringVarP(&generateFlagScheme, "scheme", "t", "", "specify signet scheme/tool")
|
generateCmd.Flags().StringVarP(&generateFlagScheme, "scheme", "t", "", "specify signet scheme/tool")
|
||||||
|
generateCmd.Flags().BoolVarP(&generateFlagTextOnly, "textonly", "", false, "do not save to trust store and only output directly as text")
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
generateFlagName string
|
generateFlagName string
|
||||||
generateFlagScheme string
|
generateFlagScheme string
|
||||||
|
generateFlagTextOnly bool
|
||||||
|
|
||||||
generateCmd = &cobra.Command{
|
generateCmd = &cobra.Command{
|
||||||
Use: "generate",
|
Use: "generate",
|
||||||
|
@ -21,8 +25,43 @@ var (
|
||||||
Args: cobra.NoArgs,
|
Args: cobra.NoArgs,
|
||||||
PreRunE: requireTrustStore,
|
PreRunE: requireTrustStore,
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
_, err := newSignet(generateFlagName, generateFlagScheme)
|
// Generate new signet
|
||||||
return err
|
signet, err := newSignet(generateFlagName, generateFlagScheme, !generateFlagTextOnly)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Output as text if not saved to trust store.
|
||||||
|
if generateFlagTextOnly {
|
||||||
|
// Make text backup.
|
||||||
|
backup, err := signet.Backup(false)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert to recipient and serialize key.
|
||||||
|
rcpt, err := signet.AsRecipient()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = rcpt.StoreKey()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make text export.
|
||||||
|
export, err := rcpt.Export(false)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write output.
|
||||||
|
fmt.Printf("Generated %s key with ID %s and name %q\n", signet.Scheme, signet.ID, signet.Info.Name)
|
||||||
|
fmt.Printf("Backup (private key): %s\n", backup)
|
||||||
|
fmt.Printf("Export (public key): %s\n", export)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue