Update EVP AES GCM and XTS benchmarks to reuse the key and cipher during the benchmark #965
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.
Description of changes:
From #963 we know this is a supported use case and has considerable implications to the performance of AES GCM/XTS. We expect most customers to use the same key for a lot of data and this changes the benchmark to match that behavior so we can provide more realistic data to customers.
This is what the AEAD benchmark was already doing: only calling
EVP_AEAD_CTX_init_with_direction
once, and then reusing the key but passing in the iv when callingEVP_AEAD_CTX_seal_scatter
Call-outs:
This will make comparisons with historical data in the canary impossible. This makes both OpenSSL and AWS-LC look faster, the change is more noticeable for small messages (where initialization time was a bigger factor).
Testing:
Before AES GCM
After AES GCM
AEAD AES GCM is now almost the same performance as the legacy EVP API (before == after as the AEAD benchmark wasn't changed):
AES XTS before:
AES XTS after:
New init benchmarks:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and
the ISC license.