Skip to content

Commit c609660

Browse files
committed
ext/openssl: Deprecate $key_length parameter of openssl_pkey_derive()
RFC: https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_key_length_parameter_of_openssl_pkey_derive
1 parent 7b44bfd commit c609660

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

ext/openssl/openssl.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2356,6 +2356,14 @@ PHP_FUNCTION(openssl_pkey_derive)
23562356
RETURN_THROWS();
23572357
}
23582358

2359+
if (ZEND_NUM_ARGS() == 3) {
2360+
php_error_docref(NULL, E_DEPRECATED,
2361+
"the $key_length parameter is deprecated as it is either ignored or truncates the key");
2362+
if (UNEXPECTED(EG(exception))) {
2363+
RETURN_THROWS();
2364+
}
2365+
}
2366+
23592367
if (key_len < 0) {
23602368
zend_argument_value_error(3, "must be greater than or equal to 0");
23612369
RETURN_THROWS();
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
--TEST--
2+
openssl_pkey_derive() DH
3+
--EXTENSIONS--
4+
openssl
5+
--FILE--
6+
<?php
7+
8+
$priv = openssl_pkey_get_private("-----BEGIN PRIVATE KEY-----
9+
MIICJgIBADCCARcGCSqGSIb3DQEDATCCAQgCggEBAJLxRCaZ933uW+AXmabHFDDy
10+
upojBIRlbmQLJZfigDaSA1f9YOTsIv+WwVFTX/J1mtCyx9uBcz0Nt2kmVwxWuc2f
11+
VtCEMPsmLsVXX7xRUFLpyX1Y1IYGBVXQOoOvLWYQjpZgnx47Pkh1Ok1+smffztfC
12+
0DCNt4KorWrbsPcmqBejXHN79KvWFjZmXOksRiNu/Bn76RiqvofC4z8Ri3kHXQG2
13+
197JGZzzFXHadGC3xbkg8UxsNbYhVMKbm0iANfafUH7/hoS9UjAVQYtvwe7YNiW/
14+
HnyfVCrKwcc7sadd8Iphh+3lf5P1AhaQEAMytanrzq9RDXKBxuvpSJifRYasZYsC
15+
AQIEggEEAoIBAGwAYC2E81Y1U2Aox0U7u1+vBcbht/OO87tutMvc4NTLf6NLPHsW
16+
cPqBixs+3rSn4fADzAIvdLBmogjtiIZoB6qyHrllF/2xwTVGEeYaZIupQH3bMK2b
17+
6eUvnpuu4Ytksiz6VpXBBRMrIsj3frM+zUtnq8vKUr+TbjV2qyKR8l3eNDwzqz30
18+
dlbKh9kIhZafclHfRVfyp+fVSKPfgrRAcLUgAbsVjOjPeJ90xQ4DTMZ6vjiv6tHM
19+
hkSjJIcGhRtSBzVF/cT38GyCeTmiIA/dRz2d70lWrqDQCdp9ArijgnpjNKAAulSY
20+
CirnMsGZTDGmLOHg4xOZ5FEAzZI2sFNLlcw=
21+
-----END PRIVATE KEY-----
22+
");
23+
24+
$pub = openssl_pkey_get_public("-----BEGIN PUBLIC KEY-----
25+
MIICJDCCARcGCSqGSIb3DQEDATCCAQgCggEBAJLxRCaZ933uW+AXmabHFDDyupoj
26+
BIRlbmQLJZfigDaSA1f9YOTsIv+WwVFTX/J1mtCyx9uBcz0Nt2kmVwxWuc2fVtCE
27+
MPsmLsVXX7xRUFLpyX1Y1IYGBVXQOoOvLWYQjpZgnx47Pkh1Ok1+smffztfC0DCN
28+
t4KorWrbsPcmqBejXHN79KvWFjZmXOksRiNu/Bn76RiqvofC4z8Ri3kHXQG2197J
29+
GZzzFXHadGC3xbkg8UxsNbYhVMKbm0iANfafUH7/hoS9UjAVQYtvwe7YNiW/Hnyf
30+
VCrKwcc7sadd8Iphh+3lf5P1AhaQEAMytanrzq9RDXKBxuvpSJifRYasZYsCAQID
31+
ggEFAAKCAQAiCSBpxvGgsTorxAWtcAlSmzAJnJxFgSPef0g7OjhESytnc8G2QYmx
32+
ovMt5KVergcitztWh08hZQUdAYm4rI+zMlAFDdN8LWwBT/mGKSzRkWeprd8E7mvy
33+
ucqC1YXCMqmIwPySvLQUB/Dl8kgau7BLAnIJm8VP+MVrn8g9gghD0qRCgPgtEaDV
34+
vocfgnOU43rhKnIgO0cHOKtw2qybSFB8QuZrYugq4j8Bwkrzh6rdMMeyMl/ej5Aj
35+
c0wamOzuBDtXt0T9+Fx3khHaowjCc7xJZRgZCxg43SbqMWJ9lUg94I7+LTX61Gyv
36+
dtlkbGbtoDOnxeNnN93gwQZngGYZYciu
37+
-----END PUBLIC KEY-----
38+
");
39+
40+
var_dump(openssl_pkey_derive($pub, $priv, 10));
41+
42+
?>
43+
--EXPECTF--
44+
Deprecated: openssl_pkey_derive(): the $key_length parameter is deprecated as it is either ignored or truncates the key in %s on line %d
45+
bool(false)

0 commit comments

Comments
 (0)