package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/pem" "fmt" "os" ) func main() { // Generate Key privateKey, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { panic(err) } // Validate Key if err := privateKey.Validate(); err != nil { panic(err) } // Dump Private Key privDER := x509.MarshalPKCS1PrivateKey(privateKey) privBlock := pem.Block{ Type: "RSA PRIVATE KEY", Bytes: privDER, } privPEM := pem.EncodeToMemory(&privBlock) privBase64 := base64.StdEncoding.EncodeToString(privPEM) // Dump Public Key pubDER, err := x509.MarshalPKIXPublicKey(&privateKey.PublicKey) if err != nil { panic(err) } pubBlock := pem.Block{ Type: "PUBLIC KEY", Bytes: pubDER, } pubPEM := pem.EncodeToMemory(&pubBlock) pubBase64 := base64.StdEncoding.EncodeToString(pubPEM) // Append to .env f, err := os.OpenFile(".env", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644) if err != nil { panic(err) } defer f.Close() if _, err := f.WriteString(fmt.Sprintf("\nRSA_PRIVATE_KEY_BASE64=%s\n", privBase64)); err != nil { panic(err) } if _, err := f.WriteString(fmt.Sprintf("RSA_PUBLIC_KEY_BASE64=%s\n", pubBase64)); err != nil { panic(err) } fmt.Println("✅ Keys appended to .env successfully") }