mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00
test: check against run-time OpenSSL version
Update `common.hasOpenSSL3*` to check against the run-time version of OpenSSL instead of the version of OpenSSL that Node.js was compiled against. Add a generalized `common.hasOpenSSL()` so we do not need to keep adding new checks for each new major/minor of OpenSSL. PR-URL: https://github.com/nodejs/node/pull/53456 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de>
This commit is contained in:
parent
5909cf3b04
commit
3e7129e5d6
2 changed files with 32 additions and 12 deletions
|
@ -57,14 +57,24 @@ const noop = () => {};
|
|||
const hasCrypto = Boolean(process.versions.openssl) &&
|
||||
!process.env.NODE_SKIP_CRYPTO;
|
||||
|
||||
const hasOpenSSL3 = hasCrypto &&
|
||||
require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30000000;
|
||||
// Synthesize OPENSSL_VERSION_NUMBER format with the layout 0xMNN00PPSL
|
||||
const opensslVersionNumber = (major = 0, minor = 0, patch = 0) => {
|
||||
assert(major >= 0 && major <= 0xf);
|
||||
assert(minor >= 0 && minor <= 0xff);
|
||||
assert(patch >= 0 && patch <= 0xff);
|
||||
return (major << 28) | (minor << 20) | (patch << 4);
|
||||
};
|
||||
|
||||
const hasOpenSSL31 = hasCrypto &&
|
||||
require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30100000;
|
||||
|
||||
const hasOpenSSL32 = hasCrypto &&
|
||||
require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30200000;
|
||||
let OPENSSL_VERSION_NUMBER;
|
||||
const hasOpenSSL = (major = 0, minor = 0, patch = 0) => {
|
||||
if (!hasCrypto) return false;
|
||||
if (OPENSSL_VERSION_NUMBER === undefined) {
|
||||
const regexp = /(?<m>\d+)\.(?<n>\d+)\.(?<p>\d+)/;
|
||||
const { m, n, p } = process.versions.openssl.match(regexp).groups;
|
||||
OPENSSL_VERSION_NUMBER = opensslVersionNumber(m, n, p);
|
||||
}
|
||||
return OPENSSL_VERSION_NUMBER >= opensslVersionNumber(major, minor, patch);
|
||||
};
|
||||
|
||||
const hasQuic = hasCrypto && !!process.config.variables.openssl_quic;
|
||||
|
||||
|
@ -977,9 +987,7 @@ const common = {
|
|||
getTTYfd,
|
||||
hasIntl,
|
||||
hasCrypto,
|
||||
hasOpenSSL3,
|
||||
hasOpenSSL31,
|
||||
hasOpenSSL32,
|
||||
hasOpenSSL,
|
||||
hasQuic,
|
||||
hasMultiLocalhost,
|
||||
invalidArgTypeHelper,
|
||||
|
@ -1040,6 +1048,18 @@ const common = {
|
|||
});
|
||||
},
|
||||
|
||||
get hasOpenSSL3() {
|
||||
return hasOpenSSL(3);
|
||||
},
|
||||
|
||||
get hasOpenSSL31() {
|
||||
return hasOpenSSL(3, 1);
|
||||
},
|
||||
|
||||
get hasOpenSSL32() {
|
||||
return hasOpenSSL(3, 2);
|
||||
},
|
||||
|
||||
get inFreeBSDJail() {
|
||||
if (inFreeBSDJail !== null) return inFreeBSDJail;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue