func mustBuildSignedCertificate()

in internal/mock/certs.go [139:177]


func mustBuildSignedCertificate(
	isCa bool,
	subject pkix.Name,
	subjectPublicKey *rsa.PrivateKey,
	issuerCert *x509.Certificate,
	issuerPrivateKey *rsa.PrivateKey,
	notAfter time.Time,
	subjectAlternativeNames []string) *x509.Certificate {

	sn, err := rand.Int(rand.Reader, big.NewInt(1000))
	if err != nil {
		panic(err)
	}

	cert := &x509.Certificate{
		SerialNumber:          sn,
		Subject:               subject,
		SubjectKeyId:          generateSKI(&subjectPublicKey.PublicKey),
		AuthorityKeyId:        generateSKI(&issuerPrivateKey.PublicKey),
		NotBefore:             time.Now(),
		NotAfter:              notAfter,
		IsCA:                  isCa,
		ExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageClientAuth, x509.ExtKeyUsageServerAuth},
		KeyUsage:              x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
		BasicConstraintsValid: true,
		DNSNames:              subjectAlternativeNames,
	}

	certDerBytes, err := x509.CreateCertificate(rand.Reader, cert, issuerCert, &subjectPublicKey.PublicKey, issuerPrivateKey)
	if err != nil {
		panic(err)
	}
	c, err := x509.ParseCertificate(certDerBytes)
	if err != nil {
		panic(err)
	}
	return c

}