ziggs/internal/sshui/util.go

35 lines
725 B
Go

package sshui
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
)
// encodePrivateKeyToPEM encodes Private Key from RSA to PEM format
func encodePrivateKeyToPEM(privateKey *rsa.PrivateKey) []byte {
// Get ASN.1 DER format
privDER := x509.MarshalPKCS1PrivateKey(privateKey)
// pem.Block
privBlock := pem.Block{
Type: "RSA PRIVATE KEY",
Headers: map[string]string{"gr33tz": "tcp.direct"},
Bytes: privDER,
}
return pem.EncodeToMemory(&privBlock)
}
func generatePrivateKey() (*rsa.PrivateKey, error) {
privateKey, err := rsa.GenerateKey(rand.Reader, 4096)
if err != nil {
return nil, err
}
if err = privateKey.Validate(); err != nil {
return nil, err
}
return privateKey, nil
}