grim/josetool
Clone
Summary
Browse
Changes
Graph
Initial revision
draft
2017-02-05, Gary Kramlich
532f694dee0d
Parents
Children
1e3bc8efe596
Initial revision
1 files changed, 53 insertions(+), 0 deletions(-)
+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)
+}