I’ve completed a first go at simplifying handling keyrings in Rust. So far, this includes:
- secret-service-rs, a library for interfacing with linux keychains implementing the Secret Service API (e.g. gnome keyring and kwallet).
- keyring-rs, a (soon-to-be) cross-platform library for managing passwords, and which uses secret-service-rs as the linux backend.
Inspiration was python keyring. At work, we have a tool which uses it, and I want to be able to rewrite it in Rust
secret-service-rs is currently feature-complete. I will be doing a refactoring pass soon, though, and would be happy to get feedback. @YBRyn in particular mentioned that it would be good to look over the crypto stuff before publishing. Also, much thanks to @willi_kappler for looking over my code and giving guidance.
I’d also like to mention that I really enjoyed the documentation process,
rustdoc was great! And the error-handling section of the rust book made writing custom errors straightforward (and fun?).
keyring-rs, it’s still half-baked. The most glaring omissions are lack of OSX and Windows support. I’ve had a look at winapi, but it’s a bit foreign to me as I don’t develop on Windows. If anybody could give me some direction on Windows Credentials, that would be great.
For OSX support, I was looking at security-framework, but I had a hard time figuring it out. If anybody could let me know that’s the right direction to go to interact with OSX Keychain, I’ll dig a little deeper. (For reference, python keyring OSX backend appears to pipe data in and out of the
Finally, I’m trying to use conditional compilation, but could be doing it incorrectly or weirdly.
Just want to say again that I’ve had great interactions with the Rust community, and I really enjoy programming in Rust.