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 }