-
Notifications
You must be signed in to change notification settings - Fork 479
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iv length is constant so set only once #649
Conversation
The iv length is preserved inside the EVP_CIPHER_CTX so no need to set more than once. This is especially important with OpenSSL 3 where setting the iv len is a expensive operation due to param lookup code inside of OpenSSL. This should help Performance issue with OpennSSL 3 and libsrtp with cisco#645 in the case of GCM but does not fix all of the performance issues.
I have been testing this PR and it marginally helps performance, so good to have it in anyway. |
@murillo128 I agree that it should just go in. @bifurcation could you review ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like the change here is to call SET_IVLEN
on initiation, as opposed to every time an IV is set? That seems fine, assuming EVP_CIPHER_CTX
holds on to this setting. Which seems like it's confirmed if this passes tests.
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [cisco/libsrtp](https://github.com/cisco/libsrtp) | minor | `v2.5.0` -> `v2.6.0` | --- ### Release Notes <details> <summary>cisco/libsrtp (cisco/libsrtp)</summary> ### [`v2.6.0`](https://github.com/cisco/libsrtp/releases/tag/v2.6.0): libSRTP 2.6.0 [Compare Source](cisco/libsrtp@v2.5.0...v2.6.0) #### What's Changed - cmake: Support configuring as subproject by [@​yangskyboxlabs](https://github.com/yangskyboxlabs) in cisco/libsrtp#640 - cmake: Rename TEST_APPS as LIBSRTP_TEST_APPS option by [@​yangskyboxlabs](https://github.com/yangskyboxlabs) in cisco/libsrtp#641 - Add a missing typedef for stream list ctx by [@​Lastique](https://github.com/Lastique) in cisco/libsrtp#643 - Add x86 SIMD optimizations to crypto datatypes by [@​Lastique](https://github.com/Lastique) in cisco/libsrtp#507 - fix typo by [@​uniontech-lilinjie](https://github.com/uniontech-lilinjie) in cisco/libsrtp#648 - iv length is constant so set only once by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#649 - Fix library version in Doxygen docs by [@​Lastique](https://github.com/Lastique) in cisco/libsrtp#654 - remove comma from srtp_profile_t enum value. by [@​melchi45](https://github.com/melchi45) in cisco/libsrtp#658 - meson.build: implement mbedtls support by [@​iameli](https://github.com/iameli) in cisco/libsrtp#660 - remove travis reference from README.md by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#661 - try to use ubuntu-latest by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#664 - Some srtp_driver fixes by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#662 - Some cipher_driver fixes by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#663 - start using const on internal arguments by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#665 - Cleaning up cmake and enabled more warnings. by [@​palerikm](https://github.com/palerikm) in cisco/libsrtp#666 - fix line break in stream_list.yml by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#668 - remove use of pointers to 32bit values by [@​pabuhler](https://github.com/pabuhler) in cisco/libsrtp#667 #### New Contributors - [@​yangskyboxlabs](https://github.com/yangskyboxlabs) made their first contribution in cisco/libsrtp#640 - [@​uniontech-lilinjie](https://github.com/uniontech-lilinjie) made their first contribution in cisco/libsrtp#648 - [@​melchi45](https://github.com/melchi45) made their first contribution in cisco/libsrtp#658 - [@​iameli](https://github.com/iameli) made their first contribution in cisco/libsrtp#660 - [@​palerikm](https://github.com/palerikm) made their first contribution in cisco/libsrtp#666 **Full Changelog**: cisco/libsrtp@v2.5.0...v2.6.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDIuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE1Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Reviewed-on: https://git.walbeck.it/walbeck-it/docker-janus-gateway/pulls/132 Co-authored-by: renovate-bot <bot@walbeck.it> Co-committed-by: renovate-bot <bot@walbeck.it>
The iv length is preserved inside the EVP_CIPHER_CTX so no need to set more than once.
This is especially important with OpenSSL 3 where setting the iv len is a expensive operation due to param lookup code inside of OpenSSL.
This should help performance issue with OpenSSL 3 and libsrtp with #645 in the case of GCM but does not fix all of the performance issues.