Add compatibility impl for EVP_PKEY_get0 Node.js uses EVP_PKEY_get0, which is present in OpenSSL but which BoringSSL currently does not export. This CL adds an implementation for it, which Electron is currently floating as a patch. See https://github.com/nodejs/node/commit/6a7eb32c5bcd92f490a57f2cd12d52e1db881d17 from Node. Change-Id: I2474cacbd22882355a8037e2033739f7496b21f2 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/47824 Reviewed-by: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/evp/evp.c b/crypto/evp/evp.c index 653d657..bb31645 100644 --- a/crypto/evp/evp.c +++ b/crypto/evp/evp.c
@@ -429,6 +429,15 @@ 0, (void *)out_md); } +void *EVP_PKEY_get0(const EVP_PKEY *pkey) { + // Node references, but never calls this function, so for now we return NULL. + // If other projects require complete support, call |EVP_PKEY_get0_RSA|, etc., + // rather than reading |pkey->pkey.ptr| directly. This avoids problems if our + // internal representation does not match the type the caller expects from + // OpenSSL. + return NULL; +} + void OpenSSL_add_all_algorithms(void) {} void OPENSSL_add_all_algorithms_conf(void) {}
diff --git a/include/openssl/evp.h b/include/openssl/evp.h index 378eb32..405b402 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h
@@ -836,6 +836,11 @@ // Ed448 and attempts to create keys will fail. #define EVP_PKEY_ED448 NID_ED448 +// EVP_PKEY_get0 returns NULL. This function is provided for compatibility with +// OpenSSL but does not return anything. Use the typed |EVP_PKEY_get0_*| +// functions instead. +OPENSSL_EXPORT void *EVP_PKEY_get0(const EVP_PKEY *pkey); + // OpenSSL_add_all_algorithms does nothing. OPENSSL_EXPORT void OpenSSL_add_all_algorithms(void);