| // Copyright 2023 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Package fallback embeds a set of fallback X.509 trusted roots in the |
| // application by automatically invoking [x509.SetFallbackRoots]. This allows |
| // the application to work correctly even if the operating system does not |
| // provide a verifier or system roots pool. |
| // |
| // To use it, import the package like |
| // |
| // import _ "golang.org/x/crypto/x509roots/fallback" |
| // |
| // It's recommended that only binaries, and not libraries, import this package. |
| // |
| // This package must be kept up to date for security and compatibility reasons. |
| // Use govulncheck to be notified of when new versions of the package are |
| // available. |
| package fallback |
| |
| import "crypto/x509" |
| |
| func init() { |
| p := x509.NewCertPool() |
| for _, c := range parsedCertificates { |
| if len(c.constraints) == 0 { |
| p.AddCert(c.cert) |
| } else { |
| p.AddCertWithConstraint(c.cert, func(chain []*x509.Certificate) error { |
| for _, constraint := range c.constraints { |
| if err := constraint(chain); err != nil { |
| return err |
| } |
| } |
| return nil |
| }) |
| } |
| } |
| x509.SetFallbackRoots(p) |
| } |