rage
Added
- Partial French translation!
Fixed
- [Unix] Files can now be encrypted with
rage --passphrase
when piped over stdin, without requiring an explicit-
argument asINPUT
.
age
Added
- New streamlined APIs for use with a single recipient or identity and a small amount of data (that can fit entirely in memory):
age::encrypt
age::encrypt_and_armor
age::decrypt
age::Decryptor::{decrypt, decrypt_async, is_scrypt}
age::IdentityFile::to_recipients
age::IdentityFile::with_callbacks
age::IdentityFile::write_recipients_file
age::IdentityFileConvertError
age::NoCallbacks
age::scrypt
, providing recipient and identity types for passphrase-based encryption.- Partial French translation!
Changed
- Migrated to
i18n-embed 0.15
,secrecy 0.10
. age::Encryptor::with_recipients
now takes recipients by reference instead of by value. This aligns it withage::Decryptor
(which takes identities by reference), and also means that errors with recipients are reported earlier. This causes the following changes to the API:Encryptor::with_recipients
takesimpl Iterator<Item = &'a dyn Recipient>
instead ofVec<Box<dyn Recipient + Send>>
.- Verification of recipients and generation of stanzas now happens in
Encryptor::with_recipients
instead ofEncryptor::wrap_output
andEncryptor::wrap_async_output
. Encryptor::with_recipients
returnsResult<Self, EncryptError>
instead ofOption<Self>
, andEncryptor::{wrap_output, wrap_async_output}
returnio::Result<StreamWriter<W>>
instead ofResult<StreamWriter<W>, EncryptError>
.age::EncryptError
has a new variantMissingRecipients
, taking the place of theNone
thatEncryptor::with_recipients
could previously return.
age::Decryptor
is now an opaque struct instead of an enum withRecipients
andPassphrase
variants.age::IdentityFile
now has aC: Callbacks
generic parameter, which defaults toNoCallbacks
.age::IdentityFile::into_identities
now returnsResult<Vec<Box<dyn crate::Identity>>, DecryptError>
instead ofVec<IdentityFileEntry>
.age::Recipient::wrap_file_key
now returns(Vec<Stanza>, HashSet<String>)
: a tuple of the stanzas to be placed in an age file header, and labels that constrain how the stanzas may be combined with those from other recipients.age::plugin::RecipientPluginV1
now supports the labels extension.
Fixed
age::cli_common::read_identities
once again correctly parses identity files that are a single line without a trailing newline. This broke in 0.10.0 due to an unrelated refactor.
Removed
age::decryptor::PassphraseDecryptor
(useage::Decryptor
withage::scrypt::Identity
instead).age::decryptor::RecipientsDecryptor
(useage::Decryptor
instead).age::IdentityFileEntry
age-plugin 0.6.0
Added
age_plugin::PluginHandler
impl age_plugin::identity::IdentityPluginV1 for std::convert::Infallible
impl age_plugin::recipient::RecipientPluginV1 for std::convert::Infallible
Changed
- Migrated to
age-core 0.11
. age_plugin::recipient::RecipientPluginV1
has a newlabels
method. Existing implementations of the trait should either returnHashSet::new()
to maintain existing compatibility, or return labels that apply the desired constraints.age_plugin::run_state_machine
now supports therecipient-v1
labels extension.
Fixed
age_plugin::run_state_machine
now takes animpl age_plugin::PluginHandler
argument, instead of its previous arguments.- This fixes the change from the previous release, because the type parameters were basically impossible to set correctly when attempting to pass
None
.
- This fixes the change from the previous release, because the type parameters were basically impossible to set correctly when attempting to pass
age-core
Added
age_core::format
:FileKey::new
FileKey::init_with_mut
FileKey::try_init_with_mut
is_arbitrary_string
Changed
- Migrated to
secrecy 0.10
. age::plugin::Connection::unidir_receive
now takes an additional argument to enable handling an optional fourth command.
New Contributors
- @AnomalRoil made their first contribution in #499
- @pavelzw made their first contribution in #492
- @BoostCookie made their first contribution in #513
Full Changelog: v0.10.0...v0.11.0