67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(generateCmd)
|
|
generateCmd.Flags().StringVarP(&generateFlagName, "name", "l", "", "specify signet name/label")
|
|
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 (
|
|
generateFlagName string
|
|
generateFlagScheme string
|
|
generateFlagTextOnly bool
|
|
|
|
generateCmd = &cobra.Command{
|
|
Use: "generate",
|
|
Short: "generate a new signet",
|
|
DisableFlagsInUseLine: true,
|
|
Args: cobra.NoArgs,
|
|
PreRunE: requireTrustStore,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
// Generate new signet
|
|
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
|
|
},
|
|
}
|
|
)
|