diff --git a/Makefile.in b/Makefile.in
index cc914070d..543f8fa26 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -34,11 +34,11 @@ FROMDOS=/home/cmunk/bin/4dos
#
#XCFLAGS=-O -g -export-dynamic
-IRCDLIBS=@IRCDLIBS@ @TRE_LIBS@ @PCRE2_LIBS@ @CARES_LIBS@ @PTHREAD_LIBS@
+IRCDLIBS=@IRCDLIBS@ @TRE_LIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @PTHREAD_LIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
-XCFLAGS=@PTHREAD_CFLAGS@ @TRE_CFLAGS@ @PCRE2_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
+XCFLAGS=@PTHREAD_CFLAGS@ @TRE_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
diff --git a/configure b/configure
index fdd37b4c6..a24b7f2d8 100755
--- a/configure
+++ b/configure
@@ -640,6 +640,8 @@ build_cpu
build
CARES_LIBS
CARES_CFLAGS
+ARGON2_LIBS
+ARGON2_CFLAGS
PCRE2_LIBS
PCRE2_CFLAGS
PKG_CONFIG_LIBDIR
@@ -757,6 +759,7 @@ with_operoverride_verify
with_disable_extendedban_stacking
with_system_tre
with_system_pcre2
+with_system_argon2
with_system_cares
enable_ssl
enable_dynamic_linking
@@ -779,6 +782,8 @@ TRE_CFLAGS
TRE_LIBS
PCRE2_CFLAGS
PCRE2_LIBS
+ARGON2_CFLAGS
+ARGON2_LIBS
CARES_CFLAGS
CARES_LIBS'
@@ -1458,6 +1463,8 @@ Optional Packages:
discovered using pkg-config
--with-system-pcre2 Use the system pcre2 package instead of bundled,
discovered using pkg-config
+ --without-system-argon2 Use bundled version instead of system argon2
+ library. Normally autodetected via pkg-config
--without-system-cares Use bundled version instead of system c-ares.
Normally autodetected via pkg-config.
@@ -1480,6 +1487,9 @@ Some influential environment variables:
PCRE2_CFLAGS
C compiler flags for PCRE2, overriding pkg-config
PCRE2_LIBS linker flags for PCRE2, overriding pkg-config
+ ARGON2_CFLAGS
+ C compiler flags for ARGON2, overriding pkg-config
+ ARGON2_LIBS linker flags for ARGON2, overriding pkg-config
CARES_CFLAGS
C compiler flags for CARES, overriding pkg-config
CARES_LIBS linker flags for CARES, overriding pkg-config
@@ -7294,6 +7304,14 @@ else
fi
+# Check whether --with-system-argon2 was given.
+if test "${with_system_argon2+set}" = set; then :
+ withval=$with_system_argon2;
+else
+ with_system_argon2=yes
+fi
+
+
# Check whether --with-system-cares was given.
if test "${with_system_cares+set}" = set; then :
withval=$with_system_cares;
@@ -8040,6 +8058,134 @@ fi
fi
+if test "x$with_system_argon2" = "xno"; then :
+
+argon2_version="20181209"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: extracting Argon2 library" >&5
+$as_echo "extracting Argon2 library" >&6; }
+cur_dir=`pwd`
+cd extras
+rm -rf argon2-$argon2_version argon2
+if test "x$ac_cv_path_GUNZIP" = "x" ; then
+ tar xfz argon2-$argon2_version.tar.gz
+else
+ cp argon2-$argon2_version.tar.gz argon2-$argon2_version.tar.gz.bak
+ gunzip -f argon2-$argon2_version.tar.gz
+ cp argon2-$argon2_version.tar.gz.bak argon2-$argon2_version.tar.gz
+ tar xf argon2-$argon2_version.tar
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: compiling Argon2 library" >&5
+$as_echo "compiling Argon2 library" >&6; }
+cd argon2-$argon2_version
+$ac_cv_prog_MAKER || exit 1
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: installing Argon2 library" >&5
+$as_echo "installing Argon2 library" >&6; }
+$ac_cv_prog_MAKER install PREFIX=$cur_dir/extras/argon2 || exit 1
+# We need to manually copy the libs to PRIVATELIBDIR because
+# there is no way to tell make install in libargon2 to do so.
+cp -av $cur_dir/extras/argon2/lib/* $PRIVATELIBDIR/
+ARGON2_CFLAGS="-I$cur_dir/extras/argon2/include"
+
+ARGON2_LIBS="-L$PRIVATELIBDIR -largon2 -lrt -ldl"
+
+cd $cur_dir
+
+else
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ARGON2" >&5
+$as_echo_n "checking for ARGON2... " >&6; }
+
+if test -n "$ARGON2_CFLAGS"; then
+ pkg_cv_ARGON2_CFLAGS="$ARGON2_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libargon2 >= 0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libargon2 >= 0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_ARGON2_CFLAGS=`$PKG_CONFIG --cflags "libargon2 >= 0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$ARGON2_LIBS"; then
+ pkg_cv_ARGON2_LIBS="$ARGON2_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libargon2 >= 0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libargon2 >= 0") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_ARGON2_LIBS=`$PKG_CONFIG --libs "libargon2 >= 0" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ ARGON2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libargon2 >= 0" 2>&1`
+ else
+ ARGON2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libargon2 >= 0" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$ARGON2_PKG_ERRORS" >&5
+
+ as_fn_error $? "Package requirements (libargon2 >= 0) were not met:
+
+$ARGON2_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables ARGON2_CFLAGS
+and ARGON2_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables ARGON2_CFLAGS
+and ARGON2_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see .
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ ARGON2_CFLAGS=$pkg_cv_ARGON2_CFLAGS
+ ARGON2_LIBS=$pkg_cv_ARGON2_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
+fi
+
has_system_cares="no"
if test "x$with_system_cares" = "xyes"; then :
diff --git a/configure.ac b/configure.ac
index 918d0b780..90afe64b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -701,6 +701,7 @@ AC_ARG_WITH(disable-extendedban-stacking, [AS_HELP_STRING([--with-disable-extend
[AC_DEFINE([DISABLE_STACKED_EXTBANS], [], [Define to disable extended ban stacking (~q:~c:\#chan, etc)])])])
AC_ARG_WITH(system-tre, [AS_HELP_STRING([--with-system-tre], [Use the system tre package instead of bundled, discovered using pkg-config])], [], [with_system_tre=no])
AC_ARG_WITH(system-pcre2, [AS_HELP_STRING([--with-system-pcre2], [Use the system pcre2 package instead of bundled, discovered using pkg-config])], [], [with_system_pcre2=no])
+AC_ARG_WITH(system-argon2, [AS_HELP_STRING([--without-system-argon2], [Use bundled version instead of system argon2 library. Normally autodetected via pkg-config])], [], [with_system_argon2=yes])
AC_ARG_WITH(system-cares, [AS_HELP_STRING([--without-system-cares], [Use bundled version instead of system c-ares. Normally autodetected via pkg-config.])], [], [with_system_cares=yes])
CHECK_SSL
CHECK_SSL_CTX_SET1_CURVES_LIST
@@ -837,6 +838,41 @@ dnl use pkgconfig for pcre2:
PKG_CHECK_MODULES([PCRE2], libpcre2-8 >= 10.00)
])
+AS_IF([test "x$with_system_argon2" = "xno"],[
+dnl REMEMBER TO CHANGE WITH A NEW ARGON2 RELEASE!
+argon2_version="20181209"
+AC_MSG_RESULT(extracting Argon2 library)
+cur_dir=`pwd`
+cd extras
+dnl remove old argon2 directory to force a recompile...
+dnl and remove its installation prefix just to clean things up.
+rm -rf argon2-$argon2_version argon2
+if test "x$ac_cv_path_GUNZIP" = "x" ; then
+ tar xfz argon2-$argon2_version.tar.gz
+else
+ cp argon2-$argon2_version.tar.gz argon2-$argon2_version.tar.gz.bak
+ gunzip -f argon2-$argon2_version.tar.gz
+ cp argon2-$argon2_version.tar.gz.bak argon2-$argon2_version.tar.gz
+ tar xf argon2-$argon2_version.tar
+fi
+AC_MSG_RESULT(compiling Argon2 library)
+cd argon2-$argon2_version
+$ac_cv_prog_MAKER || exit 1
+AC_MSG_RESULT(installing Argon2 library)
+$ac_cv_prog_MAKER install PREFIX=$cur_dir/extras/argon2 || exit 1
+# We need to manually copy the libs to PRIVATELIBDIR because
+# there is no way to tell make install in libargon2 to do so.
+cp -av $cur_dir/extras/argon2/lib/* $PRIVATELIBDIR/
+ARGON2_CFLAGS="-I$cur_dir/extras/argon2/include"
+AC_SUBST(ARGON2_CFLAGS)
+ARGON2_LIBS="-L$PRIVATELIBDIR -largon2 -lrt -ldl"
+AC_SUBST(ARGON2_LIBS)
+cd $cur_dir
+],[
+dnl use pkgconfig for argon2:
+PKG_CHECK_MODULES([ARGON2], libargon2 >= 0)
+])
+
dnl Use system c-ares when available, unless --without-system-cares.
has_system_cares="no"
AS_IF([test "x$with_system_cares" = "xyes"],[
diff --git a/extras/argon2-20181209.tar.gz b/extras/argon2-20181209.tar.gz
new file mode 100644
index 000000000..9ed4ab322
Binary files /dev/null and b/extras/argon2-20181209.tar.gz differ
diff --git a/include/auth.h b/include/auth.h
index 687ca05a1..2e74afad5 100644
--- a/include/auth.h
+++ b/include/auth.h
@@ -33,6 +33,7 @@ typedef struct {
#define AUTHTYPE_SSL_CLIENTCERTFP 6
#define AUTHTYPE_BCRYPT 7
#define AUTHTYPE_SPKIFP 8
+#define AUTHTYPE_ARGON2 9
#ifndef HAVE_CRYPT
#define crypt DES_crypt
diff --git a/makefile.win32 b/makefile.win32
index a4671c645..84068ce66 100644
--- a/makefile.win32
+++ b/makefile.win32
@@ -24,6 +24,11 @@ MT=mt
#PCRE2_INC_DIR="C:\dev\pcre2"
#PCRE2LIB="pcre2-8.lib"
+### ARGON2 ###
+#ARGON2_LIB_DIR="C:\dev\argon2\vs2015\build"
+#ARGON2_INC_DIR="C:\dev\argon2\include"
+#ARGON2LIB="Argon2RefDll.lib"
+
### C-ARES ####
#CARES_LIB_DIR="C:\dev\c-ares\vc\cares\dll-release"
#CARES_INC_DIR="C:\dev\c-ares"
@@ -94,6 +99,13 @@ PCRE2_INC=/I "$(PCRE2_INC_DIR)"
PCRE2_LIB=/LIBPATH:"$(PCRE2_LIB_DIR)"
!ENDIF
+!IFDEF ARGON2_INC_DIR
+ARGON2_INC=/I "$(ARGON2_INC_DIR)"
+!ENDIF
+!IFDEF ARGON2_LIB_DIR
+ARGON2_LIB=/LIBPATH:"$(ARGON2_LIB_DIR)"
+!ENDIF
+
!IFDEF USE_REMOTEINC
CURLCFLAGS=/D USE_LIBCURL
CURLOBJ=SRC/URL.OBJ
@@ -126,19 +138,19 @@ MODDBGCFLAG=/LDd /MD /Zi
!ENDIF
FD_SETSIZE=/D FD_SETSIZE=16384
-CFLAGS=$(DBGCFLAG) $(TRE_INC) $(PCRE2_INC) $(CARES_INC) $(LIBCURL_INC) $(LIBRESSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
+CFLAGS=$(DBGCFLAG) $(TRE_INC) $(PCRE2_INC) $(ARGON2_INC) $(CARES_INC) $(LIBCURL_INC) $(LIBRESSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
$(CURLCFLAGS) $(FD_SETSIZE) $(SSLCFLAGS) /D NOSPOOF=1 /c /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
-CFLAGSST=$(DBGCFLAGST) $(TRE_INC) $(PCRE2_INC) $(CARES_INC) $(LIBCURL_INC) $(LIBRESSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
+CFLAGSST=$(DBGCFLAGST) $(TRE_INC) $(PCRE2_INC) $(ARGON2_INC) $(CARES_INC) $(LIBCURL_INC) $(LIBRESSL_INC) /J /I ./INCLUDE /I ./INCLUDE/WIN32/ARES /Fosrc/ /nologo \
$(CURLCFLAGS) $(FD_SETSIZE) $(SSLCFLAGS) /D NOSPOOF=1 /c /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
LFLAGS=kernel32.lib user32.lib gdi32.lib shell32.lib ws2_32.lib advapi32.lib \
dbghelp.lib oldnames.lib comctl32.lib comdlg32.lib $(CARES_LIB) $(CARESLIB) $(TRE_LIB) $(TRELIB) \
- $(PCRE2_LIB) $(PCRE2LIB) $(LIBRESSL_LIB) $(SSLLIB) $(LIBCURL_LIB) $(CURLLIB) /def:UnrealIRCd.def /implib:UnrealIRCd.lib \
+ $(PCRE2_LIB) $(PCRE2LIB) $(ARGON2_LIB) $(ARGON2LIB) $(LIBRESSL_LIB) $(SSLLIB) $(LIBCURL_LIB) $(CURLLIB) /def:UnrealIRCd.def /implib:UnrealIRCd.lib \
/nologo $(DBGLFLAG) /out:UnrealIRCd.exe
MODCFLAGS=$(MODDBGCFLAG) $(SSLCFLAGS) $(CURLCFLAGS) /J /Fesrc/modules/ \
- /Fosrc/modules/ /nologo $(TRE_INC) $(PCRE2_INC) $(CARES_INC) $(LIBCURL_INC) $(LIBRESSL_INC) /I ./INCLUDE /D \
+ /Fosrc/modules/ /nologo $(TRE_INC) $(PCRE2_INC) $(ARGON2_INC) $(CARES_INC) $(LIBCURL_INC) $(LIBRESSL_INC) /I ./INCLUDE /D \
DYNAMIC_LINKING /D NOSPOOF /D MODULE_COMPILE /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _USE_32BIT_TIME_T
MODLFLAGS=/link /def:src/modules/module.def UnrealIRCd.lib ws2_32.lib $(TRE_LIB) $(TRELIB) \
- $(PCRE2_LIB) $(PCRE2LIB) $(CARES_LIB) $(LIBRESSL_LIB) $(SSLLIB) \
+ $(PCRE2_LIB) $(PCRE2LIB) $(ARGON2_LIB) $(ARGON2LIB) $(CARES_LIB) $(LIBRESSL_LIB) $(SSLLIB) \
$(LIBCURL_LIB) $(CURLLIB)
INCLUDES=./include/struct.h ./include/config.h ./include/sys.h \
diff --git a/src/auth.c b/src/auth.c
index 8048323fd..2da757a5b 100644
--- a/src/auth.c
+++ b/src/auth.c
@@ -19,6 +19,7 @@
#include "unrealircd.h"
#include "crypt_blowfish.h"
+#include
anAuthStruct MODVAR AuthTypes[] = {
{"plain", AUTHTYPE_PLAINTEXT},
@@ -34,6 +35,7 @@ anAuthStruct MODVAR AuthTypes[] = {
{"sslclientcertfp", AUTHTYPE_SSL_CLIENTCERTFP},
{"certfp", AUTHTYPE_SSL_CLIENTCERTFP},
{"spkifp", AUTHTYPE_SPKIFP},
+ {"argon2", AUTHTYPE_ARGON2},
{NULL, 0}
};
@@ -83,6 +85,9 @@ int Auth_AutoDetectHashType(char *hash)
if (!strncmp(hash, "$2a$", 4) || !strncmp(hash, "$2b$", 4) || !strncmp(hash, "$2y$", 4))
return AUTHTYPE_BCRYPT;
+ if (!strncmp(hash, "$argon2", 7))
+ return AUTHTYPE_ARGON2;
+
/* Now handle UnrealIRCd-style password hashes.. */
if (parsepass(hash, &saltstr, &hashstr) == 0)
return AUTHTYPE_PLAINTEXT; /* old method (pre-3.2.1) or could not detect, fallback. */
@@ -272,6 +277,31 @@ int max;
return 1;
}
+static int authcheck_argon2(aClient *cptr, anAuthStruct *as, char *para)
+{
+ argon2_type hashtype;
+
+ if (!para)
+ return -1;
+
+ /* Find out the hashtype. Why do we need to do this, why is this
+ * not in the library or irrelevant by using some generic function?
+ */
+ if (!strncmp(as->data, "$argon2id", 9))
+ hashtype = Argon2_id;
+ else if (!strncmp(as->data, "$argon2i", 8))
+ hashtype = Argon2_i;
+ else if (!strncmp(as->data, "$argon2d", 8))
+ hashtype = Argon2_d;
+ else
+ return -1; /* unknown argon2 type */
+
+ if (argon2_verify(as->data, para, strlen(para), hashtype) == ARGON2_OK)
+ return 2; /* MATCH */
+
+ return -1; /* NO MATCH or error */
+}
+
static int authcheck_bcrypt(aClient *cptr, anAuthStruct *as, char *para)
{
char data[512]; /* NOTE: only 64 required by BF_crypt() */
@@ -500,6 +530,9 @@ int Auth_Check(aClient *cptr, anAuthStruct *as, char *para)
return 2;
return -1;
+ case AUTHTYPE_ARGON2:
+ return authcheck_argon2(cptr, as, para);
+
case AUTHTYPE_BCRYPT:
return authcheck_bcrypt(cptr, as, para);
@@ -603,6 +636,44 @@ int Auth_Check(aClient *cptr, anAuthStruct *as, char *para)
return -1;
}
+#define UNREALIRCD_ARGON2_DEFAULT_TIME_COST 3
+#define UNREALIRCD_ARGON2_DEFAULT_MEMORY_COST 8192
+#define UNREALIRCD_ARGON2_DEFAULT_PARALLELISM_COST 2
+#define UNREALIRCD_ARGON2_DEFAULT_HASH_LENGTH 32
+#define UNREALIRCD_ARGON2_DEFAULT_SALT_LENGTH (128/8)
+
+static char *mkpass_argon2(char *para)
+{
+ static char buf[512];
+ char salt[UNREALIRCD_ARGON2_DEFAULT_SALT_LENGTH];
+ int ret, i;
+
+ if (!para)
+ return NULL;
+
+ /* Initialize salt */
+ for (i=0; i < sizeof(salt); i++)
+ salt[i] = getrandom8();
+
+ *buf = '\0';
+
+ ret = argon2id_hash_encoded(UNREALIRCD_ARGON2_DEFAULT_TIME_COST,
+ UNREALIRCD_ARGON2_DEFAULT_MEMORY_COST,
+ UNREALIRCD_ARGON2_DEFAULT_PARALLELISM_COST,
+ para,
+ strlen(para),
+ salt,
+ sizeof(salt),
+ UNREALIRCD_ARGON2_DEFAULT_HASH_LENGTH,
+ buf,
+ sizeof(buf));
+
+ if (ret != ARGON2_OK)
+ return NULL; /* internal error */
+
+ return buf;
+}
+
static char *mkpass_bcrypt(char *para)
{
static char buf[128];
@@ -801,6 +872,9 @@ char *Auth_Make(short type, char *para)
case AUTHTYPE_PLAINTEXT:
return (para);
+ case AUTHTYPE_ARGON2:
+ return mkpass_argon2(para);
+
case AUTHTYPE_BCRYPT:
return mkpass_bcrypt(para);
diff --git a/src/ircd.c b/src/ircd.c
index 93c0eb357..2304a7863 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -1137,7 +1137,7 @@ int InitUnrealIRCd(int argc, char *argv[])
type = Auth_FindType(NULL, p);
if (type == -1)
{
- type = AUTHTYPE_BCRYPT;
+ type = AUTHTYPE_ARGON2;
} else {
p = *++argv;
argc--;
@@ -1155,7 +1155,7 @@ int InitUnrealIRCd(int argc, char *argv[])
{
/* Hmmm.. is this warning really still true (and always) ?? */
printf("WARNING: Password truncated to 8 characters due to 'crypt' algorithm. "
- "You are suggested to use the 'bcrypt' algorithm instead.");
+ "You are suggested to use the 'argon2' algorithm instead.");
p[8] = '\0';
}
if (!(result = Auth_Make(type, p))) {
diff --git a/src/modules/m_mkpasswd.c b/src/modules/m_mkpasswd.c
index 95a463c16..8df10d1ca 100644
--- a/src/modules/m_mkpasswd.c
+++ b/src/modules/m_mkpasswd.c
@@ -103,7 +103,7 @@ CMD_FUNC(m_mkpasswd)
{
/* TODO: is this still a valid warning ? */
sendnotice(sptr, "WARNING: Password truncated to 8 characters due to 'crypt' algorithm. "
- "You are suggested to use the 'md5' algorithm instead.");
+ "You are suggested to use the 'argon2' algorithm instead.");
parv[2][8] = '\0';
}
diff --git a/src/win32/unrealinst.iss b/src/win32/unrealinst.iss
index e4b84b99b..5564595cf 100644
--- a/src/win32/unrealinst.iss
+++ b/src/win32/unrealinst.iss
@@ -73,6 +73,7 @@ Source: "src\modules\cap\*.dll"; DestDir: "{app}\modules\cap"; Flags: ignorevers
Source: "c:\dev\tre\win32\release\tre.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "c:\dev\pcre2\bin\pcre*.dll"; DestDir: "{app}"; Flags: ignoreversion
+Source: "c:\dev\argon2\vs2015\build\*.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "c:\dev\c-ares\msvc\cares\dll-release\cares.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "c:\dev\libressl\bin\openssl.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "c:\dev\libressl\bin\*.dll"; DestDir: "{app}"; Flags: ignoreversion