Linux server.kiran-academy.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
: 194.233.91.196 | : 216.73.216.216
Cant Read [ /etc/named.conf ]
7.4.32
finalho
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
include /
[ HOME SHELL ]
Name
Size
Permission
Action
GL
[ DIR ]
drwxr-xr-x
ImageMagick-6
[ DIR ]
drwxr-xr-x
X11
[ DIR ]
drwxr-xr-x
apr-1
[ DIR ]
drwxr-xr-x
arpa
[ DIR ]
drwxr-xr-x
asm
[ DIR ]
drwxr-xr-x
asm-generic
[ DIR ]
drwxr-xr-x
bits
[ DIR ]
drwxr-xr-x
c++
[ DIR ]
drwxr-xr-x
curl
[ DIR ]
drwxr-xr-x
drm
[ DIR ]
drwxr-xr-x
editline
[ DIR ]
drwxr-xr-x
elfutils
[ DIR ]
drwxr-xr-x
enchant
[ DIR ]
drwxr-xr-x
et
[ DIR ]
drwxr-xr-x
freetype2
[ DIR ]
drwxr-xr-x
gdbm
[ DIR ]
drwxr-xr-x
ghostscript
[ DIR ]
drwxr-xr-x
gio-unix-2.0
[ DIR ]
drwxr-xr-x
glib-2.0
[ DIR ]
drwxr-xr-x
gnu
[ DIR ]
drwxr-xr-x
gssapi
[ DIR ]
drwxr-xr-x
gssrpc
[ DIR ]
drwxr-xr-x
ijs
[ DIR ]
drwxr-xr-x
imap
[ DIR ]
drwxr-xr-x
jasper
[ DIR ]
drwxr-xr-x
kadm5
[ DIR ]
drwxr-xr-x
krb5
[ DIR ]
drwxr-xr-x
layout
[ DIR ]
drwxr-xr-x
libdb
[ DIR ]
drwxr-xr-x
libdb4
[ DIR ]
drwxr-xr-x
libexslt
[ DIR ]
drwxr-xr-x
libltdl
[ DIR ]
drwxr-xr-x
libpng15
[ DIR ]
drwxr-xr-x
libpq
[ DIR ]
drwxr-xr-x
libxml2
[ DIR ]
drwxr-xr-x
libxslt
[ DIR ]
drwxr-xr-x
linux
[ DIR ]
drwxr-xr-x
lzma
[ DIR ]
drwxr-xr-x
misc
[ DIR ]
drwxr-xr-x
mtd
[ DIR ]
drwxr-xr-x
mutils
[ DIR ]
drwxr-xr-x
mysql
[ DIR ]
drwxr-xr-x
ncurses
[ DIR ]
drwxr-xr-x
ncursesw
[ DIR ]
drwxr-xr-x
net
[ DIR ]
drwxr-xr-x
net-snmp
[ DIR ]
drwxr-xr-x
netash
[ DIR ]
drwxr-xr-x
netatalk
[ DIR ]
drwxr-xr-x
netax25
[ DIR ]
drwxr-xr-x
neteconet
[ DIR ]
drwxr-xr-x
netinet
[ DIR ]
drwxr-xr-x
netipx
[ DIR ]
drwxr-xr-x
netiucv
[ DIR ]
drwxr-xr-x
netpacket
[ DIR ]
drwxr-xr-x
netrom
[ DIR ]
drwxr-xr-x
netrose
[ DIR ]
drwxr-xr-x
nfs
[ DIR ]
drwxr-xr-x
openssl
[ DIR ]
drwxr-xr-x
pgsql
[ DIR ]
drwxr-xr-x
protocols
[ DIR ]
drwxr-xr-x
pspell
[ DIR ]
drwxr-xr-x
python2.7
[ DIR ]
drwxr-xr-x
python3.6m
[ DIR ]
drwxr-xr-x
rdma
[ DIR ]
drwxr-xr-x
readline
[ DIR ]
drwxr-xr-x
rpc
[ DIR ]
drwxr-xr-x
rpcsvc
[ DIR ]
drwxr-xr-x
rpm
[ DIR ]
drwxr-xr-x
sasl
[ DIR ]
drwxr-xr-x
scsi
[ DIR ]
drwxr-xr-x
selinux
[ DIR ]
drwxr-xr-x
sensors
[ DIR ]
drwxr-xr-x
sepol
[ DIR ]
drwxr-xr-x
sodium
[ DIR ]
drwxr-xr-x
sound
[ DIR ]
drwxr-xr-x
sys
[ DIR ]
drwxr-xr-x
uapi
[ DIR ]
drwxr-xr-x
ucd-snmp
[ DIR ]
drwxr-xr-x
unicode
[ DIR ]
drwxr-xr-x
uuid
[ DIR ]
drwxr-xr-x
video
[ DIR ]
drwxr-xr-x
vpx
[ DIR ]
drwxr-xr-x
webp
[ DIR ]
drwxr-xr-x
xcb
[ DIR ]
drwxr-xr-x
xen
[ DIR ]
drwxr-xr-x
FlexLexer.h
6.07
KB
-rw-r--r--
_G_config.h
1.26
KB
-rw-r--r--
a.out.h
4.25
KB
-rw-r--r--
aio.h
7.27
KB
-rw-r--r--
aliases.h
2
KB
-rw-r--r--
alloca.h
1.19
KB
-rw-r--r--
ar.h
1.68
KB
-rw-r--r--
argon2.h
16.23
KB
-rw-r--r--
argp.h
24.75
KB
-rw-r--r--
argz.h
6.96
KB
-rw-r--r--
aspell.h
25.84
KB
-rw-r--r--
assert.h
3.52
KB
-rw-r--r--
buffio.h
3.38
KB
-rw-r--r--
byteswap.h
1.41
KB
-rw-r--r--
bzlib.h
6.1
KB
-rw-r--r--
com_err.h
2.07
KB
-rw-r--r--
complex.h
3.62
KB
-rw-r--r--
cpio.h
2.21
KB
-rw-r--r--
cpufreq.h
5.8
KB
-rw-r--r--
crypt.h
2.22
KB
-rw-r--r--
ctype.h
11.52
KB
-rw-r--r--
curses.h
93.19
KB
-rw-r--r--
cursesapp.h
6.62
KB
-rw-r--r--
cursesf.h
27.05
KB
-rw-r--r--
cursesm.h
19.09
KB
-rw-r--r--
cursesp.h
8.3
KB
-rw-r--r--
cursesw.h
48.24
KB
-rw-r--r--
cursslk.h
7.13
KB
-rw-r--r--
db.h
120.21
KB
-r--r--r--
db_185.h
5.84
KB
-r--r--r--
dbm.h
1.37
KB
-rw-r--r--
dirent.h
12.34
KB
-rw-r--r--
dlfcn.h
6.88
KB
-rw-r--r--
dwarf.h
30.07
KB
-rw-r--r--
ecpg_config.h
1.02
KB
-rw-r--r--
ecpg_config_x86_64.h
714
B
-rw-r--r--
ecpg_informix.h
2.69
KB
-rw-r--r--
ecpgerrno.h
2.48
KB
-rw-r--r--
ecpglib.h
2.54
KB
-rw-r--r--
ecpgtype.h
2.56
KB
-rw-r--r--
elf.h
141.01
KB
-rw-r--r--
endian.h
2.95
KB
-rw-r--r--
envz.h
2.82
KB
-rw-r--r--
err.h
2.18
KB
-rw-r--r--
errno.h
2.33
KB
-rw-r--r--
error.h
2.01
KB
-rw-r--r--
eti.h
2.82
KB
-rw-r--r--
etip.h
9.04
KB
-rw-r--r--
execinfo.h
1.5
KB
-rw-r--r--
expat.h
40.77
KB
-rw-r--r--
expat_external.h
3.29
KB
-rw-r--r--
fcntl.h
9.89
KB
-rw-r--r--
features.h
12.87
KB
-rw-r--r--
fenv.h
4.5
KB
-rw-r--r--
fmtmsg.h
3.18
KB
-rw-r--r--
fnmatch.h
2.27
KB
-rw-r--r--
form.h
17.56
KB
-rw-r--r--
fpu_control.h
3.5
KB
-rw-r--r--
fstab.h
3.04
KB
-rw-r--r--
fts.h
5.17
KB
-rw-r--r--
ftw.h
5.15
KB
-rw-r--r--
gconv.h
5.16
KB
-rw-r--r--
gcrypt-module.h
7.18
KB
-rw-r--r--
gcrypt.h
76.51
KB
-rw-r--r--
gdbm.h
5.75
KB
-rw-r--r--
gelf.h
11.05
KB
-rw-r--r--
getopt.h
6.53
KB
-rw-r--r--
glob.h
6.51
KB
-rw-r--r--
gmp-mparam-x86_64.h
11.25
KB
-rw-r--r--
gmp-mparam.h
2.42
KB
-rw-r--r--
gmp-x86_64.h
81.3
KB
-rw-r--r--
gmp.h
2.24
KB
-rw-r--r--
gmpxx.h
110.49
KB
-rw-r--r--
gnu-versions.h
2.29
KB
-rw-r--r--
gpg-error.h
23.66
KB
-rw-r--r--
grp.h
6.75
KB
-rw-r--r--
gshadow.h
4.43
KB
-rw-r--r--
gssapi.h
181
B
-rw-r--r--
histedit.h
8.98
KB
-rw-r--r--
iconv.h
1.83
KB
-rw-r--r--
ieee754.h
4.81
KB
-rw-r--r--
ifaddrs.h
2.77
KB
-rw-r--r--
inttypes.h
11.61
KB
-rw-r--r--
jconfig.h
1.7
KB
-rw-r--r--
jerror.h
14.4
KB
-rw-r--r--
jmorecfg.h
13.5
KB
-rw-r--r--
jpeglib.h
49.12
KB
-rw-r--r--
kdb.h
60.12
KB
-rw-r--r--
keyutils.h
7.08
KB
-rw-r--r--
krad.h
8.72
KB
-rw-r--r--
krb5.h
402
B
-rw-r--r--
langinfo.h
15.57
KB
-rw-r--r--
lastlog.h
126
B
-rw-r--r--
lber.h
14.95
KB
-rw-r--r--
lber_types.h
1.43
KB
-rw-r--r--
ldap.h
63.46
KB
-rw-r--r--
ldap_cdefs.h
9.24
KB
-rw-r--r--
ldap_features.h
1.77
KB
-rw-r--r--
ldap_schema.h
9.23
KB
-rw-r--r--
ldap_utf8.h
3.39
KB
-rw-r--r--
ldif.h
4.58
KB
-rw-r--r--
libelf.h
19.11
KB
-rw-r--r--
libgen.h
1.37
KB
-rw-r--r--
libintl.h
4.49
KB
-rw-r--r--
libio.h
16.87
KB
-rw-r--r--
libpq-events.h
2.16
KB
-rw-r--r--
libpq-fe.h
20.17
KB
-rw-r--r--
limits.h
4.42
KB
-rw-r--r--
link.h
6.99
KB
-rw-r--r--
locale.h
7.78
KB
-rw-r--r--
ltdl.h
5.58
KB
-rw-r--r--
lzma.h
9.51
KB
-rw-r--r--
malloc.h
6.44
KB
-rw-r--r--
math.h
15.7
KB
-rw-r--r--
mcheck.h
2.4
KB
-rw-r--r--
mcrypt.h
82
B
-rw-r--r--
memory.h
962
B
-rw-r--r--
menu.h
11.67
KB
-rw-r--r--
mntent.h
3.3
KB
-rw-r--r--
monetary.h
1.73
KB
-rw-r--r--
mqueue.h
3.7
KB
-rw-r--r--
nc_tparm.h
4.05
KB
-rw-r--r--
ncurses.h
93.19
KB
-rw-r--r--
ncurses_dll.h
3.83
KB
-rw-r--r--
ndbm.h
2.39
KB
-rw-r--r--
netdb.h
27.46
KB
-rw-r--r--
nl_types.h
1.73
KB
-rw-r--r--
nlist.h
1.56
KB
-rw-r--r--
nss.h
1.85
KB
-rw-r--r--
obstack.h
18.84
KB
-rw-r--r--
oniggnu.h
3.31
KB
-rw-r--r--
onigposix.h
5.77
KB
-rw-r--r--
oniguruma.h
43.69
KB
-rw-r--r--
panel.h
3.97
KB
-rw-r--r--
paths.h
2.91
KB
-rw-r--r--
pcre.h
29.73
KB
-rw-r--r--
pcre_scanner.h
6.45
KB
-rw-r--r--
pcre_stringpiece.h
6.11
KB
-rw-r--r--
pcrecpp.h
25.91
KB
-rw-r--r--
pcrecpparg.h
6.62
KB
-rw-r--r--
pcreposix.h
5.32
KB
-rw-r--r--
pg_config.h
1.01
KB
-rw-r--r--
pg_config_manual.h
9.36
KB
-rw-r--r--
pg_config_os.h
1.03
KB
-rw-r--r--
pg_config_x86_64.h
26.43
KB
-rw-r--r--
pgtypes_date.h
766
B
-rw-r--r--
pgtypes_error.h
530
B
-rw-r--r--
pgtypes_interval.h
1.12
KB
-rw-r--r--
pgtypes_numeric.h
2.17
KB
-rw-r--r--
pgtypes_timestamp.h
1010
B
-rw-r--r--
platform.h
14.01
KB
-rw-r--r--
png.h
113.36
KB
-rw-r--r--
pngconf.h
20.94
KB
-rw-r--r--
pnglibconf.h
6.3
KB
-rw-r--r--
poll.h
22
B
-rw-r--r--
popt.h
16.18
KB
-rw-r--r--
postgres_ext.h
1.74
KB
-rw-r--r--
printf.h
6.56
KB
-rw-r--r--
profile.h
11.87
KB
-rw-r--r--
pthread.h
39.95
KB
-rw-r--r--
pty.h
1.51
KB
-rw-r--r--
pwd.h
5.87
KB
-rw-r--r--
re_comp.h
957
B
-rw-r--r--
recode.h
3.96
KB
-rw-r--r--
recodext.h
25.59
KB
-rw-r--r--
regex.h
21.58
KB
-rw-r--r--
regexp.h
6.89
KB
-rw-r--r--
resolv.h
14.67
KB
-rw-r--r--
sched.h
4.55
KB
-rw-r--r--
search.h
5.11
KB
-rw-r--r--
semaphore.h
2.36
KB
-rw-r--r--
setjmp.h
3.97
KB
-rw-r--r--
sgtty.h
1.33
KB
-rw-r--r--
shadow.h
5.1
KB
-rw-r--r--
signal.h
13.3
KB
-rw-r--r--
slapi-plugin.h
37.45
KB
-rw-r--r--
sodium.h
2.47
KB
-rw-r--r--
spawn.h
6.53
KB
-rw-r--r--
sql3types.h
834
B
-rw-r--r--
sqlca.h
1.25
KB
-rw-r--r--
sqlda-compat.h
1.55
KB
-rw-r--r--
sqlda-native.h
820
B
-rw-r--r--
sqlda.h
315
B
-rw-r--r--
sqlite3.h
340.45
KB
-rw-r--r--
sqlite3ext.h
25.37
KB
-rw-r--r--
stab.h
264
B
-rw-r--r--
stdc-predef.h
1.59
KB
-rw-r--r--
stdint.h
7.94
KB
-rw-r--r--
stdio.h
30.9
KB
-rw-r--r--
stdio_ext.h
2.74
KB
-rw-r--r--
stdlib.h
33.23
KB
-rw-r--r--
string.h
21.75
KB
-rw-r--r--
strings.h
4.55
KB
-rw-r--r--
syscall.h
25
B
-rw-r--r--
sysexits.h
5.11
KB
-rw-r--r--
syslog.h
24
B
-rw-r--r--
tar.h
3.67
KB
-rw-r--r--
tcpd.h
11.48
KB
-rw-r--r--
term.h
38.63
KB
-rw-r--r--
term_entry.h
7.91
KB
-rw-r--r--
termcap.h
3.4
KB
-rw-r--r--
termio.h
214
B
-rw-r--r--
termios.h
3.52
KB
-rw-r--r--
tgmath.h
18.11
KB
-rw-r--r--
thread_db.h
15.65
KB
-rw-r--r--
tic.h
12.35
KB
-rw-r--r--
tidy.h
43.78
KB
-rw-r--r--
tidybuffio.h
3.38
KB
-rw-r--r--
tidyenum.h
28.54
KB
-rw-r--r--
tidyplatform.h
14.01
KB
-rw-r--r--
tiff.h
34.95
KB
-rw-r--r--
tiffconf-64.h
3.35
KB
-rw-r--r--
tiffconf.h
250
B
-rw-r--r--
tiffio.h
22.52
KB
-rw-r--r--
tiffio.hxx
1.66
KB
-rw-r--r--
tiffvers.h
410
B
-rw-r--r--
time.h
13.4
KB
-rw-r--r--
ttyent.h
2.44
KB
-rw-r--r--
uchar.h
2.42
KB
-rw-r--r--
ucontext.h
1.92
KB
-rw-r--r--
ulimit.h
1.55
KB
-rw-r--r--
unctrl.h
3.03
KB
-rw-r--r--
unistd.h
41.78
KB
-rw-r--r--
ustat.h
23
B
-rw-r--r--
utime.h
1.5
KB
-rw-r--r--
utmp.h
3.16
KB
-rw-r--r--
utmpx.h
4.02
KB
-rw-r--r--
values.h
1.92
KB
-rw-r--r--
verto-module.h
6.48
KB
-rw-r--r--
verto.h
18.57
KB
-rw-r--r--
wait.h
22
B
-rw-r--r--
wchar.h
31.37
KB
-rw-r--r--
wctype.h
10.89
KB
-rw-r--r--
wordexp.h
2.47
KB
-rw-r--r--
xlocale.h
1.66
KB
-rw-r--r--
zconf.h
14.92
KB
-rw-r--r--
zlib.h
84.68
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : argon2.h
/* * Argon2 reference source code package - reference C implementations * * Copyright 2015 * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves * * You may use this work under the terms of a Creative Commons CC0 1.0 * License/Waiver or the Apache Public License 2.0, at your option. The terms of * these licenses can be found at: * * - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 * - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 * * You should have received a copy of both of these licenses along with this * software. If not, they may be obtained at the above URLs. */ #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) /* Flags to determine which fields are securely wiped (default = no wipe). */ #define ARGON2_DEFAULT_FLAGS UINT32_C(0) #define ARGON2_FLAG_CLEAR_PASSWORD (UINT32_C(1) << 0) #define ARGON2_FLAG_CLEAR_SECRET (UINT32_C(1) << 1) /* Global flag to determine if we are wiping internal memory buffers. This flag * is defined in core.c and deafults to 1 (wipe internal memory). */ extern int FLAG_clear_internal_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_id = 2 } 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 gives the string representation of an argon2_type. * @param type The argon2_type that we want the string for * @param uppercase Whether the string should have the first letter uppercase * @return NULL if invalid type, otherwise the string representation. */ ARGON2_PUBLIC const char *argon2_type2string(argon2_type type, int uppercase); /* * 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); ARGON2_PUBLIC int argon2id_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 argon2id_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); ARGON2_PUBLIC int argon2id_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); /** * Argon2id: Version of Argon2 where the first half-pass over memory is * password-independent, the rest are password-dependent (on the password and * salt). OK against side channels (they reduce to 1/2-pass Argon2i), and * better with w.r.t. tradeoff attacks (similar to Argon2d). ***** * @param context Pointer to current Argon2 context * @return Zero if successful, a non zero error code otherwise */ ARGON2_PUBLIC int argon2id_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); /** * Verify if a given password is correct for Argon2id 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 argon2id_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, argon2_type type); #if defined(__cplusplus) } #endif #endif
Close