packer-cn/vendor/github.com/hashicorp/go-rootcerts
Adrien Delorme 9f82b75e57 Use the hashicorp/go-getter to download files
* removed packer.Cache and references since packer.Cache is never used except in the download step. The download step now uses the new func packer.CachePath(targetPath) for this, the behavior is the same.
* removed download code from packer that was reimplemented into the go-getter library: progress bar, http download restart, checksuming from file, skip already downloaded files, symlinking, make a download cancellable by context.
* on windows if packer is running without symlinking rights and we are getting a local file, the file will be copied instead to avoid errors.
* added unit tests for step_download that are now CI tested on windows, mac & linux.
* files are now downloaded under cache dir `sha1(filename + "?checksum=" + checksum) + file_extension`
* since the output dir is based on the source url and the checksum, when the checksum fails, the file is auto deleted.
* a download file is protected and locked by a file lock,
* updated docs
* updated go modules and vendors
2019-03-13 12:11:58 +01:00
..
.travis.yml Use the hashicorp/go-getter to download files 2019-03-13 12:11:58 +01:00
LICENSE Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00
Makefile Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00
README.md Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00
doc.go Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00
rootcerts.go Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00
rootcerts_base.go Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00
rootcerts_darwin.go Update atlas-go to latest version that uses go-rootcerts (#3494) 2016-05-03 16:41:59 -07:00

README.md

rootcerts

Functions for loading root certificates for TLS connections.


Go's standard library crypto/tls provides a common mechanism for configuring TLS connections in tls.Config. The RootCAs field on this struct is a pool of certificates for the client to use as a trust store when verifying server certificates.

This library contains utility functions for loading certificates destined for that field, as well as one other important thing:

When the RootCAs field is nil, the standard library attempts to load the host's root CA set. This behavior is OS-specific, and the Darwin implementation contains a bug that prevents trusted certificates from the System and Login keychains from being loaded. This library contains Darwin-specific behavior that works around that bug.

Example Usage

Here's a snippet demonstrating how this library is meant to be used:

func httpClient() (*http.Client, error)
	tlsConfig := &tls.Config{}
	err := rootcerts.ConfigureTLS(tlsConfig, &rootcerts.Config{
		CAFile: os.Getenv("MYAPP_CAFILE"),
		CAPath: os.Getenv("MYAPP_CAPATH"),
	})
	if err != nil {
		return nil, err
	}
	c := cleanhttp.DefaultClient()
	t := cleanhttp.DefaultTransport()
	t.TLSClientConfig = tlsConfig
	c.Transport = t
	return c, nil
}