grim/josetool

Add the kid if it's set
draft default tip
2017-02-08, Gary Kramlich
4ac5360b9a6a
Add the kid if it's set
package main
import (
"crypto"
"fmt"
"io/ioutil"
"github.com/mendsley/gojwk"
)
func outputPrivate(key crypto.PrivateKey, filename, kid, algorithm, use string) error {
jwkPriv, err := gojwk.PrivateKey(key)
if err != nil {
return err
}
jwkPriv.Kid = kid
jwkPriv.Alg = algorithm
jwkPriv.Use = use
jsonPriv, err := gojwk.Marshal(jwkPriv)
if err != nil {
return err
}
if filename == "-" {
fmt.Printf("----- begin private key -----\n")
fmt.Printf("%s\n", string(jsonPriv[:]))
fmt.Printf("------ end private key ------\n")
return nil
}
return ioutil.WriteFile(filename+".priv", jsonPriv, 0644)
}
func outputPublic(key crypto.PublicKey, filename, kid, algorithm, use string) error {
jwkPub, err := gojwk.PublicKey(key)
if err != nil {
return err
}
jwkPub.Kid = kid
jwkPub.Alg = algorithm
jwkPub.Use = use
jsonPub, err := gojwk.Marshal(jwkPub)
if err != nil {
return err
}
if filename == "-" {
fmt.Printf("----- begin public key -----\n")
fmt.Printf("%s\n", string(jsonPub[:]))
fmt.Printf("------ end public key ------\n")
return nil
}
return ioutil.WriteFile(filename+".pub", jsonPub, 0644)
}
func output(priv crypto.PrivateKey, pub crypto.PublicKey, filename, kid, algorithm, use string) error {
err := outputPrivate(
priv,
filename,
kid,
algorithm,
use,
)
if err != nil {
return err
}
return outputPublic(
pub,
filename,
kid,
algorithm,
use,
)
}