boulder/test/integration/subordinate_ca_chains_test.go

47 lines
1.5 KiB
Go

//go:build integration
package integration
import (
"crypto/ecdsa"
"crypto/elliptic"
"crypto/rand"
"strings"
"testing"
"github.com/eggsampler/acme/v3"
"github.com/letsencrypt/boulder/test"
)
func TestSubordinateCAChainsServedByWFE(t *testing.T) {
t.Parallel()
client, err := makeClient("mailto:example@letsencrypt.org")
test.AssertNotError(t, err, "creating acme client")
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
test.AssertNotError(t, err, "creating random cert key")
chains, err := authAndIssueFetchAllChains(client, key, []acme.Identifier{{Type: "dns", Value: random_domain()}}, true)
test.AssertNotError(t, err, "failed to issue test cert")
// An ECDSA intermediate signed by an ECDSA root, and an ECDSA cross-signed by an RSA root.
test.AssertEquals(t, len(chains.certs), 2)
seenECDSAIntermediate := false
seenECDSACrossSignedIntermediate := false
for _, certUrl := range chains.certs {
for _, cert := range certUrl {
if strings.Contains(cert.Subject.CommonName, "int ecdsa") && cert.Issuer.CommonName == "root ecdsa" {
seenECDSAIntermediate = true
}
if strings.Contains(cert.Subject.CommonName, "int ecdsa") && cert.Issuer.CommonName == "root rsa" {
seenECDSACrossSignedIntermediate = true
}
}
}
test.Assert(t, seenECDSAIntermediate, "did not see ECDSA intermediate and should have")
test.Assert(t, seenECDSACrossSignedIntermediate, "did not see ECDSA by RSA cross-signed intermediate and should have")
}