Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/99designs/keyring
Go library providing a uniform interface across a range of secure credential stores
https://github.com/99designs/keyring
Last synced: about 2 months ago
JSON representation
Go library providing a uniform interface across a range of secure credential stores
- Host: GitHub
- URL: https://github.com/99designs/keyring
- Owner: 99designs
- License: mit
- Created: 2017-08-14T03:17:15.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-07T14:55:29.000Z (8 months ago)
- Last Synced: 2024-08-01T19:34:55.301Z (5 months ago)
- Language: Go
- Homepage:
- Size: 375 KB
- Stars: 552
- Watchers: 54
- Forks: 130
- Open Issues: 42
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Keyring
=======
[![Build Status](https://github.com/99designs/keyring/workflows/Continuous%20Integration/badge.svg)](https://github.com/99designs/keyring/actions)
[![Documentation](https://godoc.org/github.com/99designs/keyring?status.svg)](https://godoc.org/github.com/99designs/keyring)Keyring provides a common interface to a range of secure credential storage services. Originally developed as part of [AWS Vault](https://github.com/99designs/aws-vault), a command line tool for securely managing AWS access from developer workstations.
Currently Keyring supports the following backends
* [macOS Keychain](https://support.apple.com/en-au/guide/keychain-access/welcome/mac)
* [Windows Credential Manager](https://support.microsoft.com/en-au/help/4026814/windows-accessing-credential-manager)
* Secret Service ([Gnome Keyring](https://wiki.gnome.org/Projects/GnomeKeyring), [KWallet](https://kde.org/applications/system/org.kde.kwalletmanager5))
* [KWallet](https://kde.org/applications/system/org.kde.kwalletmanager5)
* [Pass](https://www.passwordstore.org/)
* [Encrypted file (JWT)](https://datatracker.ietf.org/doc/html/rfc7519)
* [KeyCtl](https://linux.die.net/man/1/keyctl)## Usage
The short version of how to use keyring is shown below.
```go
ring, _ := keyring.Open(keyring.Config{
ServiceName: "example",
})_ = ring.Set(keyring.Item{
Key: "foo",
Data: []byte("secret-bar"),
})i, _ := ring.Get("foo")
fmt.Printf("%s", i.Data)
```For more detail on the API please check [the keyring godocs](https://godoc.org/github.com/99designs/keyring)
## Testing
[Vagrant](https://www.vagrantup.com/) is used to create linux and windows test environments.
```bash
# Start vagrant
vagrant up# Run go tests on all platforms
./bin/go-test
```## Contributing
Contributions to the keyring package are most welcome from engineers of all backgrounds and skill levels. In particular the addition of extra backends across popular operating systems would be appreciated.
This project will adhere to the [Go Community Code of Conduct](https://golang.org/conduct) in the github provided discussion spaces, with the moderators being the 99designs engineering team.
To make a contribution:
* Fork the repository
* Make your changes on the fork
* Submit a pull request back to this repo with a clear description of the problem you're solving
* Ensure your PR passes all current (and new) tests
* Ideally verify that [aws-vault](https://github.com/99designs/aws-vault) works with your changes (optional)...and we'll do our best to get your work merged in