mirror of
https://github.com/GlueOps/autoglue.git
synced 2026-02-13 04:40:05 +01:00
82 lines
1.8 KiB
Go
82 lines
1.8 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/glueops/autoglue/internal/app"
|
|
"github.com/glueops/autoglue/internal/keys"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var (
|
|
alg string
|
|
rsaBits int
|
|
kidFlag string
|
|
nbfStr string
|
|
expStr string
|
|
)
|
|
|
|
var keysCmd = &cobra.Command{
|
|
Use: "keys",
|
|
Short: "Manage JWT signing keys",
|
|
}
|
|
|
|
var keysGenCmd = &cobra.Command{
|
|
Use: "generate",
|
|
Short: "Generate and store a new signing key",
|
|
RunE: func(_ *cobra.Command, _ []string) error {
|
|
rt := app.NewRuntime()
|
|
|
|
var nbfPtr, expPtr *time.Time
|
|
if nbfStr != "" {
|
|
t, err := time.Parse(time.RFC3339, nbfStr)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
nbfPtr = &t
|
|
}
|
|
if expStr != "" {
|
|
t, err := time.Parse(time.RFC3339, expStr)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
expPtr = &t
|
|
}
|
|
|
|
rec, err := keys.GenerateAndStore(rt.DB, rt.Cfg.JWTPrivateEncKey, keys.GenOpts{
|
|
Alg: alg,
|
|
Bits: rsaBits,
|
|
KID: kidFlag,
|
|
NBF: nbfPtr,
|
|
EXP: expPtr,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Printf("created signing key\n")
|
|
fmt.Printf(" kid: %s\n", rec.Kid)
|
|
fmt.Printf(" alg: %s\n", rec.Alg)
|
|
fmt.Printf(" active: %v\n", rec.IsActive)
|
|
if rec.NotBefore != nil {
|
|
fmt.Printf(" nbf: %s\n", rec.NotBefore.Format(time.RFC3339))
|
|
}
|
|
if rec.ExpiresAt != nil {
|
|
fmt.Printf(" exp: %s\n", rec.ExpiresAt.Format(time.RFC3339))
|
|
}
|
|
return nil
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(keysCmd)
|
|
keysCmd.AddCommand(keysGenCmd)
|
|
|
|
keysGenCmd.Flags().StringVarP(&alg, "alg", "a", "EdDSA", "Signing alg: EdDSA|RS256|RS384|RS512")
|
|
keysGenCmd.Flags().IntVarP(&rsaBits, "bits", "b", 3072, "RSA key size (when alg is RS*)")
|
|
keysGenCmd.Flags().StringVarP(&kidFlag, "kid", "k", "", "Key ID (optional; auto if empty)")
|
|
keysGenCmd.Flags().StringVarP(&nbfStr, "nbf", "n", "", "Not Before (RFC3339)")
|
|
keysGenCmd.Flags().StringVarP(&expStr, "exp", "e", "", "Expires At (RFC3339)")
|
|
}
|