]> granicus.if.org Git - php/commitdiff
Compatibility with libargon2 versions 20161029 and 20160821
authorCharles R. Portwood II <charlesportwoodii@erianna.com>
Sun, 18 Jun 2017 23:17:43 +0000 (19:17 -0400)
committerSara Golemon <pollita@php.net>
Sun, 18 Jun 2017 23:19:20 +0000 (19:19 -0400)
libargon2 20161029 introduces the `type` parameter to the argon2_encodedlen
function that is not present in 20160821. This change ensures the Argon2
functionality introduced in RFC `argon2_password_hash` is compatible with
both versions, as the library version that package maintainers package may
differ.

ext/standard/config.m4
ext/standard/config.w32
ext/standard/password.c

index 284e74e967ea7ffb310320b77ffe7ac2581aa954..87ee059bd385e1e6314a2521d88fbba6c2781d52 100644 (file)
@@ -439,6 +439,13 @@ if test "$PHP_PASSWORD_ARGON2" != "no"; then
   ], [
     AC_MSG_ERROR([Problem with libargon2.(a|so). Please verify that Argon2 header and libaries are installed])
   ])
+
+  AC_CHECK_LIB(argon2, argon2id_hash_raw, [
+    LIBS="$LIBS -largon2"
+    AC_DEFINE(HAVE_ARGON2ID, 1, [ Define to 1 if Argon2 library has support for Argon2ID])
+  ], [
+    AC_MSG_RESULT([not found])
+  ])
 fi
 
 dnl
index 00b2166abe8767c1b0663c4728ffe651bd46350c..ee1935fe87257eb4bed202d78d236913cddbe41a 100644 (file)
@@ -7,6 +7,9 @@ if (PHP_PASSWORD_ARGON2 != "no") {
        if (CHECK_LIB("argon2_a.lib;argon2.lib", null, PHP_PASSWORD_ARGON2)
        && CHECK_HEADER_ADD_INCLUDE("argon2.h", "CFLAGS")) {
                AC_DEFINE('HAVE_ARGON2LIB', 1);
+               if (CHECK_FUNC_IN_HEADER("argon2.h", "argon2id_hash_raw", PHP_PHP_BUILD + "\\include", "CFLAGS")) {
+                       AC_DEFINE('HAVE_ARGON2ID', 1);
+               }
        } else {
                WARNING("Argon2 not enabled; libaries and headers not found");
        }
index 2d04badd1b08708c2cbc2cca94ede7ccc4db9347..5e1704fe6952ff802e2f94c3bc5b81ba21a81be2 100644 (file)
@@ -545,6 +545,9 @@ PHP_FUNCTION(password_hash)
                                        threads,
                                        (uint32_t)salt_len,
                                        out_len
+#if HAVE_ARGON2ID
+                                       , type
+#endif
                                );
 
                                out = emalloc(out_len + 1);