Skip to content

Commit

Permalink
Add option to immediately export/backup generated signet
Browse files Browse the repository at this point in the history
dhaavi committed Aug 8, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 48163a5 commit f91ea4b
Showing 2 changed files with 65 additions and 24 deletions.
42 changes: 22 additions & 20 deletions cmd/cfg-signet.go
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ import (
)

//nolint:gocognit
func newSignet(name, scheme string) (*jess.Signet, error) {
func newSignet(name, scheme string, saveToTrustStore bool) (*jess.Signet, error) {
// get name
name = strings.TrimSpace(name)
if name == "" {
@@ -110,28 +110,30 @@ func newSignet(name, scheme string) (*jess.Signet, error) {
Created: time.Now(),
}

// write signet
err = trustStore.StoreSignet(signet)
if err != nil {
return nil, err
}

// export as recipient
switch scheme {
case jess.SignetSchemePassword, jess.SignetSchemeKey:
// is secret, no recipient
default:
rcpt, err := signet.AsRecipient()
if saveToTrustStore {
// write signet
err = trustStore.StoreSignet(signet)
if err != nil {
return nil, err
}
err = rcpt.StoreKey()
if err != nil {
return nil, err
}
err = trustStore.StoreSignet(rcpt)
if err != nil {
return nil, err

// export as recipient
switch scheme {
case jess.SignetSchemePassword, jess.SignetSchemeKey:
// is secret, no recipient
default:
rcpt, err := signet.AsRecipient()
if err != nil {
return nil, err
}
err = rcpt.StoreKey()
if err != nil {
return nil, err
}
err = trustStore.StoreSignet(rcpt)
if err != nil {
return nil, err
}
}
}

47 changes: 43 additions & 4 deletions cmd/cmd-generate.go
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
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
generateFlagName string
generateFlagScheme string
generateFlagTextOnly bool

generateCmd = &cobra.Command{
Use: "generate",
@@ -21,8 +25,43 @@ var (
Args: cobra.NoArgs,
PreRunE: requireTrustStore,
RunE: func(cmd *cobra.Command, args []string) error {
_, err := newSignet(generateFlagName, generateFlagScheme)
return err
// 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
},
}
)

0 comments on commit f91ea4b

Please sign in to comment.