fix: crash creating private key with unsupported algorithm #31087
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 Change
Closes #31064.
Fixed an issue where some calls to
crypto.createPrivateKeymade with algorithms unsupported by BoringSSL cause a crash when invoking methods on their return values. This was happening because BoringSSL shims some algorithms but doesn't implement them and so attempts to create keys with them will fail (see:evp.h#L835-837)Node.js returns false in
initEdRaw(seecrypto_keys.cc#L1106)but then does nothing with the return value, meaning that if no pkey is created successfully that a key object will still be returned. However, attempts to use the
data_field will crash the process asdata_is never assigned. This is fixed by checking the return value ofinitEdRawat the JavaScript level and throwing an error if the function returns false.cc @deermichel
Checklist
npm testpassesRelease Notes
Notes: Fixed an issue where some calls to
crypto.createPrivateKeymade with algorithms unsupported by BoringSSL cause a crash when invoking methods on their return values.