Files
narco/jwt/signer_test.go

56 lines
1.0 KiB
Go

package jwt
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
)
func NewHMACKey(n int) []byte {
res := make([]byte, n)
rand.Reader.Read(res)
return res
}
func CachedRSAkey() (*rsa.PrivateKey, error) {
keyPath := filepath.Join(os.TempDir(), "narco-jwt-test.key")
f, err := os.Open(keyPath)
if err != nil {
if os.IsNotExist(err) == false {
return nil, err
}
// generate a key
log.Printf("Generating a new key")
key, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
return nil, err
}
f, err := os.Create(keyPath)
if err != nil {
log.Printf("Could not cache the generated key: %s", err)
return key, nil
}
data := x509.MarshalPKCS1PrivateKey(key)
_, err = f.Write(data)
if err != nil {
log.Printf("Could not cache the generated key: %s", err)
}
return key, nil
}
keydata, err := ioutil.ReadAll(f)
if err != nil {
return nil, fmt.Errorf("Could not read %s: %s", keyPath, err)
}
return x509.ParsePKCS1PrivateKey(keydata)
}