-
-
Notifications
You must be signed in to change notification settings - Fork 34k
src: eliminate ManagedEVPPkey #54751
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
Conversation
|
Review requested:
|
2ab5842 to
5e64139
Compare
This comment was marked as outdated.
This comment was marked as outdated.
|
Thanks for working on simplifying this @jasnell! I just want to make sure my understanding is correct. IIRC, I added these types some years ago. From what I remember, Does that seem accurate to you? |
|
Well, further simplification can be made here. The KeyObjectData holds a shared_ptr internally just for the ease of things since it also has to deal with symmetric key data. I think the slightly more inefficient shared_ptr usage is worth the e reduction in complexity but I can be swayed to make further changes here. |
|
I am not asking for further simplification -- I am just trying to understand my own original motivation behind |
|
Yeah I've been having to refresh my memory on a lot of this also lol. It's been a good exercise. There's really tons of opportunity to simplify things in here. Moving things out to ncrypto is a great motivator to go through in detail. |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
3e12b70 to
ab5fcbf
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
ab5fcbf to
a413907
Compare
This comment was marked as outdated.
This comment was marked as outdated.
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
a413907 to
99dcd77
Compare
This comment was marked as outdated.
This comment was marked as outdated.
|
CI: https://ci.nodejs.org/job/node-test-pull-request/62211/ 💛 FINALLY! |
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
PR-URL: #54751
Reviewed-By: Yagiz Nizipli <[email protected]>
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
PR-URL: #54751
Reviewed-By: Yagiz Nizipli <[email protected]>
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
PR-URL: #54751
Reviewed-By: Yagiz Nizipli <[email protected]>
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
PR-URL: #54751
Reviewed-By: Yagiz Nizipli <[email protected]>
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
PR-URL: nodejs#54751
Reviewed-By: Yagiz Nizipli <[email protected]>
Prior to this change, the ManagedEVPPkey class added an
additional layer of abstraction to the EVP_PKEY class
that wasn't strictly necessary.
Previously we had:
KeyObjectHandle ->
std::shared_ptr<KeyObjectData> ->
ManagedEVPPkey ->
EVPKeyPointer
After this change we have:
KeyObjectHandle ->
KeyObjectData ->
EVPKeyPointer
The `KeyObjectData` class no longer needs to be wrapped in
std::shared_ptr but it will hold the underlying EVPKeyPointer
in a std::shared_ptr.
This greatly simplifies the abstraction and provides an overall
reduction in code and complexity, although the changeset in this
PR is fairly extensive to get there.
This refactor is being done to simplify the codebase as part
of the process of extracting crypto functionality to the
separate ncrypto dep.
PR-URL: nodejs#54751
Reviewed-By: Yagiz Nizipli <[email protected]>
Simplify key handling a bit by eliminating the additional indirection through ManagedEVPPKey
Prior to this change we had:
KeyObjectHandle->std::shared_ptr<KeyObjectData>->ManagedEVPPKey->EVPKeyPointerThe
ManagedEVPPKeyreally didn't add much value in the mix. After this change we have:KeyObjectHandle->KeyObjectData->EVPKeyPointerThe
KeyObjectDataclass now handles thestd::shared_ptrbits internally and assumes what little responsibility theManagedEVPPKeyclass had.Overall it ends up simplifying the codebase quite a bit even if the changes are scattered across a wide area.
This is being done as part of the larger effort to move crypto logic out to the ncrypto dep.