Keychain access using golang
go get github.com/rdaniels6813/go-chains
Creating the keychain interface object
import (
"fmt"
"github.com/rdaniels6813/go-chains"
)
func main() {
keychain, err := chains.NewKeyChain()
if err != nil {
fmt.Printf("An error occurred creating the keychain wrapper: %s", err)
}
}
Getting a password
password, err := keychain.Get("account-name", "username")
Setting a password
err := keychain.Set("account-name", "username", "super-secret-password")
Deleting a password
err := keychain.Delete("account-name", "username")
Using the cgo, and code written in c. Those parts are abstracted behind a golang API and separate OS-dependent implementations are used to make the calls to the keychain.
apt-get install libsecret-1-dev
to build an app using this libraryNOTE: There may be further OS support for other versions of macOS, Windows, and Linux but I have verified the three above are working.
LINUX NOTE: Other variations of linux may work as well, but I have not tested them. Any linux OS with libsecret installed should work though.