package testdata import ( "crypto/tls" "crypto/x509" "encoding/pem" "io/ioutil" "path" "runtime" ) var certPath string func init() { _, filename, _, ok := runtime.Caller(0) if !ok { panic("Failed to get current frame") } certPath = path.Dir(filename) } // GetCertificatePaths returns the paths to certificate and key func GetCertificatePaths() (string, string) { return path.Join(certPath, "cert.pem"), path.Join(certPath, "priv.key") } // GetTLSConfig returns a tls config for quic.clemente.io func GetTLSConfig() *tls.Config { cert, err := tls.LoadX509KeyPair(GetCertificatePaths()) if err != nil { panic(err) } return &tls.Config{ Certificates: []tls.Certificate{cert}, } } // GetRootCA returns an x509.CertPool containing the CA certificate func GetRootCA() *x509.CertPool { caCertPath := path.Join(certPath, "ca.pem") caCertRaw, err := ioutil.ReadFile(caCertPath) if err != nil { panic(err) } p, _ := pem.Decode(caCertRaw) if p.Type != "CERTIFICATE" { panic("expected a certificate") } caCert, err := x509.ParseCertificate(p.Bytes) if err != nil { panic(err) } certPool := x509.NewCertPool() certPool.AddCert(caCert) return certPool }