grim/josetool

Initial revision
draft
2017-02-05, Gary Kramlich
532f694dee0d
Parents
Children 1e3bc8efe596
Initial revision
  • +53 -0
    main.go
  • --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/main.go Sun Feb 05 02:49:14 2017 -0600
    @@ -0,0 +1,53 @@
    +package main
    +
    +import (
    + "crypto"
    + "crypto/rand"
    + "crypto/rsa"
    + "fmt"
    + "os"
    +
    + "github.com/alecthomas/kingpin"
    + "github.com/mendsley/gojwk"
    +)
    +
    +var (
    + app = kingpin.New("jwkgen", "generates jwk's")
    +
    + kid = app.Flag("key-id", "the key id to use").Short('i').String()
    + algorithm = app.Flag("algorithm", "the alogirthm to use").Short('a').Default("256").Enum("256", "384", "512")
    +
    + rsaCmd = app.Command("rsa", "generate an rsa key")
    + rsaBits = rsaCmd.Arg("bits", "the number of bits for the key").Default("2048").Int()
    +
    + ecdsa = app.Command("ecdsa", "generate an ecdsa key")
    +)
    +
    +func genRSA(bits int) (crypto.PrivateKey, error) {
    + return rsa.GenerateKey(rand.Reader, bits)
    +}
    +
    +func main() {
    + var (
    + privKey crypto.PrivateKey
    + err error
    + )
    +
    + switch kingpin.MustParse(app.Parse(os.Args[1:])) {
    + case rsaCmd.FullCommand():
    + privKey, err = genRSA(*rsaBits)
    + case ecdsa.FullCommand():
    + fmt.Printf("ecdsa\n")
    + }
    +
    + if err != nil {
    + fmt.Printf("error: %s\n", err)
    + os.Exit(1)
    + }
    +
    + jwkPriv, err := jwk.PrivateKey(privKey)
    + if err != nil {
    + fmt.Printf("error: %s\n", err)
    + }
    + fmt.Printf("%#v\n", jwkPriv)
    +}