Skip to content

Cross-platform library and utility to manage passwords

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

infincia/keyring-rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Keyring-rs

A cross-platorm library and utility to manage passwords.

Usage

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:

[dependencies]
keyring = "0.5.0"

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.

extern crate keyring;

fn main() {
  let service = "my_application_name";
  let username = "username";

  let keyring = keyring::Keyring::new(&service, &username)

  let password = keyring.get_password().unwrap()
  println!("The password is '{}'", password);
}

Passwords can also be added to the keyring using the set_password function.

extern crate keyring;

fn main() {
  let service = "my_application_name";
  let username = "username";

  let keyring = keyring::Keyring::new(&service, &username)

  let password = "topS3cr3tP4$$w0rd";
  keyring.set_password(&password).unwrap();

  let password = keyring.get_password().unwrap()
  println!("The password is '{}'", password);
}

And they can be deleted with the delete_password function.

extern crate keyring;

fn main() {
  let service = "my_application_name";
  let username = "username";

  let keyring = keyring::Keyring::new(&service, &username)

  keyring.delete_password().unwrap();

  println!("The password s been deleted");
}

Errors

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.

Caveats

macOS

  • Special characters support is experimental. Please file an issue if this gives you trouble.
  • Handles empty string input appropriately (encrypts and decrypts)

Linux

  • The application name is hardcoded to be rust-keyring.
  • Does not handle empty string input appropriately (decrypts but does not encrypt. This is a limitation of the current implementation of rust-crypto)

License

Licensed under either of

at your option.

Contribution

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.

About

Cross-platform library and utility to manage passwords

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%