From 3366793a8d340b741ed53094b67aec682aebf54e Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sun, 27 Sep 2020 04:44:01 +0000 Subject: [PATCH] Upgrade/Install: Update sodium_compat to v1.13.0. This includes a few autoloader fixes and improvements. A full list of changes in this update can be found on GitHub: https://github.com/paragonie/sodium_compat/compare/v1.12.1...v1.13.0 See #51399. git-svn-id: https://develop.svn.wordpress.org/trunk@49056 602fd350-edb4-49c9-b593-d223f7449a82 --- .../sodium_compat/autoload-php7.php | 31 ++++++++ src/wp-includes/sodium_compat/autoload.php | 70 ++++++++++--------- .../sodium_compat/lib/php72compat.php | 12 ++++ src/wp-includes/sodium_compat/src/Compat.php | 16 ++--- src/wp-includes/sodium_compat/src/File.php | 8 ++- 5 files changed, 95 insertions(+), 42 deletions(-) create mode 100644 src/wp-includes/sodium_compat/autoload-php7.php diff --git a/src/wp-includes/sodium_compat/autoload-php7.php b/src/wp-includes/sodium_compat/autoload-php7.php new file mode 100644 index 0000000000..482486043b --- /dev/null +++ b/src/wp-includes/sodium_compat/autoload-php7.php @@ -0,0 +1,31 @@ += 50300) { // Namespaces didn't exist before 5.3.0, so don't even try to use this // unless PHP >= 5.3.0 diff --git a/src/wp-includes/sodium_compat/lib/php72compat.php b/src/wp-includes/sodium_compat/lib/php72compat.php index c39ec26a88..fa8c37299f 100644 --- a/src/wp-includes/sodium_compat/lib/php72compat.php +++ b/src/wp-includes/sodium_compat/lib/php72compat.php @@ -26,6 +26,10 @@ foreach (array( 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES', 'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES', + 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES', + 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES', + 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES', + 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES', 'CRYPTO_AUTH_BYTES', 'CRYPTO_AUTH_KEYBYTES', 'CRYPTO_BOX_SEALBYTES', @@ -62,6 +66,12 @@ foreach (array( 'CRYPTO_PWHASH_OPSLIMIT_MODERATE', 'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE', 'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE', + 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES', + 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX', + 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE', + 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE', + 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE', + 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE', 'CRYPTO_SCALARMULT_BYTES', 'CRYPTO_SCALARMULT_SCALARBYTES', 'CRYPTO_SHORTHASH_BYTES', @@ -84,6 +94,8 @@ foreach (array( 'CRYPTO_SIGN_KEYPAIRBYTES', 'CRYPTO_STREAM_KEYBYTES', 'CRYPTO_STREAM_NONCEBYTES', + 'LIBRARY_MAJOR_VERSION', + 'LIBRARY_MINOR_VERSION', 'LIBRARY_VERSION_MAJOR', 'LIBRARY_VERSION_MINOR', 'VERSION_STRING' diff --git a/src/wp-includes/sodium_compat/src/Compat.php b/src/wp-includes/sodium_compat/src/Compat.php index e49133fe05..ff76adbcb0 100644 --- a/src/wp-includes/sodium_compat/src/Compat.php +++ b/src/wp-includes/sodium_compat/src/Compat.php @@ -44,6 +44,8 @@ class ParagonIE_Sodium_Compat */ public static $fastMult = false; + const LIBRARY_MAJOR_VERSION = 9; + const LIBRARY_MINOR_VERSION = 1; const LIBRARY_VERSION_MAJOR = 9; const LIBRARY_VERSION_MINOR = 1; const VERSION_STRING = 'polyfill-1.0.8'; @@ -3117,15 +3119,14 @@ class ParagonIE_Sodium_Compat * with (sans pwhash and memzero). * * @return int - * @psalm-suppress MixedInferredReturnType - * @psalm-suppress UndefinedFunction */ public static function library_version_major() { - if (self::useNewSodiumAPI()) { - return sodium_library_version_major(); + if (self::useNewSodiumAPI() && defined('SODIUM_LIBRARY_MAJOR_VERSION')) { + return SODIUM_LIBRARY_MAJOR_VERSION; } if (self::use_fallback('library_version_major')) { + /** @psalm-suppress UndefinedFunction */ return (int) call_user_func('\\Sodium\\library_version_major'); } return self::LIBRARY_VERSION_MAJOR; @@ -3136,15 +3137,14 @@ class ParagonIE_Sodium_Compat * with (sans pwhash and memzero). * * @return int - * @psalm-suppress MixedInferredReturnType - * @psalm-suppress UndefinedFunction */ public static function library_version_minor() { - if (self::useNewSodiumAPI()) { - return sodium_library_version_minor(); + if (self::useNewSodiumAPI() && defined('SODIUM_LIBRARY_MINOR_VERSION')) { + return SODIUM_LIBRARY_MINOR_VERSION; } if (self::use_fallback('library_version_minor')) { + /** @psalm-suppress UndefinedFunction */ return (int) call_user_func('\\Sodium\\library_version_minor'); } return self::LIBRARY_VERSION_MINOR; diff --git a/src/wp-includes/sodium_compat/src/File.php b/src/wp-includes/sodium_compat/src/File.php index a28df9ffa9..b4948db36c 100644 --- a/src/wp-includes/sodium_compat/src/File.php +++ b/src/wp-includes/sodium_compat/src/File.php @@ -141,7 +141,9 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util ParagonIE_Sodium_Compat::memzero($nonce); ParagonIE_Sodium_Compat::memzero($ephKeypair); } catch (SodiumException $ex) { - unset($ephKeypair); + if (isset($ephKeypair)) { + unset($ephKeypair); + } } return $res; } @@ -328,7 +330,9 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util ParagonIE_Sodium_Compat::memzero($nonce); ParagonIE_Sodium_Compat::memzero($ephKeypair); } catch (SodiumException $ex) { - unset($ephKeypair); + if (isset($ephKeypair)) { + unset($ephKeypair); + } } return $res; }