BSD Ports

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

DateCommitCreditsLog message
309977eb40 bsiegert Revbump all Go packages after go127 security update
96dc94755d bsiegert Revbump all Go packages after go127 security update
866d2b73e9 bsiegert Revbump all Go packages after go127 update
2338e838cd bsiegert Revbump all Go packages after go127 became the default
a4724da6b2 bsiegert Revbump all Go packages after go126 update

The latest 5 of 7 in the history this site was built from.