fix(pia): load custom PIA certificate for API

This commit is contained in:
Quentin McGaw
2022-06-09 17:11:08 +00:00
parent 899f10c35e
commit 7f32b43895
3 changed files with 49 additions and 5 deletions

View File

@@ -2,6 +2,8 @@ package privateinternetaccess
import (
"crypto/tls"
"crypto/x509/pkix"
"encoding/asn1"
"net/http"
"testing"
@@ -21,11 +23,29 @@ func Test_newHTTPClient(t *testing.T) {
ServerName: serverName,
}
piaClient := newHTTPClient(serverName)
piaClient, err := newHTTPClient(serverName)
require.NoError(t, err)
// Verify pia transport TLS config is set
piaTransport, ok := piaClient.Transport.(*http.Transport)
require.True(t, ok)
subjects := piaTransport.TLSClientConfig.RootCAs.Subjects()
assert.NotEmpty(t, subjects)
piaCertFound := false
for _, subject := range subjects {
var rdnSequence pkix.RDNSequence
_, err := asn1.Unmarshal(subject, &rdnSequence)
require.NoError(t, err)
var name pkix.Name
name.FillFromRDNSequence(&rdnSequence)
if name.CommonName == "Private Internet Access" {
piaCertFound = true
break
}
}
assert.True(t, piaCertFound)
piaTransport.TLSClientConfig.RootCAs = nil
assert.Equal(t, expectedPIATransportTLSConfig, piaTransport.TLSClientConfig)
}