Skip to content

Commit

Permalink
"Add option to input private key for x25519 command"
Browse files Browse the repository at this point in the history
Added a command line flag to allow the user to provide an input for the private key while utilizing the x25519 command. The function `x25519` was also modified to account for the possibility of a user-inputted private key. If no private key is provided, random bytes will be generated for the private key as before. This feature provides flexibility for the user in key management.
  • Loading branch information
Septrum101 committed Oct 14, 2023
1 parent b1bfd04 commit fd0a23b
Showing 1 changed file with 20 additions and 6 deletions.
26 changes: 20 additions & 6 deletions cmd/x25519.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,37 @@ import (
"golang.org/x/crypto/curve25519"
)

func init() {
rootCmd.AddCommand(&cobra.Command{
var (
priKey string
x25519Cmd = &cobra.Command{
Use: "x25519",
Short: "Generate key pair for x25519 key exchange",
Run: func(cmd *cobra.Command, args []string) {
if err := x25519(); err != nil {
fmt.Println(err)
}
},
})
}
)

func init() {
x25519Cmd.PersistentFlags().StringVarP(&priKey, "input", "i", "", "Input private key (base64.RawURLEncoding)")
rootCmd.AddCommand(x25519Cmd)
}

func x25519() error {
var publicKey []byte
privateKey := make([]byte, curve25519.ScalarSize)
if _, err := rand.Read(privateKey); err != nil {
return err

if priKey == "" {
if _, err := rand.Read(privateKey); err != nil {
return err
}
} else {
p, err := base64.RawURLEncoding.DecodeString(priKey)
if err != nil {
return err
}
privateKey = p
}

// Modify random bytes using algorithm described at:
Expand Down

1 comment on commit fd0a23b

@Septrum101
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.