50 lines
992 B
Go
50 lines
992 B
Go
package main
|
|
|
|
import (
|
|
"crypto/x509"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
func (cp *CertPool) Decode(value string) error {
|
|
*cp = CertPool{x509.NewCertPool()}
|
|
caPEM, err := ioutil.ReadFile(value)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to open CA file: %w", err)
|
|
}
|
|
ok := cp.AppendCertsFromPEM(caPEM)
|
|
if !ok {
|
|
return fmt.Errorf("unable to parse CA")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (cl *CertList) Decode(value string) error {
|
|
crlData, err := ioutil.ReadFile(value)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to open CRL file: %w", err)
|
|
}
|
|
crl, err := x509.ParseCRL(crlData)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to parse CRL file: %w", err)
|
|
}
|
|
*cl = CertList{crl}
|
|
return nil
|
|
}
|
|
|
|
func (t *Targets) Decode(value string) error {
|
|
splitted := strings.Split(value, ",")
|
|
*t = Targets{
|
|
targets: make([]*url.URL, len(splitted)),
|
|
}
|
|
for i, urlString := range splitted {
|
|
u, err := url.Parse(urlString)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
t.targets[i] = u
|
|
}
|
|
return nil
|
|
}
|