secrets

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package secrets reads database secrets from the human (no-echo prompt) or the OS keychain, and scrubs them from error strings. A secret is a []byte that lives only in console memory; callers Wipe it when done.

Index

Constants

View Source
const KeychainService = "locksql"

KeychainService is the service name of every locksql keychain item. The account is "<profile>@<host>".

View Source
const Redacted = "***"

Redacted replaces every occurrence of a secret in a sanitised string.

Variables

View Source
var (
	// ErrNotFound means the keychain has no item for the profile and host.
	ErrNotFound = errors.New("secrets: no keychain item")
	// ErrUnavailable means the OS keychain could not be used, for example a
	// headless Linux without a Secret Service. The console then behaves as
	// credentials = "ask".
	ErrUnavailable = errors.New("secrets: OS keychain unavailable")
)
View Source
var ErrInterrupted = errors.New("secrets: password prompt interrupted")

ErrInterrupted means the human pressed Ctrl-C at the prompt.

View Source
var ErrNoTerminal = errors.New("secrets: no terminal to prompt for the password")

ErrNoTerminal means there is no controlling terminal to prompt on.

Functions

func KeychainDelete

func KeychainDelete(profile, host string) error

KeychainDelete removes the item of profile@host. A missing item gives ErrNotFound.

func KeychainGet

func KeychainGet(profile, host string) ([]byte, error)

KeychainGet reads the secret of profile@host from the OS keychain.

func KeychainSet

func KeychainSet(profile, host string, s []byte) error

KeychainSet stores s as the secret of profile@host, replacing any previous one.

func PromptPassword

func PromptPassword(prompt string) ([]byte, error)

PromptPassword prints prompt on the controlling terminal and reads a line with echo off. Ctrl-C restores the terminal and returns ErrInterrupted.

func Sanitize

func Sanitize(err error, secrets ...[]byte) string

Sanitize returns err's message with every secret removed. Besides the raw value it removes the forms a driver might print: URL query, path and userinfo escaping, and Go/JSON string quoting. A nil err gives "".

func SanitizeString

func SanitizeString(s string, secrets ...[]byte) string

SanitizeString is Sanitize for a plain string.

func Wipe

func Wipe(b []byte)

Wipe overwrites b with zeros. Go may have copied the bytes elsewhere (string conversions, driver buffers), so this narrows the exposure, it does not end it.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL