Source is a function that can be passed into crypto/tls.Config.GetClientCertificate.
type Source func(*tls.CertificateRequestInfo) (*tls.Certificate, error)
func DefaultSource() (Source, error)
DefaultSource returns a certificate source using the preferred EnterpriseCertificateProxySource. If EnterpriseCertificateProxySource is not available, fall back to the legacy SecureConnectSource.
If neither source is available (due to missing configurations), a nil Source and a nil Error are returned to indicate that a default certificate source is unavailable.
func NewEnterpriseCertificateProxySource(configFilePath string) (Source, error)
NewEnterpriseCertificateProxySource creates a certificate source using the Enterprise Certificate Proxy client, which delegates certifcate related operations to an OS-specific "signer binary" that communicates with the native keystore (ex. keychain on MacOS).
The configFilePath points to a config file containing relevant parameters such as the certificate issuer and the location of the signer binary. If configFilePath is empty, the client will attempt to load the config from a well-known gcloud location.
func NewSecureConnectSource(configFilePath string) (Source, error)
NewSecureConnectSource creates a certificate source using the Secure Connect Helper and its associated metadata file.
The configFilePath points to the location of the context aware metadata file. If configFilePath is empty, use the default context aware metadata location.