in internal/mock/alloydb.go [221:254]
func (f *FakeAlloyDBInstance) GeneratePEMCertificateChain(
pub *rsa.PublicKey,
) ([]string, error) {
template := &x509.Certificate{
PublicKey: pub,
SerialNumber: &big.Int{},
Issuer: f.intermedCert.Subject,
NotBefore: time.Now(),
NotAfter: f.certExpiry,
KeyUsage: x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth},
}
cert, err := x509.CreateCertificate(
rand.Reader, template, f.intermedCert,
template.PublicKey, f.intermedKey,
)
if err != nil {
return nil, err
}
certPEM := &bytes.Buffer{}
pem.Encode(certPEM, &pem.Block{Type: "CERTIFICATE", Bytes: cert})
instancePEM := &bytes.Buffer{}
pem.Encode(
instancePEM, &pem.Block{Type: "CERTIFICATE", Bytes: f.intermedCert.Raw},
)
caPEM := &bytes.Buffer{}
pem.Encode(caPEM, &pem.Block{Type: "CERTIFICATE", Bytes: f.rootCACert.Raw})
return []string{certPEM.String(), instancePEM.String(), caPEM.String()}, nil
}