func GenerateCertAndKeyAsEncodedPFXData()

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
}