]> granicus.if.org Git - php/commitdiff
sodium ext: skip scrypt if it is not available
authorFrank Denis <github@pureftpd.org>
Sun, 30 Jul 2017 13:05:41 +0000 (15:05 +0200)
committerFrank Denis <github@pureftpd.org>
Sun, 30 Jul 2017 13:41:34 +0000 (15:41 +0200)
scrypt was removed from minimal libsodium builds in version 1.0.13

ext/sodium/libsodium.c
ext/sodium/tests/pwhash_scrypt.phpt

index 6024d8d12059cd529b30fbd5b33fc82c1c38db46..9580e3f28d57768190ca0de0a5cb469d57497d48 100644 (file)
@@ -225,9 +225,11 @@ const zend_function_entry sodium_functions[] = {
        PHP_FE(sodium_crypto_pwhash_str, AI_PasswordAndOpsLimitAndMemLimit)
        PHP_FE(sodium_crypto_pwhash_str_verify, AI_HashAndPassword)
 #endif
+#ifdef crypto_pwhash_scryptsalsa208sha256_SALTBYTES
        PHP_FE(sodium_crypto_pwhash_scryptsalsa208sha256, AI_LengthAndPasswordAndSaltAndOpsLimitAndMemLimit)
        PHP_FE(sodium_crypto_pwhash_scryptsalsa208sha256_str, AI_PasswordAndOpsLimitAndMemLimit)
        PHP_FE(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify, AI_HashAndPassword)
+#endif
        PHP_FE(sodium_crypto_scalarmult, AI_TwoStrings)
        PHP_FE(sodium_crypto_secretbox, AI_StringAndNonceAndKey)
        PHP_FE(sodium_crypto_secretbox_open, AI_StringAndNonceAndKey)
@@ -472,11 +474,9 @@ PHP_MINIT_FUNCTION(sodium)
        REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE",
                                                   crypto_pwhash_memlimit_sensitive(), CONST_CS | CONST_PERSISTENT);
 #endif
+#ifdef crypto_pwhash_scryptsalsa208sha256_SALTBYTES
        REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES",
                                                   crypto_pwhash_scryptsalsa208sha256_SALTBYTES, CONST_CS | CONST_PERSISTENT);
-#ifndef crypto_pwhash_scryptsalsa208sha256_STRPREFIX
-# define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$"
-#endif
        REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX",
                                                         crypto_pwhash_scryptsalsa208sha256_STRPREFIX, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE",
@@ -487,6 +487,7 @@ PHP_MINIT_FUNCTION(sodium)
                                                   crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(), CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE",
                                                   crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(), CONST_CS | CONST_PERSISTENT);
+#endif
        REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_BYTES",
                                                   crypto_scalarmult_BYTES, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_SCALARBYTES",
@@ -1654,6 +1655,7 @@ PHP_FUNCTION(sodium_crypto_stream_xor)
        RETURN_STR(ciphertext);
 }
 
+#ifdef crypto_pwhash_scryptsalsa208sha256_SALTBYTES
 PHP_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256)
 {
        zend_string   *hash;
@@ -1776,6 +1778,7 @@ PHP_FUNCTION(sodium_crypto_pwhash_scryptsalsa208sha256_str_verify)
        }
        RETURN_FALSE;
 }
+#endif
 
 #ifdef crypto_pwhash_SALTBYTES
 PHP_FUNCTION(sodium_crypto_pwhash)
index e5a204926cdd296687dc7c1dd1b2015db2c6dbe3..92db7ac7e00f0ac4779621f784957867ff08b1f7 100644 (file)
@@ -1,7 +1,8 @@
 --TEST--
-Check for libsodium utils
+Check for libsodium scrypt
 --SKIPIF--
-<?php if (!extension_loaded("sodium")) print "skip"; ?>
+<?php if (!extension_loaded("sodium")) print "skip";
+if (!defined('SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES')) print "skip libsodium without scrypt"; ?>
 --FILE--
 <?php
 $passwd = 'test';