Improve conversion of Python integers to Big Numbers in EC module#211
Merged
jakinyele merged 1 commit intoJHUISI:devfrom Aug 20, 2019
Merged
Conversation
Contributor
|
Any progress on merging this patch so far? It fixes several bugs and also gives a speedup of the Python code “for free.” |
Member
|
Apologies for the delay. Wanted to review/test to verify there were no unintended breaking changes and dropped the ball on testing. Anyway, merging now. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This commit removes the conversion to MPZ integers when converting a Python long object to an OpenSSL bignum. For the intermediate conversion to a decimal string representation, Python internal functions are used here, however this is arguably less prone to breakage due to potential upcoming CPython changes than accessing internal fields as in the current code. This commit fixes an issue where for instance
group.init(-1) == group.init(1)org == -1 * gfor some group elementg. As for performance, on my local machine using Python 3.7, this reduces the time spent ongroup.init(...)by more than half; on Python 2.7 I see no significant change.