--TEST--
Bug #78114 (segfault when calling sodium_* functions from eval)
---SKIPIF--
-<?php
-if (!extension_loaded('sodium')) die('skip sodium extension not available');
-?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
try {
--TEST--
Bug #78516 (password_hash(): Memory cost is not in allowed range)
+--EXTENSIONS--
+sodium
--SKIPIF--
<?php
-if (!extension_loaded('sodium')) die('skip sodium extension not available');
if (!defined('PASSWORD_ARGON2ID')) die('skip PASSWORD_ARGON2ID not available');
?>
--FILE--
--TEST--
Check for libsodium AEAD
+--EXTENSIONS--
+sodium
--SKIPIF--
<?php
-if (!extension_loaded("sodium")) print "skip extension not loaded";
if (!defined('SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES')) print "skip libsodium without AESGCM";
?>
--FILE--
--TEST--
Check for libsodium auth
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$msg = random_bytes(1000);
--TEST--
Check for libsodium box
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$keypair = sodium_crypto_box_keypair();
--TEST--
Check for libsodium generichash
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$q = sodium_crypto_generichash('msg');
--TEST--
Check for libsodium bin2hex
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$bin = random_bytes(random_int(1, 1000));
--TEST--
Check for libsodium KDF
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$key = sodium_crypto_kdf_keygen();
--TEST--
Check for libsodium-based key exchange
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$client_seed = sodium_hex2bin('0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef');
--TEST--
Check for libsodium scalarmult
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$n = sodium_hex2bin("5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb");
--TEST--
Check for libsodium secretbox
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
--TEST--
Check for libsodium secretstream
+--EXTENSIONS--
+sodium
--SKIPIF--
<?php
-if (!extension_loaded("sodium")) print "skip extension not loaded";
if (!defined('SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES')) print "skip libsodium without secretbytes";
?>
--FILE--
--TEST--
Check for libsodium shorthash
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$m1 = 'message';
--TEST--
Check for libsodium ed25519 signatures
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$keypair = sodium_crypto_sign_keypair();
--TEST--
Check for libsodium stream
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$nonce = random_bytes(SODIUM_CRYPTO_STREAM_NONCEBYTES);
--TEST--
SodiumException backtraces do not contain function arguments
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
--TEST--
increment and add edge cases
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
--TEST--
Check for sodium presence
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
echo "sodium extension is available";
--TEST--
Check for libsodium argon2i
+--EXTENSIONS--
+sodium
--SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip";
+<?php
if (!defined('SODIUM_CRYPTO_PWHASH_SALTBYTES')) print "skip libsodium without argon2i"; ?>
--FILE--
<?php
--TEST--
Check for libsodium scrypt
+--EXTENSIONS--
+sodium
--SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip";
+<?php
if (!defined('SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES')) print "skip libsodium without scrypt"; ?>
--FILE--
<?php
--TEST--
TypeErrors will not contain param values in backtrace
---SKIPIF--
-<?php if (!extension_loaded("sodium")) die("skip ext/sodium required"); ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
declare(strict_types=1);
--TEST--
Check for libsodium utils
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
$a = 'test';
--TEST--
Check for libsodium version
---SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+--EXTENSIONS--
+sodium
--FILE--
<?php
echo strlen(SODIUM_LIBRARY_VERSION) >= 5;
$extensions = preg_split("/[\n\r]+/", trim($test->getSection('EXTENSIONS')));
[$ext_dir, $loaded] = $skipCache->getExtensions("$php $pass_options $extra_options $ext_params $no_file_cache");
$ext_prefix = IS_WINDOWS ? "php_" : "";
+ $missing = [];
foreach ($extensions as $req_ext) {
if (!in_array($req_ext, $loaded)) {
if ($req_ext == 'opcache') {
- $ini_settings['zend_extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $ext_prefix . $req_ext . '.' . PHP_SHLIB_SUFFIX;
+ $ext_file = $ext_dir . DIRECTORY_SEPARATOR . $ext_prefix . $req_ext . '.' . PHP_SHLIB_SUFFIX;
+ $ini_settings['zend_extension'][] = $ext_file;
} else {
- $ini_settings['extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $ext_prefix . $req_ext . '.' . PHP_SHLIB_SUFFIX;
+ $ext_file = $ext_dir . DIRECTORY_SEPARATOR . $ext_prefix . $req_ext . '.' . PHP_SHLIB_SUFFIX;
+ $ini_settings['extension'][] = $ext_file;
+ }
+ if (!is_readable($ext_file)) {
+ $missing[] = $req_ext;
}
}
}
+ if ($missing) {
+ $message = 'Required extension' . (count($missing) > 1 ? 's' : '')
+ . ' missing: ' . implode(', ', $missing);
+ return skip_test($tested, $tested_file, $shortname, $message);
+ }
}
// additional ini overwrites
+++ /dev/null
---TEST--
-phpt EXTENSIONS directive with static module
---EXTENSIONS--
-SPL
---FILE--
-<?php
-var_dump(extension_loaded('spl'));
-?>
---EXPECT--
-bool(true)
+++ /dev/null
---TEST--
-phpt EXTENSIONS directive with nonexistent shared module
---INI--
-error_log=
-display_startup_errors=1
-display_errors=1
---EXTENSIONS--
-nonexistentsharedmodule
---FILE--
-<?php
-?>
---EXPECTF--
-Warning: PHP Startup: Unable to load dynamic library '%snonexistentsharedmodule.%s' %A
--TEST--
-phpt EXTENSIONS directive with shared module
+phpt EXTENSIONS directive - shared module
+--EXTENSIONS--
+openssl
--SKIPIF--
<?php
$php = getenv('TEST_PHP_EXECUTABLE');
}
$ext_module = ini_get('extension_dir') . DIRECTORY_SEPARATOR . (substr(PHP_OS, 0, 3) === "WIN" ? "php_openssl." : "openssl.") . PHP_SHLIB_SUFFIX;
if( !file_exists($ext_module) ) die('skip openssl shared extension not found');
---EXTENSIONS--
-openssl
+
--FILE--
<?php
var_dump(extension_loaded('openssl'));
--- /dev/null
+--TEST--
+phpt EXTENSIONS directive - static extension is present
+--EXTENSIONS--
+standard
+--FILE--
+<?php
+var_dump(extension_loaded('standard'));
+--EXPECT--
+bool(true)