forked from keybase/client
/
proxyca.go
37 lines (33 loc) · 806 Bytes
/
proxyca.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Copyright 2015 Keybase, Inc. All rights reserved. Use of
// this source code is governed by the included BSD license.
package libkb
import (
"crypto/x509"
"io/ioutil"
)
func addCert(out *x509.CertPool, fn string) (ret *x509.CertPool, err error) {
var data []byte
ret = nil
if ret == nil {
ret = x509.NewCertPool()
}
if data, err = ioutil.ReadFile(fn); err != nil {
err = ConfigError{fn, err.Error()}
} else if !ret.AppendCertsFromPEM(data) {
err = ConfigError{fn, "Bad CA Cert file; failed to parse"}
}
return
}
func GetProxyCAs(out *x509.CertPool, r ConfigReader) (ret *x509.CertPool, err error) {
ret = out
var v []string
if v, err = r.GetProxyCACerts(); err != nil {
return
}
for _, fn := range v {
if ret, err = addCert(ret, fn); err != nil {
return
}
}
return
}