mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-12-23 02:26:49 -05:00
58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
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
|
|
}
|