Releases: hwchen/keyring-rs
v1.2.1: bug fix on Windows
The maximum allowed password length was not being checked correctly on Windows, because the check did not take into account the UTF-16 encoding that would be applied to the password before it was stored (#85). This release fixes that one bug.
v2 alpha 4: pre-release that can't go to crates.io
This is a stable pre-release of keyring-rs v2, but it can't be published to crates.io because it uses a not-yet-published dependency (secret service v3). Main changes since version 1.2:
- Platform-specific credentials and credential stores are now described by traits: CredentialApi and CredentialBuilderApi. Clients can bring their own credential stores, can set the store that should be used by default for creating new entries, and can specify the creation of a credential in a specific store.
Entry::new
and similar can now return errors. This is a breaking change in the API.- The
Error
enum is now non-exhaustive (and some of its entries have changed.). This is a breaking change in the API. - There is now a
mock
credential store that clients can use for platform-independent code testing (as requested by @moritzheiber). - The secret-service credential store is now using v3 of secret-service, and allows explicit control (via features) of which async runtime and encryption implementation used by zbus. For backwards compatibility, the default feature set enables secret-service with the async-io runtime and Rust-native encryption. If you want to avoid any use of an async runtime, then compile without the secret service by specifying
default-features = false
and adding the featurelinux-no-secret-service
. (Thanks to @Sytten for advice in this area.) - The secret service credential store now attempts to unlock entries before returning them (#84 - thanks @jkhsjdhjs).
- The linux-kernel credential store keyutils has been added as a built-in credential store (thanks to @landhb). You can make this the default store by specifying the feature
linux-default-keyutils
(or by excluding the secret-service from the build completely, as described above).
Once v3 of the secret service is published, docs will be updated and this code will be re-published as a release candidate.
v1.2: Resolve platform differences around empty user names
As reported in #86, the MacOS platform treats an empty user-name (or service-name) string as a wildcard when doing a password retrieval. Other platforms do not act this way. As it's a tenet of this module to have consistent behavior on all platforms, a bug fix was needed. The resolution (as documented in #86 and #87 and in the docs) is to disallow the use of empty strings for target, service or user names in credentials, causing all attempted uses of such credentials to fail with a "credential not found" error. This resolution does not break the API or any existing API documentation (since the behavior on empty strings was not documented), but as it's a functionality change it merits a minor version bump.
Existing clients of the API who were relying on platform-specific behavior around the user of empty credential strings can still use this module, but they will have to explicitly specify their platform credentials using the new_with_credential
call rather than using new
or new_with_target
as they may have been.
v1.1.2: update dependencies
We were using structopt
in the CLI example, but it's now in maintenance because the latest clap
incorporates all of the stuctopt
features. Thanks to @gondolyr we are now on the latest clap.
There are no keyring-related functional changes in this release.
v1.1.1: iOS support
This release provides Keyring support on iOS. See the README for details.
v1.0.1: windows fixes in Cargo.toml
This patch release, thanks to @jyuch, fixes a problem with starting a new Cargo project on Windows that uses Keyring. There were missing features in Keyring's load of the winapi crate.
v1.0.0: updated API and increased functionality
This release adds many requested features and fixes many reported bugs; thanks everyone for the feedback! From the change log:
- Breaking API changes:
Keyring
struct renamed toEntry
KeyringError
enum renamed toError
, and is completely cross-platform.
- API enhancements:
- Clients can now control how entries map to credentials; see
Entry::new_with_target
andEntry::new_with_credential
- Clients can now retrieve platform credentials with metadata rather than just passwords; see
Entry::get_password_and_credential
. - Non UTF8 passwords now have their data available.
- Non-login keychains are usable on Linux and Mac.
- Clients can now control how entries map to credentials; see
- Expanded documentation and
cli
example.
Pre-release of v1.0
This is a major version bump to 1.0. There are incompatible API changes and a lot of new features:
- The
Keyring
structure is now namedEntry
, which is far more accurate. - The
KeyringError
structure is now named justkeyring::Error
. It is still an enum, but the values returned are platform-independent so no platform-specific code is needed for error handling. - Clients now have a lot more control over the details of the credential used for a given entry: see the constructors on the
Entry
structure. - The sample
cli
application has been completely revamped and shows how to use all aspects of the keyring. - All credential use is backward-compatible with earlier versions.
NOTE: The cargo project version will not be updated until we release to crates.io.
v0.10.4
(cargo-release) version 0.10.4