in client/internal/testutil/certs.go [71:103]
func GenerateCertPEM(template CertTemplate) (certPEM []byte, keyPEM []byte, err error) {
x509Template := template.getX509Template()
x509Template.SerialNumber = big.NewInt(1)
x509Template.NotBefore = time.Now()
x509Template.KeyUsage = x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature
x509Template.ExtKeyUsage = []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}
x509Template.BasicConstraintsValid = true
privateKey, err := ecdsa.GenerateKey(elliptic.P256(), cryptorand.Reader)
if err != nil {
return nil, nil, err
}
certBytes, err := x509.CreateCertificate(rand.Reader, &x509Template, &x509Template, &privateKey.PublicKey, privateKey)
if err != nil {
return nil, nil, err
}
certPEM = pem.EncodeToMemory(&pem.Block{
Type: "CERTIFICATE",
Bytes: certBytes,
})
keyDER, err := x509.MarshalECPrivateKey(privateKey)
if err != nil {
return nil, nil, err
}
keyPEM = pem.EncodeToMemory(&pem.Block{
Type: "EC PRIVATE KEY",
Bytes: keyDER,
})
return certPEM, keyPEM, nil
}