// SecretRingFile returns the filename to the user's GPG secret ring. // The value comes from either the --secret-keyring flag, the // CAMLI_SECRET_RING environment variable, the client config file's // "identitySecretRing" value, or the operating system default location. func (c *Client) SecretRingFile() string { if secretRing, ok := osutil.ExplicitSecretRingFile(); ok { return secretRing } if android.OnAndroid() { panic("on android, so CAMLI_SECRET_RING should have been defined, or --secret-keyring used.") } configOnce.Do(parseConfig) if config.IdentitySecretRing == "" { return osutil.SecretRingFile() } return config.IdentitySecretRing }
// initSecretRing sets c.secretRing. It tries, in this order, the --secret-keyring flag, // the CAMLI_SECRET_RING env var, then defaults to the operating system dependent location // otherwise. // It returns an error if the file does not exist. func (c *initCmd) initSecretRing() error { if secretRing, ok := osutil.ExplicitSecretRingFile(); ok { c.secretRing = secretRing } else { if android.OnAndroid() { panic("on android, so CAMLI_SECRET_RING should have been defined, or --secret-keyring used.") } c.secretRing = osutil.SecretRingFile() } if _, err := os.Stat(c.secretRing); err != nil { hint := "\nA GPG key is required, please use 'camput init --newkey'.\n\nOr if you know what you're doing, you can set the global camput flag --secret-keyring, or the CAMLI_SECRET_RING env var, to use your own GPG ring. And --gpgkey=<pubid> or GPGKEY to select which key ID to use." return fmt.Errorf("Could not use secret ring file %v: %v.\n%v", c.secretRing, err, hint) } return nil }
// SecretRingFile returns the filename to the user's GPG secret ring. // The value comes from either the --secret-keyring flag, the // CAMLI_SECRET_RING environment variable, the client config file's // "identitySecretRing" value, or the operating system default location. func (c *Client) SecretRingFile() string { if secretRing, ok := osutil.ExplicitSecretRingFile(); ok { return secretRing } if android.OnAndroid() { panic("on android, so CAMLI_SECRET_RING should have been defined, or --secret-keyring used.") } if c.paramsOnly { log.Print("client: paramsOnly set; cannot get secret ring file from config or env vars.") return "" } if configDisabled { panic("Need a secret ring, and config file disabled") } configOnce.Do(parseConfig) if config.IdentitySecretRing == "" { return osutil.SecretRingFile() } return config.IdentitySecretRing }