func()

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
}