package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"os"
"path/filepath"
)
func generateRsaKeypair(company string) error {
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
return err
}
privateFile, err := os.Create(filepath.Join("keys", company+".private.pem"))
if err != nil {
return err
}
defer privateFile.Close()
pem.Encode(privateFile, &pem.Block{
Type: "PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(privateKey),
})
publicFile, err := os.Create(filepath.Join("keys", company+".public.pem"))
if err != nil {
return err
}
defer publicFile.Close()
pubBytes, _ := x509.MarshalPKIXPublicKey(&privateKey.PublicKey)
pem.Encode(publicFile, &pem.Block{
Type: "PUBLIC KEY",
Bytes: pubBytes,
})
return nil
}
func main() {
generateRsaKeypair("ZTEST")
}