aead: split Aead(Mut) from Aead(Mut)InPlace (fixes #70) #120
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Splits the
Aead
andAeadMut
trait into the following:Aead
andAeadMut
:gated on thealloc
featureAeadInPlace
andAeadMutInPlace
: object-safe, always availableThis further has the benefit that implementors who don't want to provide or abstract over the in-place APIs no longer have to. See
ursa
as a real world example of where this split is useful.To make the
*InPlace
traits object safe, the one generic parameter they previously used (impl Buffer
) was switched todyn Buffer
. This adds some vtable dispatch overhead for manipulating the buffer, but hopefully it is still cheap compared to the overhead of cryptographic operations on the underlying data. That said, no benchmarks have been performed (yet) on the costs of this change.