Skip to content

Commit 98e4e23

Browse files
committed
Implement phpGH-13514 PASSWORD_ARGON2 from OpenSSL 3.2
1 parent 1fbb666 commit 98e4e23

10 files changed

+722
-4
lines changed

ext/openssl/config0.m4

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ PHP_ARG_WITH([openssl-legacy-provider],
1818
[no])
1919

2020
if test "$PHP_OPENSSL" != "no"; then
21-
PHP_NEW_EXTENSION(openssl, openssl.c xp_ssl.c, $ext_shared)
21+
PHP_NEW_EXTENSION(openssl, openssl.c openssl_pwhash.c xp_ssl.c, $ext_shared)
2222
PHP_SUBST([OPENSSL_SHARED_LIBADD])
2323
PHP_SETUP_OPENSSL([OPENSSL_SHARED_LIBADD],
2424
[AC_DEFINE([HAVE_OPENSSL_EXT], [1],

ext/openssl/openssl.c

+22
Original file line numberDiff line numberDiff line change
@@ -270,9 +270,20 @@ static void php_openssl_pkey_free_obj(zend_object *object)
270270
zend_object_std_dtor(&key_object->std);
271271
}
272272

273+
#if PHP_OPENSSL_API_VERSION >= 0x30200
274+
static const zend_module_dep openssl_deps[] = {
275+
ZEND_MOD_REQUIRED("standard")
276+
ZEND_MOD_END
277+
};
278+
#endif
273279
/* {{{ openssl_module_entry */
274280
zend_module_entry openssl_module_entry = {
281+
#if PHP_OPENSSL_API_VERSION >= 0x30200
282+
STANDARD_MODULE_HEADER_EX, NULL,
283+
openssl_deps,
284+
#else
275285
STANDARD_MODULE_HEADER,
286+
#endif
276287
"openssl",
277288
ext_functions,
278289
PHP_MINIT(openssl),
@@ -1330,6 +1341,12 @@ PHP_MINIT_FUNCTION(openssl)
13301341

13311342
REGISTER_INI_ENTRIES();
13321343

1344+
#if PHP_OPENSSL_API_VERSION >= 0x30200
1345+
if (FAILURE == PHP_MINIT(openssl_pwhash)(INIT_FUNC_ARGS_PASSTHRU)) {
1346+
return FAILURE;
1347+
}
1348+
#endif
1349+
13331350
return SUCCESS;
13341351
}
13351352
/* }}} */
@@ -1402,6 +1419,11 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
14021419
php_stream_xport_unregister("tlsv1.2");
14031420
php_stream_xport_unregister("tlsv1.3");
14041421

1422+
#if PHP_OPENSSL_API_VERSION >= 0x30200
1423+
if (FAILURE == PHP_MSHUTDOWN(openssl_pwhash)(SHUTDOWN_FUNC_ARGS_PASSTHRU)) {
1424+
return FAILURE;
1425+
}
1426+
#endif
14051427
/* reinstate the default tcp handler */
14061428
php_stream_xport_register("tcp", php_stream_generic_socket_factory);
14071429

0 commit comments

Comments
 (0)