Linux vps-61133.fhnet.fr 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
Apache/2.4.25 (Debian)
Server IP : 93.113.207.21 & Your IP : 216.73.216.35
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
include /
Delete
Unzip
Name
Size
Permission
Date
Action
X11
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
arpa
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
asm-generic
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
bsd
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
c++
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
editline
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
enchant
[ DIR ]
drwxr-xr-x
2024-03-12 14:18
fontconfig
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
freetype2
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
gio-unix-2.0
[ DIR ]
drwxr-xr-x
2024-03-12 14:18
glib-2.0
[ DIR ]
drwxr-xr-x
2024-03-12 14:18
layout
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
libltdl
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
libpng
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
libpng16
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
libxml2
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
linux
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
lzma
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
memcached
[ DIR ]
drwxrwxrwx
2020-08-24 23:50
misc
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
mtd
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
ncursesw
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
net
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netash
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netatalk
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netax25
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
neteconet
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netinet
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netipx
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netiucv
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netpacket
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netrom
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
netrose
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
nfs
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
node
[ DIR ]
drwxr-xr-x
2024-03-12 22:00
openssl
[ DIR ]
drwxrwxrwx
2024-03-12 14:15
php
[ DIR ]
drwxrwxrwx
2020-08-24 23:50
postgresql
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
protocols
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
python3.5
[ DIR ]
drwxr-xr-x
2025-04-10 17:07
python3.5m
[ DIR ]
drwxr-xr-x
2025-04-10 17:07
rdma
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
readline
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
rpc
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
rpcsvc
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
scsi
[ DIR ]
drwxrwxrwx
2020-08-24 23:49
sodium
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
sound
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
tcl
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
tcl8.6
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
tk
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
uapi
[ DIR ]
drwxrwxrwx
2020-07-05 23:29
unicode
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
video
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
webp
[ DIR ]
drwxr-xr-x
2024-03-12 14:15
x86_64-linux-gnu
[ DIR ]
drwxrwxrwx
2025-06-04 09:25
xcb
[ DIR ]
drwxr-xr-x
2025-06-04 09:25
xen
[ DIR ]
drwxrwxrwx
2024-03-12 22:00
_G_config.h
1.26
KB
-rwxrwxrwx
2019-02-06 22:17
aio.h
7.27
KB
-rwxrwxrwx
2019-02-06 22:17
aliases.h
1.98
KB
-rwxrwxrwx
2019-02-06 22:17
alloca.h
1.17
KB
-rwxrwxrwx
2019-02-06 22:17
ar.h
1.69
KB
-rwxrwxrwx
2019-02-06 22:17
argon2.h
13.46
KB
-rw-r--r--
2016-08-21 20:33
argp.h
24.71
KB
-rwxrwxrwx
2019-02-06 22:17
argz.h
6.95
KB
-rwxrwxrwx
2019-02-06 22:17
assert.h
3.5
KB
-rwxrwxrwx
2019-02-06 22:17
byteswap.h
1.37
KB
-rwxrwxrwx
2019-02-06 22:17
bzlib.h
6.1
KB
-rw-r--r--
2017-01-29 19:30
clif.h
4.44
KB
-rwxrwxrwx
2016-08-29 17:45
complex.h
3.56
KB
-rwxrwxrwx
2019-02-06 22:17
cpio.h
2.21
KB
-rwxrwxrwx
2019-02-06 22:17
crypt.h
2.21
KB
-rwxrwxrwx
2019-02-06 22:17
ctype.h
11.38
KB
-rwxrwxrwx
2019-02-06 22:17
curses.h
76.93
KB
-rw-r--r--
2017-12-28 10:47
cursesapp.h
6.62
KB
-rw-r--r--
2017-12-28 10:47
cursesf.h
27.2
KB
-rw-r--r--
2017-12-28 10:47
cursesm.h
19.22
KB
-rw-r--r--
2017-12-28 10:47
cursesp.h
8.4
KB
-rw-r--r--
2017-12-28 10:47
cursesw.h
48.37
KB
-rw-r--r--
2017-12-28 10:47
cursslk.h
7.13
KB
-rw-r--r--
2017-12-28 10:47
db.h
120.22
KB
-rw-r--r--
2017-09-24 09:14
db_185.h
5.84
KB
-rw-r--r--
2017-09-24 09:14
dbm.h
1.53
KB
-rw-r--r--
2016-06-07 11:32
dirent.h
12.19
KB
-rwxrwxrwx
2019-02-06 22:17
dlfcn.h
6.85
KB
-rwxrwxrwx
2019-02-06 22:17
elf.h
161.85
KB
-rwxrwxrwx
2019-02-06 22:17
endian.h
2.87
KB
-rwxrwxrwx
2019-02-06 22:17
envz.h
2.8
KB
-rwxrwxrwx
2019-02-06 22:17
err.h
2.16
KB
-rwxrwxrwx
2019-02-06 22:17
errno.h
2.31
KB
-rwxrwxrwx
2019-02-06 22:17
error.h
1.99
KB
-rwxrwxrwx
2019-02-06 22:17
eti.h
2.82
KB
-rw-r--r--
2017-12-28 10:47
etip.h
9.04
KB
-rw-r--r--
2017-12-28 10:47
execinfo.h
1.49
KB
-rwxrwxrwx
2019-02-06 22:17
expat.h
41.34
KB
-rw-r--r--
2022-03-03 10:03
expat_external.h
3.77
KB
-rw-r--r--
2022-03-03 10:03
fcntl.h
9.24
KB
-rwxrwxrwx
2019-02-06 22:17
features.h
12.76
KB
-rwxrwxrwx
2019-02-06 22:17
fenv.h
4.5
KB
-rwxrwxrwx
2019-02-06 22:17
fmtmsg.h
3.16
KB
-rwxrwxrwx
2019-02-06 22:17
fnmatch.h
2.24
KB
-rwxrwxrwx
2019-02-06 22:17
form.h
17.87
KB
-rw-r--r--
2017-12-28 10:47
fstab.h
3.04
KB
-rwxrwxrwx
2019-02-06 22:17
fts.h
8.12
KB
-rwxrwxrwx
2019-02-06 22:17
ftw.h
5.13
KB
-rwxrwxrwx
2019-02-06 22:17
gawkapi.h
30.31
KB
-rwxrwxrwx
2017-01-25 17:06
gconv.h
4.3
KB
-rwxrwxrwx
2019-02-06 22:17
gdbm-ndbm.h
1.96
KB
-rw-r--r--
2016-06-07 11:32
gdbm.h
4.63
KB
-rw-r--r--
2016-06-07 11:32
getopt.h
6.49
KB
-rwxrwxrwx
2019-02-06 22:17
glob.h
6.45
KB
-rwxrwxrwx
2019-02-06 22:17
gnu-versions.h
2.29
KB
-rwxrwxrwx
2019-02-06 22:17
gnumake.h
2.84
KB
-rwxrwxrwx
2017-01-31 17:31
grp.h
6.54
KB
-rwxrwxrwx
2019-02-06 22:17
gshadow.h
4.43
KB
-rwxrwxrwx
2019-02-06 22:17
histedit.h
9.07
KB
-rw-r--r--
2017-01-18 13:23
iconv.h
1.81
KB
-rwxrwxrwx
2019-02-06 22:17
ifaddrs.h
2.77
KB
-rwxrwxrwx
2019-02-06 22:17
inttypes.h
11.61
KB
-rwxrwxrwx
2019-02-06 22:17
jerror.h
14.73
KB
-rw-r--r--
2022-05-31 14:07
jmorecfg.h
14.7
KB
-rw-r--r--
2022-05-31 14:07
jpegint.h
15.22
KB
-rw-r--r--
2016-09-21 01:36
jpeglib.h
48.71
KB
-rw-r--r--
2022-05-31 14:07
langinfo.h
15.55
KB
-rwxrwxrwx
2019-02-06 22:17
lastlog.h
126
B
-rwxrwxrwx
2019-02-06 22:17
libgen.h
1.35
KB
-rwxrwxrwx
2019-02-06 22:17
libintl.h
4.47
KB
-rwxrwxrwx
2019-02-06 22:17
libio.h
16.78
KB
-rwxrwxrwx
2019-02-06 22:17
limits.h
4.38
KB
-rwxrwxrwx
2019-02-06 22:17
link.h
7.04
KB
-rwxrwxrwx
2019-02-06 22:17
locale.h
7.75
KB
-rwxrwxrwx
2019-02-06 22:17
ltdl.h
5.58
KB
-rwxrwxrwx
2016-08-20 14:34
lzma.h
9.51
KB
-rw-r--r--
2022-04-10 10:53
malloc.h
5.87
KB
-rwxrwxrwx
2019-02-06 22:17
math.h
17.94
KB
-rwxrwxrwx
2019-02-06 22:17
mcheck.h
2.38
KB
-rwxrwxrwx
2019-02-06 22:17
memory.h
955
B
-rwxrwxrwx
2019-02-06 22:17
menu.h
11.7
KB
-rw-r--r--
2017-12-28 10:47
mntent.h
3.29
KB
-rwxrwxrwx
2019-02-06 22:17
monetary.h
1.69
KB
-rwxrwxrwx
2019-02-06 22:17
mqueue.h
3.69
KB
-rwxrwxrwx
2019-02-06 22:17
nc_tparm.h
4.05
KB
-rw-r--r--
2017-12-28 10:47
ncurses.h
76.93
KB
-rw-r--r--
2017-12-28 10:47
ncurses_dll.h
4.18
KB
-rw-r--r--
2017-12-28 10:47
netdb.h
27.4
KB
-rwxrwxrwx
2019-02-06 22:17
nl_types.h
1.71
KB
-rwxrwxrwx
2019-02-06 22:17
nss.h
1.83
KB
-rwxrwxrwx
2019-02-06 22:17
obstack.h
20.81
KB
-rwxrwxrwx
2019-02-06 22:17
oniggnu.h
3.35
KB
-rw-r--r--
2021-01-30 22:28
onigposix.h
5.62
KB
-rw-r--r--
2021-01-30 22:28
oniguruma.h
36.19
KB
-rw-r--r--
2021-01-30 22:28
panel.h
3.97
KB
-rw-r--r--
2017-12-28 10:47
paths.h
2.91
KB
-rwxrwxrwx
2019-02-06 22:17
pcre.h
30.96
KB
-rwxrwxrwx
2017-03-21 23:03
pcre_scanner.h
6.45
KB
-rwxrwxrwx
2017-03-21 23:03
pcre_stringpiece.h
6.16
KB
-rwxrwxrwx
2017-03-21 23:03
pcrecpp.h
26.02
KB
-rwxrwxrwx
2017-03-21 23:03
pcrecpparg.h
6.62
KB
-rwxrwxrwx
2017-03-21 23:03
pcreposix.h
5.5
KB
-rwxrwxrwx
2017-03-21 23:03
png.h
139.89
KB
-rw-r--r--
2019-04-18 22:12
pngconf.h
22.31
KB
-rw-r--r--
2019-04-18 22:12
pnglibconf.h
7.21
KB
-rw-r--r--
2019-04-18 22:12
poll.h
22
B
-rwxrwxrwx
2019-02-06 22:17
printf.h
6.54
KB
-rwxrwxrwx
2019-02-06 22:17
pthread.h
40.26
KB
-rwxrwxrwx
2019-02-06 22:17
pty.h
1.53
KB
-rwxrwxrwx
2019-02-06 22:17
pwd.h
5.9
KB
-rwxrwxrwx
2019-02-06 22:17
re_comp.h
962
B
-rwxrwxrwx
2019-02-06 22:17
regex.h
21.53
KB
-rwxrwxrwx
2019-02-06 22:17
regexp.h
1.41
KB
-rwxrwxrwx
2019-02-06 22:17
resolv.h
14.48
KB
-rwxrwxrwx
2019-02-06 22:17
sched.h
4.55
KB
-rwxrwxrwx
2019-02-06 22:17
search.h
5.1
KB
-rwxrwxrwx
2019-02-06 22:17
semaphore.h
2.35
KB
-rwxrwxrwx
2019-02-06 22:17
setjmp.h
3.69
KB
-rwxrwxrwx
2019-02-06 22:17
sgtty.h
1.31
KB
-rwxrwxrwx
2019-02-06 22:17
shadow.h
5.08
KB
-rwxrwxrwx
2019-02-06 22:17
signal.h
11.93
KB
-rwxrwxrwx
2019-02-06 22:17
sodium.h
2
KB
-rw-r--r--
2017-04-16 12:14
spawn.h
6.51
KB
-rwxrwxrwx
2019-02-06 22:17
sqlite3.h
483.06
KB
-rw-r--r--
2020-12-10 14:31
sqlite3ext.h
29.3
KB
-rw-r--r--
2020-12-10 14:31
stab.h
264
B
-rwxrwxrwx
2019-02-06 22:17
stdc-predef.h
2.34
KB
-rwxrwxrwx
2019-02-06 22:17
stdint.h
7.9
KB
-rwxrwxrwx
2019-02-06 22:17
stdio.h
30.76
KB
-rwxrwxrwx
2019-02-06 22:17
stdio_ext.h
2.73
KB
-rwxrwxrwx
2019-02-06 22:17
stdlib.h
31.9
KB
-rwxrwxrwx
2019-02-06 22:17
string.h
22.09
KB
-rwxrwxrwx
2019-02-06 22:17
strings.h
4.51
KB
-rwxrwxrwx
2019-02-06 22:17
stropts.h
2.98
KB
-rwxrwxrwx
2019-02-06 22:17
sudo_plugin.h
7.83
KB
-rw-r--r--
2021-01-23 10:10
syscall.h
25
B
-rwxrwxrwx
2019-02-06 22:17
sysexits.h
5.11
KB
-rwxrwxrwx
2019-02-06 22:17
syslog.h
24
B
-rwxrwxrwx
2019-02-06 22:17
tar.h
3.7
KB
-rwxrwxrwx
2019-02-06 22:17
term.h
38.8
KB
-rw-r--r--
2017-12-28 10:47
term_entry.h
8.05
KB
-rw-r--r--
2017-12-28 10:47
termcap.h
3.39
KB
-rw-r--r--
2017-12-28 10:47
termio.h
214
B
-rwxrwxrwx
2019-02-06 22:17
termios.h
3.51
KB
-rwxrwxrwx
2019-02-06 22:17
tgmath.h
18.23
KB
-rwxrwxrwx
2019-02-06 22:17
thread_db.h
15.64
KB
-rwxrwxrwx
2019-02-06 22:17
tic.h
12.35
KB
-rw-r--r--
2017-12-28 10:47
time.h
13.23
KB
-rwxrwxrwx
2019-02-06 22:17
ttyent.h
2.44
KB
-rwxrwxrwx
2019-02-06 22:17
uchar.h
2.42
KB
-rwxrwxrwx
2019-02-06 22:17
ucontext.h
1.89
KB
-rwxrwxrwx
2019-02-06 22:17
ulimit.h
1.55
KB
-rwxrwxrwx
2019-02-06 22:17
unctrl.h
3.03
KB
-rw-r--r--
2017-12-28 10:47
unistd.h
41.45
KB
-rwxrwxrwx
2019-02-06 22:17
ustat.h
23
B
-rwxrwxrwx
2019-02-06 22:17
utime.h
1.48
KB
-rwxrwxrwx
2019-02-06 22:17
utmp.h
3.15
KB
-rwxrwxrwx
2019-02-06 22:17
utmpx.h
4
KB
-rwxrwxrwx
2019-02-06 22:17
values.h
1.91
KB
-rwxrwxrwx
2019-02-06 22:17
wait.h
22
B
-rwxrwxrwx
2019-02-06 22:17
wchar.h
31.37
KB
-rwxrwxrwx
2019-02-06 22:17
wctype.h
10.87
KB
-rwxrwxrwx
2019-02-06 22:17
wordexp.h
2.44
KB
-rwxrwxrwx
2019-02-06 22:17
xlocale.h
1.65
KB
-rwxrwxrwx
2019-02-06 22:17
zconf.h
15.11
KB
-rw-r--r--
2022-04-02 22:42
zip.h
20.45
KB
-rw-r--r--
2021-12-27 22:03
zlib.h
85.82
KB
-rw-r--r--
2022-04-02 22:42
Save
Rename
/* * Argon2 source code package * * Written by Daniel Dinu and Dmitry Khovratovich, 2015 * * This work is licensed under a Creative Commons CC0 1.0 License/Waiver. * * You should have received a copy of the CC0 Public Domain Dedication * along with this software. If not, see * <http://creativecommons.org/publicdomain/zero/1.0/>. */ #ifndef ARGON2_H #define ARGON2_H #include <stdint.h> #include <stddef.h> #include <limits.h> #if defined(__cplusplus) extern "C" { #endif /* Symbols visibility control */ #ifdef A2_VISCTL #define ARGON2_PUBLIC __attribute__((visibility("default"))) #elif _MSC_VER #define ARGON2_PUBLIC __declspec(dllexport) #else #define ARGON2_PUBLIC #endif /* * Argon2 input parameter restrictions */ /* Minimum and maximum number of lanes (degree of parallelism) */ #define ARGON2_MIN_LANES UINT32_C(1) #define ARGON2_MAX_LANES UINT32_C(0xFFFFFF) /* Minimum and maximum number of threads */ #define ARGON2_MIN_THREADS UINT32_C(1) #define ARGON2_MAX_THREADS UINT32_C(0xFFFFFF) /* Number of synchronization points between lanes per pass */ #define ARGON2_SYNC_POINTS UINT32_C(4) /* Minimum and maximum digest size in bytes */ #define ARGON2_MIN_OUTLEN UINT32_C(4) #define ARGON2_MAX_OUTLEN UINT32_C(0xFFFFFFFF) /* Minimum and maximum number of memory blocks (each of BLOCK_SIZE bytes) */ #define ARGON2_MIN_MEMORY (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */ #define ARGON2_MIN(a, b) ((a) < (b) ? (a) : (b)) /* Max memory size is addressing-space/2, topping at 2^32 blocks (4 TB) */ #define ARGON2_MAX_MEMORY_BITS \ ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1)) #define ARGON2_MAX_MEMORY \ ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS) /* Minimum and maximum number of passes */ #define ARGON2_MIN_TIME UINT32_C(1) #define ARGON2_MAX_TIME UINT32_C(0xFFFFFFFF) /* Minimum and maximum password length in bytes */ #define ARGON2_MIN_PWD_LENGTH UINT32_C(0) #define ARGON2_MAX_PWD_LENGTH UINT32_C(0xFFFFFFFF) /* Minimum and maximum associated data length in bytes */ #define ARGON2_MIN_AD_LENGTH UINT32_C(0) #define ARGON2_MAX_AD_LENGTH UINT32_C(0xFFFFFFFF) /* Minimum and maximum salt length in bytes */ #define ARGON2_MIN_SALT_LENGTH UINT32_C(8) #define ARGON2_MAX_SALT_LENGTH UINT32_C(0xFFFFFFFF) /* Minimum and maximum key length in bytes */ #define ARGON2_MIN_SECRET UINT32_C(0) #define ARGON2_MAX_SECRET UINT32_C(0xFFFFFFFF) #define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0) #define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1) #define ARGON2_FLAG_CLEAR_MEMORY (UINT32_C(1) << 2) #define ARGON2_DEFAULT_FLAGS (ARGON2_FLAG_CLEAR_MEMORY) /* Error codes */ typedef enum Argon2_ErrorCodes { ARGON2_OK = 0, ARGON2_OUTPUT_PTR_NULL = -1, ARGON2_OUTPUT_TOO_SHORT = -2, ARGON2_OUTPUT_TOO_LONG = -3, ARGON2_PWD_TOO_SHORT = -4, ARGON2_PWD_TOO_LONG = -5, ARGON2_SALT_TOO_SHORT = -6, ARGON2_SALT_TOO_LONG = -7, ARGON2_AD_TOO_SHORT = -8, ARGON2_AD_TOO_LONG = -9, ARGON2_SECRET_TOO_SHORT = -10, ARGON2_SECRET_TOO_LONG = -11, ARGON2_TIME_TOO_SMALL = -12, ARGON2_TIME_TOO_LARGE = -13, ARGON2_MEMORY_TOO_LITTLE = -14, ARGON2_MEMORY_TOO_MUCH = -15, ARGON2_LANES_TOO_FEW = -16, ARGON2_LANES_TOO_MANY = -17, ARGON2_PWD_PTR_MISMATCH = -18, /* NULL ptr with non-zero length */ ARGON2_SALT_PTR_MISMATCH = -19, /* NULL ptr with non-zero length */ ARGON2_SECRET_PTR_MISMATCH = -20, /* NULL ptr with non-zero length */ ARGON2_AD_PTR_MISMATCH = -21, /* NULL ptr with non-zero length */ ARGON2_MEMORY_ALLOCATION_ERROR = -22, ARGON2_FREE_MEMORY_CBK_NULL = -23, ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24, ARGON2_INCORRECT_PARAMETER = -25, ARGON2_INCORRECT_TYPE = -26, ARGON2_OUT_PTR_MISMATCH = -27, ARGON2_THREADS_TOO_FEW = -28, ARGON2_THREADS_TOO_MANY = -29, ARGON2_MISSING_ARGS = -30, ARGON2_ENCODING_FAIL = -31, ARGON2_DECODING_FAIL = -32, ARGON2_THREAD_FAIL = -33, ARGON2_DECODING_LENGTH_FAIL = -34, ARGON2_VERIFY_MISMATCH = -35 } argon2_error_codes; /* Memory allocator types --- for external allocation */ typedef int (*allocate_fptr)(uint8_t **memory, size_t bytes_to_allocate); typedef void (*deallocate_fptr)(uint8_t *memory, size_t bytes_to_allocate); /* Argon2 external data structures */ /* ***** * Context: structure to hold Argon2 inputs: * output array and its length, * password and its length, * salt and its length, * secret and its length, * associated data and its length, * number of passes, amount of used memory (in KBytes, can be rounded up a bit) * number of parallel threads that will be run. * All the parameters above affect the output hash value. * Additionally, two function pointers can be provided to allocate and * deallocate the memory (if NULL, memory will be allocated internally). * Also, three flags indicate whether to erase password, secret as soon as they * are pre-hashed (and thus not needed anymore), and the entire memory ***** * Simplest situation: you have output array out[8], password is stored in * pwd[32], salt is stored in salt[16], you do not have keys nor associated * data. You need to spend 1 GB of RAM and you run 5 passes of Argon2d with * 4 parallel lanes. * You want to erase the password, but you're OK with last pass not being * erased. You want to use the default memory allocator. * Then you initialize: Argon2_Context(out,8,pwd,32,salt,16,NULL,0,NULL,0,5,1<<20,4,4,NULL,NULL,true,false,false,false) */ typedef struct Argon2_Context { uint8_t *out; /* output array */ uint32_t outlen; /* digest length */ uint8_t *pwd; /* password array */ uint32_t pwdlen; /* password length */ uint8_t *salt; /* salt array */ uint32_t saltlen; /* salt length */ uint8_t *secret; /* key array */ uint32_t secretlen; /* key length */ uint8_t *ad; /* associated data array */ uint32_t adlen; /* associated data length */ uint32_t t_cost; /* number of passes */ uint32_t m_cost; /* amount of memory requested (KB) */ uint32_t lanes; /* number of lanes */ uint32_t threads; /* maximum number of threads */ uint32_t version; /* version number */ allocate_fptr allocate_cbk; /* pointer to memory allocator */ deallocate_fptr free_cbk; /* pointer to memory deallocator */ uint32_t flags; /* array of bool options */ } argon2_context; /* Argon2 primitive type */ typedef enum Argon2_type { Argon2_d = 0, Argon2_i = 1 } argon2_type; /* Version of the algorithm */ typedef enum Argon2_version { ARGON2_VERSION_10 = 0x10, ARGON2_VERSION_13 = 0x13, ARGON2_VERSION_NUMBER = ARGON2_VERSION_13 } argon2_version; /* * Function that performs memory-hard hashing with certain degree of parallelism * @param context Pointer to the Argon2 internal structure * @return Error code if smth is wrong, ARGON2_OK otherwise */ ARGON2_PUBLIC int argon2_ctx(argon2_context *context, argon2_type type); /** * Hashes a password with Argon2i, producing an encoded hash * @param t_cost Number of iterations * @param m_cost Sets memory usage to m_cost kibibytes * @param parallelism Number of threads and compute lanes * @param pwd Pointer to password * @param pwdlen Password size in bytes * @param salt Pointer to salt * @param saltlen Salt size in bytes * @param hashlen Desired length of the hash in bytes * @param encoded Buffer where to write the encoded hash * @param encodedlen Size of the buffer (thus max size of the encoded hash) * @pre Different parallelism levels will give different results * @pre Returns ARGON2_OK if successful */ ARGON2_PUBLIC int argon2i_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, const uint32_t parallelism, const void *pwd, const size_t pwdlen, const void *salt, const size_t saltlen, const size_t hashlen, char *encoded, const size_t encodedlen); /** * Hashes a password with Argon2i, producing a raw hash by allocating memory at * @hash * @param t_cost Number of iterations * @param m_cost Sets memory usage to m_cost kibibytes * @param parallelism Number of threads and compute lanes * @param pwd Pointer to password * @param pwdlen Password size in bytes * @param salt Pointer to salt * @param saltlen Salt size in bytes * @param hash Buffer where to write the raw hash - updated by the function * @param hashlen Desired length of the hash in bytes * @pre Different parallelism levels will give different results * @pre Returns ARGON2_OK if successful */ ARGON2_PUBLIC int argon2i_hash_raw(const uint32_t t_cost, const uint32_t m_cost, const uint32_t parallelism, const void *pwd, const size_t pwdlen, const void *salt, const size_t saltlen, void *hash, const size_t hashlen); ARGON2_PUBLIC int argon2d_hash_encoded(const uint32_t t_cost, const uint32_t m_cost, const uint32_t parallelism, const void *pwd, const size_t pwdlen, const void *salt, const size_t saltlen, const size_t hashlen, char *encoded, const size_t encodedlen); ARGON2_PUBLIC int argon2d_hash_raw(const uint32_t t_cost, const uint32_t m_cost, const uint32_t parallelism, const void *pwd, const size_t pwdlen, const void *salt, const size_t saltlen, void *hash, const size_t hashlen); /* generic function underlying the above ones */ ARGON2_PUBLIC int argon2_hash(const uint32_t t_cost, const uint32_t m_cost, const uint32_t parallelism, const void *pwd, const size_t pwdlen, const void *salt, const size_t saltlen, void *hash, const size_t hashlen, char *encoded, const size_t encodedlen, argon2_type type, const uint32_t version); /** * Verifies a password against an encoded string * Encoded string is restricted as in validate_inputs() * @param encoded String encoding parameters, salt, hash * @param pwd Pointer to password * @pre Returns ARGON2_OK if successful */ ARGON2_PUBLIC int argon2i_verify(const char *encoded, const void *pwd, const size_t pwdlen); ARGON2_PUBLIC int argon2d_verify(const char *encoded, const void *pwd, const size_t pwdlen); /* generic function underlying the above ones */ ARGON2_PUBLIC int argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen, argon2_type type); /** * Argon2d: Version of Argon2 that picks memory blocks depending * on the password and salt. Only for side-channel-free * environment!! ***** * @param context Pointer to current Argon2 context * @return Zero if successful, a non zero error code otherwise */ ARGON2_PUBLIC int argon2d_ctx(argon2_context *context); /** * Argon2i: Version of Argon2 that picks memory blocks * independent on the password and salt. Good for side-channels, * but worse w.r.t. tradeoff attacks if only one pass is used. ***** * @param context Pointer to current Argon2 context * @return Zero if successful, a non zero error code otherwise */ ARGON2_PUBLIC int argon2i_ctx(argon2_context *context); /** * Verify if a given password is correct for Argon2d hashing * @param context Pointer to current Argon2 context * @param hash The password hash to verify. The length of the hash is * specified by the context outlen member * @return Zero if successful, a non zero error code otherwise */ ARGON2_PUBLIC int argon2d_verify_ctx(argon2_context *context, const char *hash); /** * Verify if a given password is correct for Argon2i hashing * @param context Pointer to current Argon2 context * @param hash The password hash to verify. The length of the hash is * specified by the context outlen member * @return Zero if successful, a non zero error code otherwise */ ARGON2_PUBLIC int argon2i_verify_ctx(argon2_context *context, const char *hash); /* generic function underlying the above ones */ ARGON2_PUBLIC int argon2_verify_ctx(argon2_context *context, const char *hash, argon2_type type); /** * Get the associated error message for given error code * @return The error message associated with the given error code */ ARGON2_PUBLIC const char *argon2_error_message(int error_code); /** * Returns the encoded hash length for the given input parameters * @param t_cost Number of iterations * @param m_cost Memory usage in kibibytes * @param parallelism Number of threads; used to compute lanes * @param saltlen Salt size in bytes * @param hashlen Hash size in bytes * @return The encoded hash length in bytes */ ARGON2_PUBLIC size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, uint32_t parallelism, uint32_t saltlen, uint32_t hashlen); #if defined(__cplusplus) } #endif #endif