security/go-getpass 0.2.3nb33 NetBSD
a Go module to get a password
- System
- NetBSD
- Repository
- pkgsrc
- Maintainer
- [email protected]
- Last update
- Commit
309977eb40- License
- mit
- Categories
- security
- Package size
- 1749.8 KiB, 3391.2 KiB installed
Description
The `getpass` module provides a simple way to retrieve a password from the user by specifying a number of different password sources:
func Getpass(passfrom string) (pass string, err error)
Getpass retrieves a password from the user using a method defined by the `passfrom` string. The following methods are supported:
`cmd:command` -- Obtain the password by running the given command. The command will be passed to the shell for execution via `/bin/sh -c 'command'`.
`env:var` -- Obtain the password from the environment variable var. Since the environment of other processes may be visible via e.g. `ps(1)`, this option should be used with caution.
`file:pathname` -- The first line of `pathname` is the password. `pathname` need not refer to a regular file: it could for example refer to a device or named pipe. `pathname` undergoes standard "~" and environment variable expansion. Note that standard Unix file access controls should be used to protect this file.
`keychain:name` -- Use the `security(1)` utility to retrieve the password from the macOS keychain.
`lpass:name` -- Use the LastPass command-line client `lpass(1)` to retrieve the named password. You should previously have run `lpass login` for this to work.
`op:name` -- Use the 1Password command-line client `op(1)` to retrieve the named password.
`pass:password` -- The actual password is password. Since the password is visible to utilities such as `ps(1)` and possibly leaked into the shell history file, this form should only be used where security is not important.
`tty[:prompt]` -- This is the default: `Getpass` will prompt the user on the controlling tty using the provided `prompt`. If no `prompt` is provided, then `Getpass` will use "Password: ".
## Examples
``` package main
import ( "flag" "fmt" "log"
"github.com/jschauma/getpass"
)
func main() {
var pass string
flag.StringVar(&pass, "p", "tty", "password method")
flag.Parse()
// Try out any of the options:
p, err := getpass.Getpass(pass)
if err != nil {
log.Fatal("Unable to get password from user: ", err)
} else {
fmt.Printf("%s\\n", p)
}
// Alternatively:
// This will prompt the user to enter a password interactively,
// using the default prompt.
p, err = getpass.Getpass()
if err != nil {
log.Fatal("Unable to get password from user: ", err)
} else {
fmt.Printf("%s\\n", p)
}
// Using a custom prompt:
p, err = getpass.Getpass("tty:Please enter your secret passphrase: ")
if err != nil {
log.Fatal("Unable to get password from user: ", err)
} else {
fmt.Printf("%s\\n", p)
}
// Using an environment variable:
p, err = getpass.Getpass("env:MYSECRET")
if err != nil {
log.Fatal("Unable to get password from user: ", err)
} else {
fmt.Printf("%s\\n", p)
}
// Using a file:
p, err = getpass.Getpass("file:~/.secret")
if err != nil {
log.Fatal("Unable to get password from user: ", err)
} else {
fmt.Printf("%s\\n", p)
}
// etc. etc.
} ```
See also: * https://www.netmeister.org/blog/passing-passwords.html * https://www.netmeister.org/blog/consistent-tools.html#passwords
Install
Binary package:
pkgin install go-getpass
From pkgsrc:
cd /usr/pkgsrc/security/go-getpass && make install clean
Dependencies
No port depends on this one.
Commit history 7
The latest 5 of 7 in the history this site was built from.