in client/internal/testutil/certs.go [41:69]
func GenerateCertAndKeyAsEncodedPFXData(template CertTemplate) (string, error) {
x509Template := template.getX509Template()
x509Template.SerialNumber = big.NewInt(1)
x509Template.NotBefore = time.Now()
x509Template.KeyUsage = x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature
x509Template.BasicConstraintsValid = true
privateKey, err := rsa.GenerateKey(cryptorand.Reader, 1024)
if err != nil {
return "", err
}
certBytes, err := x509.CreateCertificate(cryptorand.Reader, &x509Template, &x509Template, &privateKey.PublicKey, privateKey)
if err != nil {
return "", err
}
cert, err := x509.ParseCertificate(certBytes)
if err != nil {
return "", err
}
pfxBytes, err := pkcs12.Legacy.Encode(privateKey, cert, []*x509.Certificate{}, "")
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(pfxBytes), nil
}