A cross-platorm library and utility to manage passwords.
Very basic autogenerated docs. (Only linux docs are available at this time, cross-platform autogenerated docs are not a thing yet)
Please read this readme for the explanation of how to use this library.
Currently supports Linux, macOS, and Windows. Please file issues if you have any problems or bugs!
To use this library in your project add the following to your Cargo.toml
file:
Rust
[dependencies]
keyring = "0.6.1"
This will give you access to the keyring
crate in your code. Now you can use
the new
function to get an instance of the Keyring
struct. The new
function expects a service
name and an username
with which it accesses
the password.
You can get a password from the OS keyring with the get_password
function.
```Rust extern crate keyring;
use std::error::Error;
fn main() -> Result<(), Box
let keyring = keyring::Keyring::new(&service, &username)
let password = keyring.get_password()?; println!("The password is '{}'", password); } ```
Passwords can also be added to the keyring using the set_password
function.
```Rust extern crate keyring;
use std::error::Error;
fn main() -> Result<(), Box
let keyring = keyring::Keyring::new(&service, &username)
let password = "topS3cr3tP4$$w0rd"; keyring.set_password(&password).unwrap();
let password = keyring.get_password()?; println!("The password is '{}'", password); } ```
And they can be deleted with the delete_password
function.
```Rust extern crate keyring;
use std::error::Error;
fn main() -> Result<(), Box
let keyring = keyring::Keyring::new(&service, &username)
keyring.delete_password()?;
println!("The password has been deleted"); } ```
The get_password
, set_password
and delete_password
functions return a
Result
which, if the operation was unsuccessful, can yield a KeyringError
.
The KeyringError
struct implements the error::Error
and fmt::Display
traits, so it can be queried for a cause and an description using methods of
the same name.
rust-keyring
.RUST_TEST_THREADS=1 cargo test
Licensed under either of
at your option.
Thanks to the following for helping make this library better, whether through contributing code, discussion, or bug reports!
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.