nix-archive-1(type directoryentry(namebinnode(type directoryentry(nameargon2node(typeregular executablecontentsELF(44 (ppopopo444``OO8 8 NN```||~~~ QtdRtd~~~/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/ld-linux-armhf.so.3GNU     aBA! !(@H GuP;1 3|}?~|.N=?8Һ_{|fUa<? u +k<9 o 8Di  , cq^ NiwYS~F_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTablepthread_exitstdinputsfreefreadputcharclockstrlenpthread_joinpthread_createmalloc__libc_start_mainstderrfprintfraisesprintfcallocmemsetexplicit_bzero__isoc23_strtoulmemcpystrcmpabortstrncmplibgcc_s.so.1libc.so.6GLIBC_2.25GLIBC_2.34GLIBC_2.38GLIBC_2.4/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib:/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib:/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/gcc/arm-unknown-linux-gnueabihf/11.4.0/../../..(2=Hii Sp    $(,048<@ DH LPTX\`dhl @--oƏʌƏʌƏʌƏʌƏʌxGƏʌxGƏʌxGƏʌƏʌƏʌƏʌƏʌƏʌxƏʌpƏʌhƏʌ`xGƏʌTxGƏʌHƏʌ@xGƏʌ4Əʌ,Əʌ$xGƏʌƏʌƏʌ-O(F@MKhFx-*qH"!h| ( +Y{hO FFF#[F"<$4O LOUFFF " [$`0x-(0F(@P 3 # Kqxh)ѱx)X-(qxm)&-(qxk)Ԁ-(qxt)-(qxp)-(qxl)ѱx)0B@-ZD4Ph " x)/@1B@ZD9F4Ph "B*'4E L+ @S & +Ё FXF( RF)F HF;F F0F()FRFHF  c F(@+@€@ĀF n 0F^0Fp!FF `zF  z+p S0+J 2 F$F(@VF V F@Cx)(/@1B@ZD9F4Ph " BF2'Gx)0B@ZD4Ph "BF24F Zxh*􋮛x+8h%h(F7x)0B@9ZD4Ph "oBAFBF<0Fx0F(L 3 # _F 3 F 0F0F F"#O OUF !F # !FF( IFF4 )FFD ~QFFX xF0FfxF0F^PF0FV(@1B@F4ZDVh0FD퐱F0F<(@#l#i#f#cF|F ho/FFFFF(F< F|  F B Fl FF FFFl.AFF(FXO OjFDOHZht0 0 R/RhpHHB@GpGHHI@GpGH#x##pFkFjB1F8FB!FjckB(F  C k m C #F(FF( F(F((h pGF`F)FpGFF)FpGFF)FpG-AFFkF/@.kjOBAF8Ft)Fj0kkB(F  C k m C F FcF((F< Fo-O "-XـF(FFFFF(Q9F$hF fC# 33F`#F*F!FZ!+ F)F FF0FFjF;FQF()F F!QFo F,oo-Og.PكF0FFFF.F(I!hF UC## 33F / F1F F(FjF#AF8F(1F Fp8FAFoj Foo-Gu-<فF(FFFFF(5!hF C# #(33F('*F8F!F F)F# F0Foo-Og.OكF0FFFFF(H!hF UC# mF / F1F F<(FFjFAF8F(1F F8FAFo F"oo-Gu-:فF(FFFF&F!hF C# (F('*F8F!F F)F{ F0Foo-Og.PكF0FFFFF(I!hF UC## 33F / F1F1 F(FjF#AF8F@(1F F8FAFo Fzoo-Gu-<فF(FFFF~F(5!hF C# #(33eF('*F8F!FB F)F F20Foo-C(׀FFFFNF2F(F,,( $$ĀIF2FhF|F` F(F@ (hF~F(.1FhFF(a)K+@!#FP D2Fc b JB@b!P!BHd!DdA"b!`+Vx( ' gE`cD`'A$b!a` BҲ1\\x@_CB*]]x@CBҲ"'\0\x@CB'\0\x@CB'\0\x@CXB 3'\B0\\B\K@C*Xo"MFFoPoDo$@o=### FF0.kjB9F8F%)F kk B (Fk jm C F FF((F FFF8.kjB9F8Fj)F "kk B(Fkm C AF FF((F` FFEF8.kjB9F8Fj)F "kk B(Fkm C F FGF((F FpF FF(@.1F(F(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFFoppF FO(@F(Ff(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFFpF F(@!(F(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFFpF F(@!(F(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFF#0#(F3S FpG-AF FFF F4F@F9FD(F44F0F/,DF8F4DF%DF ,D Dx`9`9hxh7FihY ObObHca `*B@@ pG-xAF FKkAF FG hH xFF@F!Bo@F0 `pH FF)h),3l[)F Fp@G)F F3l+ Fp@p FF@!Fw"#k "ch w"j o"j g"k _" X"h Ph1hJcl:"ci ?!ibi9"i 1i1i+cl"cj  !jbj@")F>p #a#`Hh+(pG()pG-pOOy?  F h DFObO) DmٸR" * nb  i l   JDQkQ{ 3QKQ[ 2S+S; 1S S B!@C+C;C C R kR {RKR[@D!C C C+C;cEу SEF n  0bb c*bE@C DElF c"F lEHOc b0[h-h3l!F(FG  pOa10+Oa `'h0-h-+!F(F(F|pFhBih z~dk XOaFpi-; Xa,f0A#FpS+Di=k- FK-pO(𻀃iF+i*a!FF(!F(𧀢h*Bz "O +&i65BeiBX"  # EL(`i`HF`QF*`(6DFT LEo @F Fph:O FFTFO ˱_%EXF50B   4B$ Fpi]B iBV 5(в  v2FhBl$oo@Fol(oh+iCh+Qكh+,#*.+cكi+0j+3j+<ٳ?k5Ӄj+;*<в#FA>1J@h@F2 S@# By~1J@LR2S@DKkTA4E`@ Ngd $F L1G N#HILpPQJKRSCcsO:SOSO+cOr3nCJ;sC l$ @ R1ymh@ BM@  $$D`@R< QhZ8,HOhH(@ @~@M@ $OLQ2LB- EEDh"F aD   D!}@^NZ4<r@ X300G G'C#C E@aFZ0,L@( (@L$ `FDL4&FX2 IhtN F@ D x F0 Z,<^3 AOaA!:B " cFB ]@gF|@OLZ(|LL$ cFDLeFF$| P S7@WhBdAb@Z$ E Oi$I )OlL , S8$@G L \FZ |b@ODXDD BBE   S7p C \OGN~[CsC |@Fs@Z OiI)C# ^08hL  C wF`Fz@D@  $GL$ gF`DLdFZ dF  h $$R0 |Xh C"Dt[CsCV@G@Ek@ZLOlL,C# Y4@ @ rFCW@F@ 8 0@NZ,pF6 (FNFwF  Gp Y20lJhOKA Z OA@pN~@D`@OeE%@ Y< 0B @cF^@PQ@Z<2 BL bF@ALaFY3 A  DNhOC A!ZK{IAq  AG  OgG' A ! [9 ZhF A XRByrBrOFF FOLLKOFK_@FvVFrFFrmErH@pHJGwE!D lEN F\( GZb[cPXQYLpUD+F;TkV{X ZHKJ[\^LNPR`bB!#@HL#jK[+ ; rapAx!|jK[+ ; en-OFPFF`+ BFQF D"0 CD0 Djl F!dJ)rbdl4""D HA `L#0+٨uJ  -9Fv%d4## fdK F;F7{5FE` F` ()F !!5OF"@0F@@"(U@F!F@F  ,ۼ0`q` 6F,@-F<F F F,F<  LFļļĜ)F@F(r2CIF@"@F(*F@FK!F@F,E*F0F>!@FO47O44)(F F !!OO0pG!] >-OOFF@FF;A zaZ9O%$ E%D$0G, &/+? G'dBmBF !1Co$o%>?ɲ,CA!C[BMBD ##۲ C+ )hB  FFF O39`#-OJ$$FbB**42B̀+ÀO MF#G@#! A2  CC#C<Bn F ;%?4%?>O ?>>o!o /+o$@?> 4+o!/O'D!G O&  !A+  A AO,A ?CFFFFBѹ/?>?IBRB>4o!o"/+C$ "G ",@A3$@"CC C0 #0O3-OF FF!niohs(-#x$+@F4AFFF F(@#c  0$+0ј0v+,ј0=;(ј 0 )ITFO `E߀Z܀X/0:F *٢EЀ0߀Fc0$+@ŀ0m+@0=;@𻀘 0 *IQFO dE򧀘F0F +يE𖀹0b x,+@Kxt+@x=;@ 0 *|ILFO pErؘpF0F + ١Ecи0kШb#x,+\cxp+Yѣx=;Vє  0 )NI`FO EDZBF0F + ـE2й0>0Cx$+(2(iFkax$+(h2F<#i`(F33Bkd#x oAE?d1B4BDE?o-OFF FF!6F(FҀF(@ʀ,@ˀFG<@F;);VFB@AFB HF" ,@FCFA<hI hFk^hF2FB@BiF@F  ,@FCFA<  hH hFj:hF FBrBiFHF  ,gFCFA<  hIhFjhFFBOBiFXF  ,DFCFA  hKhF*khFFE+iFBHF ) ?)pL@F!F#C$, (paX#00F o0F J##F[CS++00pGF ( LLL !F0c*OpG pG-OFF *()F** `,@b*)F XX(|X$|N- F[Nq@(@ A! Z K A K T@aFO@" |BL? bFGLFaF$xdAADmF!FJ  DFJq@FU@ F| I A|\@<I@Aw F@ 8@ OiI)|L IL ]@bFT@+ hCL$ cFDLFdFd2RAiDYB ! D V ER L H@" CC~#OI I~,>N@ANF&$D$P I D I U@`F G@* LBL? `FGLFHA$L%GmC  F@GJ & '|@ sC|dgFD| <L  DL  OfF&$D$ >>%>3>>>>> >$>>'>>> > >argon2dargon2iargon2idArgon2idArgon2dUnknown error codeThe password does not match the supplied hashSome of encoded parameters are too long or too shortThreading failureDecoding failedEncoding failedMissing argumentsToo many threadsNot enough threadsOutput pointer mismatchThere is no such version of Argon2Argon2_Context context is NULLThe allocate memory callback is NULLThe free memory callback is NULLMemory allocation errorAssociated data pointer is NULL, but ad length is not 0Secret pointer is NULL, but secret length is not 0Salt pointer is NULL, but salt length is not 0Password pointer is NULL, but password length is not 0Too many lanesToo few lanesMemory cost is too largeMemory cost is too smallTime cost is too largeTime cost is too smallSecret is too longSecret is too shortAssociated data is too longAssociated data is too shortSalt is too longSalt is too shortPassword is too longPassword is too shortOutput is too longOutput is too shortOutput pointer is NULLOK$$v=%lu$m=,t=,p=Usage: %s [-h] salt [-i|-d|-id] [-t iterations] [-m log2(memory in KiB) | -k memory in KiB] [-p parallelism] [-l hash length] [-e|-r] [-v (10|13)] Password is read from stdinParameters: salt The salt to use, at least 8 characters -i Use Argon2i (this is the default) -d Use Argon2d instead of Argon2i -id Use Argon2id instead of Argon2i -t N Sets the number of iterations to N (default = %d) -m N Sets the memory usage of 2^N KiB (default %d) -k N Sets the memory usage of N KiB (default %d) -p N Sets parallelism to N threads (default %d) -l N Sets hash output length to N bytes (default %d) -e Output only encoded hash -r Output only the raw bytes of the hash -v (10|13) Argon2 version (defaults to the most recent version, currently %x) -h Print %s usage Error: %s %02xno password readProvided password longer than supported in command line utility-m or -k can only be used oncebad numeric input for -mmissing -m argumentbad numeric input for -km_cost overflowmissing -k argumentbad numeric input for -tmissing -t argumentbad numeric input for -pmissing -p argumentmissing -l argument-i-d-id-e-r-v1013invalid Argon2 versionmissing -v argumentunknown argumentcannot specify multiple Argon2 typescannot provide both -e and -rType: %s Iterations: %u Memory: %u KiB Parallelism: %u salt missingcould not allocate memory for outputcould not allocate memory for hashVerification okHash: Encoded: %s %2.3f seconds `a@aTadataaaaaa b4bXbpbbb cDcTcdcccccccd0dDdXdpddddd```                                         ɼg j;ʄg+rn<6_:OтRQl>+hkAكy!~[;> >>%>3>>>>> >$>>'>>> > >(]  ^~~o F pXooo                         iGCC: (GNU) 11.4.0A4aeabi*7-A A   ".shstrtab.interp.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.ARM.exidx.eh_frame.init_array.fini_array.dynamic.got.data.bss.comment.ARM.attributes O %!o+ 3F;o<HoPW XX` Bppi d  \ohhlMu^^{``pppopo xoxo~~~~xxx 0p5ˀ))))entry(nameetcnode(type directoryentry(name ld.so.cachenode(typeregularcontentsglibc-ld.so.cache1.10 L e&  m2  P  m .   D G t 9   W     p W    8  R   3  a&    s l    i  g $   x= F  # E   z  a" @ 3   % /gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libresolv.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_compat.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libssp.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libgomp.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libubsan.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libasan.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libitm.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libm.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libanl.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libc_malloc_debug.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libpcprofile.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libBrokenLocale.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libmemusage.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_hesiod.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libobjc.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libatomic.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_db.so/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libthread_db.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libcc1.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libstdc++.so/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libasan.so.6/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libm.so.6/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libc.so.6/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libstdc++.so.6/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libobjc.so.4/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/ld-linux-armhf.so.3/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libresolv.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_compat.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_dns.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_files.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libdl.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_hesiod.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnss_db.so.2/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/librt.so.1/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libgcc_s.so.1/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libgomp.so.1/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libubsan.so.1/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libitm.so.1/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libnsl.so.1/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libanl.so.1/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libutil.so.1/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libBrokenLocale.so.1/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libatomic.so.1/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libthread_db.so.1/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libssp.so.0/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libc_malloc_debug.so.0/gnu/store/hqpnggqlr3r9l6v2wpc9s98cfpxqksql-glibc-2.39/lib/libpthread.so.0/gnu/store/zc0labqnpq44i3ysrknr8rhz8kqs6nrk-gcc-11.4.0-lib/lib/libcc1.so.0t!/ldconfig (GNU libc) stable release version 2.39))))entry(nameincludenode(type directoryentry(nameargon2.hnode(typeregularcontentsA/* * 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 #include #include #if defined(__cplusplus) extern "C" { #endif /* Symbols visibility control */ #ifdef A2_VISCTL #define ARGON2_PUBLIC __attribute__((visibility("default"))) #define ARGON2_LOCAL __attribute__ ((visibility ("hidden"))) #elif _MSC_VER #define ARGON2_PUBLIC __declspec(dllexport) #define ARGON2_LOCAL #else #define ARGON2_PUBLIC #define ARGON2_LOCAL #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 defaults 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 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 * @param type The argon2_type that we want the encoded length for * @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 ))))entry(namelibnode(type directoryentry(name libargon2.anode(typeregularcontentsxx! / 0 0 0 0 1028 ` 4HHHHHHHHHHHHHHHHHHHHHH&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d7x7x7x7x7x7x7xQQQUUUUc argon2_type2stringargon2_ctxargon2_hashargon2i_hash_encodedargon2i_hash_rawargon2d_hash_encodedargon2d_hash_rawargon2id_hash_encodedargon2id_hash_rawargon2_verifyargon2i_verifyargon2d_verifyargon2id_verifyargon2d_ctxargon2i_ctxargon2id_ctxargon2_verify_ctxargon2d_verify_ctxargon2i_verify_ctxargon2id_verify_ctxargon2_error_messageargon2_encodedlensecure_wipe_memoryinit_block_valuecopy_blockxor_blockallocate_memoryfree_memoryclear_internal_memoryfinalizeindex_alphafill_memory_blocksvalidate_inputsfill_first_blocksinitial_hashinitializeFLAG_clear_internal_memoryblake2b_init_paramblake2b_initblake2b_init_keyblake2b_updateblake2b_finalblake2bblake2b_longargon2_thread_createargon2_thread_joinargon2_thread_exitdecode_stringencode_stringb64lennumlenfill_segmentargon2.o/ 0 0 0 644 8672 ` ELF(4( FkFjB1F8F!FjckB(F  C k m C #F(FF( F(F((h pG@@)FpG@@)FpG@@)FpG-AFFF/@.kjOBAF8Ft)Fj0kkB(F  C k m C F FF((F Fo-O "-XـF(FFFFF(Q9F$hF fC# 33F`#F*F!F!+ F)F F0FFjF;FQF()F F!QFo Foo-Og.PكF0FFFFF(I!hF UC## 33F / F1F F(FjF#AF8F(1F F8FAFo Foo-Gu-<فF(FFFFF(5!hF C# #(33F('*F8F!F F)F F0Foo-Og.OكF0FFFFF(H!hF UC# F / F1F F(FFjFAF8F(1F F8FAFo Foo-Gu-:فF(FFFFF!hF C# (F('*F8F!F F)F F0Foo-Og.PكF0FFFFF(I!hF UC## 33F / F1F F(FjF#AF8F(1F F8FAFo Foo-Gu-<فF(FFFFF(5!hF C# #(33F('*F8F!F F)F F0Foo-C(׀FFFFFF(F,( $$ĀIF2FhFF` F(F@(hFF(.1FhFF(a)K+@!#FP D2Fc b JB@b!P!BHd!DdA"b!`+Vx( ' gE`cD`'A$b!a` BҲ1\\x@_CB*]]x@CBҲ"'\0\x@CB'\0\x@CB'\0\x@CXB 3'\B0\\B\K@C*Xo"MFFoPoDo$@o=###FF0.kjB9F8F)F kk B (Fk jm C F FF((F FFF8.kjB9F8Fj)F "kk B(Fkm C F FF((F FFF8.kjB9F8Fj)F "kk B(Fkm C F FF((F FpF FF(@.1F(F(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFFoppF F(@F(Ff(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFFpF F(@!(F(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFFpF F(@!(F(@a)K+@!#FP %D2Fc b JB@b!P!BHd!DdA"b!`+eС 5- ,EesDe'A$b!a`[BҲ>\  *CaE4 P *CBҲ)u]*CB u]*CBu]*C]B3Bu]\B\K@C*Xo"pFF#0#(@S @pG-AF FFF @F@FFD(F4F0F,DF8F4DF%DF ,D Dargon2dargon2iargon2idArgon2idArgon2iArgon2dUnknown error codeThe password does not match the supplied hashSome of encoded parameters are too long or too shortThreading failureDecoding failedEncoding failedMissing argumentsToo many threadsNot enough threadsOutput pointer mismatchThere is no such version of Argon2Argon2_Context context is NULLThe allocate memory callback is NULLThe free memory callback is NULLMemory allocation errorAssociated data pointer is NULL, but ad length is not 0Secret pointer is NULL, but secret length is not 0Salt pointer is NULL, but salt length is not 0Password pointer is NULL, but password length is not 0Too many lanesToo few lanesMemory cost is too largeMemory cost is too smallTime cost is too largeTime cost is too smallSecret is too longSecret is too shortAssociated data is too longAssociated data is too shortSalt is too longSalt is too shortPassword is too longPassword is too shortOutput is too longOutput is too shortOutput pointer is NULLOKL|$<`P(@Th$<GCC: (GNU) 11.4.0A4aeabi*7-A A   " ( 0%8*4BM`iV|Qe&<NI\cq%-5|~1 ~ l ^} ^ ^=%]p7>$t$d.LC0.LC1.LC2.LC3.LC4.LC5.LC6.LANCHOR0__aeabi_uidivinitializefill_memory_blocksfinalizeargon2_type2stringargon2_ctxvalidate_inputsargon2_hashmallocmemcpyclear_internal_memoryfreeencode_stringargon2i_hash_encodedargon2i_hash_rawargon2d_hash_encodedargon2d_hash_rawargon2id_hash_encodedargon2id_hash_rawargon2_verifystrlendecode_stringargon2i_verifyargon2d_verifyargon2id_verifyargon2d_ctxargon2i_ctxargon2id_ctxargon2_verify_ctxargon2d_verify_ctxargon2i_verify_ctxargon2id_verify_ctxargon2_error_messageargon2_encodedlennumlenb64len ^ n | /0/0/ 0 /0/0/0  L ^ l        * 6 < l        ( n ~       2 > J P |      T j p       " * 0 \ !f p  "     : R        $ 6 N    "   B/ F0 N/ T0 t/ x0  ! / / / 0 0 / & .   $(,048<@DHLPTX\`dhlptx|.symtab.strtab.shstrtab.rel.text.data.bss.rodata.str1.4.rel.rodata.comment.note.GNU-stack.ARM.attributes4 @| %+02?C@? @8 K0Tdp5$  4E<tcore.o/ 0 0 0 644 4312 ` ELF( 4( x`9`9hxh7Fih ObObca `*B@@ pG-xAF FKkAF FG hH xFF@FBo@F `p@ FF)h),3l[)F Fp@G)F F3l+ Fp@p FF@!F"#k "ch "j "j "k " "h h1hcl:"ci !ibi"i i1icl"cj !jbj@")F>p#a#`@h+(pG()pG-pOOy?  F h DFObO) mٸR" * nb  i l   JDQkQ{ 3QKQ[ 2S+S; 1S S B!@C+C;C C R kR {RKR[@D!C C C+C;cEу SEF n  0bb c*bE@C DElF c"F lE@Oc b0[h-h3l!F(FG  pOa0+Oa `h0-h-+!F(F(FpFhBih z~dk XOaFpi-; Xa,f0A#FpS+Di=k- FK-pO(𻀃iF+i*a!FF(!F(𧀢h*@ "O +&i65BeiBX"  # EL(`i`HF`QF*`(6DFT LEo @F Fph:O FFTFO ˱_%EXF50B   4B$ Fpi]B iBV 5(в  v2FhBl$oo@Fo(oh+iCh+Qكh+,#*.+cكi+0j+3j+<ٳ?k5Ӄj+;*<вEXm} x$tfill_segment_thr.LANCHOR0$dsecure_wipe_memoryexplicit_bzerofill_segmentargon2_thread_exitinit_block_valuememsetcopy_blockmemcpyxor_block__aeabi_uidivallocate_memorymallocfree_memoryfreeblake2b_initblake2b_updateblake2b_finalfinalizeblake2b_long__aeabi_uldivmodindex_alphafill_memory_blockscallocargon2_thread_joinargon2_thread_createvalidate_inputsfill_first_blocksinitial_hashinitializeFLAG_clear_internal_memory * .   /0     * : J X h t          /0P ^/b0r      2 ~  /0    * 0 p    Z /0 /0   $ < D .symtab.strtab.shstrtab.rel.text.data.bss.comment.note.GNU-stack.ARM.attributes48 @ %l+p00p9Ip5@   Yblake2b.o/ 0 0 0 644 6628 ` ELF(4( -O F"B#DhQh2DB#DF@&F(hih5U,U#FA>1J@h@F2 S@# By~1J@LR2S@DKkTA4E`@ Ngd $F L1G N#HILpPQJKRSCcsO:SOSO+cOr3nCJ;sC l$ @ R1ymh@ BM@  $$D`@R< QhZ8,HOhH(@ @~@M@ $OLQ2LB- EEDh"F aD   D!}@^NZ4<r@ X300G G'C#C E@aFZ0,L@( (@L$ `FDL4&FX2 IhtN F@ D x F0 Z,<^3 AOaA!:B " cFB ]@gF|@OLZ(|LL$ cFDLeFF$| P S7@WhBdAb@Z$ E Oi$I )OlL , S8$@G L \FZ |b@ODXDD BBE   S7p C \OGN~[CsC |@Fs@Z OiI)C# ^08hL  C wF`Fz@D@  $GL$ gF`DLdFZ dF  h $$R0 |Xh C"Dt[CsCV@G@Ek@ZLOlL,C# Y4@ @ rFCW@F@ 8 0@NZ,pF6 (FNFwF  Gp Y20lJhOKA Z OA@pN~@D`@OeE%@ Y< 0B @cF^@PQ@Z<2 BL bF@ALaFY3 A  DNhOC A!ZK{IAq  AG  OgG' A ! [9 ZhF A XRByrBrOFF FOLLKOFK_@FvVFrFFrmErH@pHJGwE!D lEN F\( GZb[cPXQYLpUD+F;TkV{X ZHKJ[\^LNPR`bB!#@HL#jK[+ ; rapAx!|jK[+ ; e-OFPFF`+ BFQF D0 CD0 Djl F!dJ)rbdl4""D HA `L#0+٨uJ  -9Fv%d4## fdK F;F7{5FE` F` ()F !!5OF"@0F@@"(U@F!F@F  ,ۼ0`q` 6F,@-F<F F F,F<  LFļļĜ)F@F(r2CIF@"@F(*F@F!F@F,E*F0F>!@FO47O44                                         ɼg j;ʄg+rn<6_:OтRQl>+hkAكy!~[GCC: (GNU) 11.4.0A4aeabi*7-A A   "8<      ) +2 ?U 8f u  $t.LANCHOR0$dmemcpyblake2b_init_parammemsetblake2b_initclear_internal_memoryblake2b_init_keyblake2b_updateblake2b_finalblake2bblake2b_long`/d08 \ z D    r          . z    H p z       , :    . R \ l z .symtab.strtab.shstrtab.rel.text.data.bss.rodata.comment.note.GNU-stack.ARM.attributes4 @PP %+0@80AQp5Hp  athread.o/ 0 0 0 644 956 ` ELF(4( )(F F !!O0pG! GCC: (GNU) 11.4.0A4aeabi*7-A A   "(;H%[$targon2_thread_createpthread_createargon2_thread_joinpthread_joinargon2_thread_exitpthread_exit( .symtab.strtab.shstrtab.rel.text.data.bss.comment.note.GNU-stack.ARM.attributes4, @%`+`00`9sIps5  (hYencoding.o/ 0 0 0 644 3392 ` ELF(` 4( -OOFF@FF;A zaZ9O%$ E%D$0G, &/+? G'dBmBF !1Co$o%>?ɲ,CA!C[BMBD ##۲ C+ )hB  FFF O39`#-OJ$$FbB**42B̀+ÀO MF#G@#! A2  CC#C<Bn F ;%?4%?>O ?>>o!o /+o$@?> 4+o!/O'D!G O&  !A+  A AO,A ?CFFFFBѹ/?>?IBRB>4o!o"/+C$ "G ",@A3$@"CC C0 #0O3-OF FF!nioh(-#x$+@F4AFFF F(@#c  0$+0ј0v+,ј0=;(ј 0 )ITFO `E߀Z܀X/0:F *٢EЀ0߀Fc0$+@ŀ0m+@0=;@𻀘 0 *IQFO dE򧀘F0F +يE𖀹0b x,+@Kxt+@x=;@ 0 *|ILFO pErؘpF0F + ١Ecи0kШb#x,+\cxp+Yѣx=;Vє  0 )NI`FO EDZBF0F + ـE2й0>0Cx$+(2(iFkax$+(h2F<#i`(F33Bkd#x oAE?d1B4BDE?o-OFF FF!F(FҀF(@ʀ,@ˀ@<@F;);FB@AFB HF ,@@@<hI hFkhFFB@BiF@F  ,@@@<  hH hFjhFFBrBiFHF  ,g@@<  hIhFjhFFBOBiFXF  ,D@@  hKhF*khFFE+iFBHF ) ?)pL@F!F#C$, (paX#00F o0F J##F[CS++00pGF ( LLL !F0c*OpG pG$$v=%lu$m=,t=,p=GCC: (GNU) 11.4.0A4aeabi*7-A A   "   %|3FMUeQsz%&M&$t$d.LC0.LC1.LC2.LC3.LC4.LC5decode_stringargon2_type2stringstrlenstrncmpvalidate_inputsencode_stringmemcpysprintfb64lennumlen    ` h /0  /0/0   /0 /0" ( < H/L0P/T0h n  /0/0   .symtab.strtab.shstrtab.rel.text.data.bss.rodata.str1.4.comment.note.GNU-stack.ARM.attributes4t @ 0 %+02?0HXp50  8  href.o/ 0 0 0 644 5424 ` ELF(x4( -OFF *()F** `,@b*)F XX(|X$|N- F[Nq@(@ A! Z K A K T@aFO@" |BL? bFGLFaF$xdAADmF!FJ  DFJq@FU@ F| I A|\@<I@Aw F@ 8@ OiI)|L IL ]@bFT@+ hCL$ cFDLFdFd2RAiDYB ! D V ER L H@" CC~#OI I~,>N@ANF&$D$P I D I U@`F G@* LBL? `FGLFHA$L%GmC  F@GJ & '|@ sC|dgFD| <L  DL  OfF&$D$>PPP^nn|_ooQtdRtd^nn%*%    (& ! '$#)"1pHEJ0!"#$)\8l&qCB bT.YiN jc[J3lIDK >>|>f>h>-AFFYF(1/A.kjOBAF8Ft)Fj08FkkB(F  C k m C F F8FMF((F9F Fo-O "-YـF(FFFFF(R9F$ fnF0FC# 33F`#F*F!F|!+ F)F FfXFF2F;FQF()F F!QFo FNo o O $$L O $D$L~  $$h  $D$P O $$L8 O $D$L !!ݽ!ٽp FFF(@Q)K+@! #FP D*Fc b JcE@b!P!BHd!DdA"b!`+dС6.ff'.3DEA$b!a`B Ҳ>\  2CaE4 ` 2CBҲ)]2CB ]2CB]2C^B3B]\B\K@C*Xo"pFF-C(<ЈFFFF.F F(F,( $$'FIF2F@FF` F(F@h2F!F@FFoo$o#Ӽ#ϼ#˼"""#0#(30-rolifc`]ZWTQN'$!B?<96{xu*KHE7HxDpG6HxDpG6HxDpG5HxDpG5HxDpG4HxDpG4HxDpG3HxDpG3HxDpG2HxDpG2HxDpG1HxDpG1HxDpG0HxDpG0HxDpG/HxDpG/HxDpG.HxDpG.HxDpG-HxDpG-HxDpG,HxDpG,HxDpG+HxDpG+HxDpG*HxDpG*HxDpG)HxDpG)HxDpG(HxDpG(HxDpG'HxDpG'HxDpG&HxDpG&HxDpG%HxDpG%HxDpG99999::;9<<=<:N:`:v::z999:*;\;n;;;;;;<<"<,<z999<-A FF!FFF@F8FD(F34F0F.,DF8F4DF%DF ,D Dx`9`9hxh7FihU ObObca `*B@@ pG-xAF FKkAF FG hH xFF@F}Bo@Fj `p FMF}D)h),3l[)F Fp@G)F F3l+ Fp@)V-pC FF@!(FFd#k"1F(Fuch"1F(Fnj"1F(Fgj"1F(F`k"1F(FY"1F(FRh1F"(FKh1h(FEcl8ci1F"(F;!ibi(F5i1F"(F.i1i(F(clcj1F"(F!jbj(F@"AF(F>p#a#`K{Dh+(pGfU()pG-pOOz? m hFDFObO*(F pٹV" + nb  j! `  RD\k\{ 3\K\[ 2S+S; S S B!@C+C;C C R kR {RKR[@D!C C C+C;B[ErDF n!D1b+Fb c*B@C tDE  idFKF bEBtOcDJF0ch5h@0!F(FG mpOa(F20+OaHF)h05h-+!F(F(FSpFhBih z~dk XOaQFpi-; Xa,f0A#7FpS+Di=k- FK-pO(𼀃iF+i*b!FJF(!F@(𨀢h*P"DO +&i65BeiBZ" # EL(`i`@F`YF*`(6TFT DEo PF F ph:O FFTFO ˱_%EXF 5$0B   4B$ F pi]B iBV 5(в  t2FhBj$ooPFok(oh+iCh+Qكh+,#*.+cكi+0j+3j+<ٳ?k5Ӄj+;*<в4El@FJag1 GL2 NOF4Ht@KkTA4I`@LpPQJKRSCcsO:SOSO+c Or3nC J;sCNgb " @r"& @ ^2 dh@ D  A ^6`JhZ8LOlL, @ @u@T@/ GG$ DD/F^1 I vhDR A u@[ ! A Z4^1pZ0 FObB"@ @}@t@OL^1`LA$ [DEIh%FA 6Z,,D   FCZ,L(H@^4k@RhGB"C#C OFFH$ Z( D LFFgFxE| , ^0^h8CHZ$C C@ Dg@OiI)?G ' ^8F G s@OFZ FF C CD  L ^0pB OBHx@@p@ ~@ZEh@OkK+@ ^1ypL  @ AFK@gF~@ ZGLgF6 \FLfF` E^1d qXh FUEusICsCDc@Z\OlL,C#^5PM@ AFCO@n@(8 Z@H6 EF FHRFFFF p ^10RhhOIF Hx`@p@Z >GZx@OeE%@ ^< 0B cF@\@Q@Z<" HBL bF8ALdFD`@M@ ^3@Vh  B!OC FFN N N,N?ɲ,CA!C[BMBD ##۲ C+ )hB  FFF O39`#-OJ$$FbB**42B̀+ÀO MF#G@#! A2  CC#C<Bn F ;%?4%?>O ?>>o!o /+o$@?> 4+o!/O'D!G O&  !A+  A AO,A ?CFFFFBѹ/?>?IBRB>4o!o"/+C$ "G ",@A3$@"CC C0 #0O3-OF FF!nioh(.#x$+@F4AFFF F(@#c  0$+0ј0v+,ј0=;(ј 0 )ITFO `EZ݀X/0:F *٢Eр0Fc0$+@ƀ0m+@0=;@𼀘 0 *IQFO dE򨀘F0F +يE𗀹0b x,+@Kxt+@x=;@ 0 *}ILFO pEsؘqF0F + ١Edи0lШb#x,+]cxp+Zѣx=;Wє  0 )OI`FO EEZCF0F + ـE3й0?0Cx$+)2(i!FFkax$+!F(h2F<#i`(F33Bkd#x oAE?c1B4BDE?o-OFF FF!F(FF(@,@`K<@F{D&;FB@AFB 0F^ ,@TKX(|X$|N- F[Nq@(@ A! Z K A K T@aFO@" |BL? bFGLFaF$xdAADmF!FJ  DFJq@FU@ F| I A|\@<I@Aw F@ 8@ OiI)|L IL ]@bFT@+ hCL$ cFDLFdFd2RAiDYB ! D V ER L H@" CC~#OI I~,>N@ANF&$D$P I D I U@`F G@* LBL? `FGLFHA$L%GmC  F@GJ & '|@ sC|dgFD| <L  DL  OfF&$D$ >>%>3>>>>> >$>>'>>> > >argon2dargon2iargon2idArgon2idArgon2iArgon2dOKOutput pointer is NULLOutput is too shortOutput is too longPassword is too shortPassword is too longSalt is too shortSalt is too longAssociated data is too shortAssociated data is too longSecret is too shortSecret is too longTime cost is too smallTime cost is too largeMemory cost is too smallMemory cost is too largeToo few lanesToo many lanesPassword pointer is NULL, but password length is not 0Salt pointer is NULL, but salt length is not 0Secret pointer is NULL, but secret length is not 0Associated data pointer is NULL, but ad length is not 0Memory allocation errorThe free memory callback is NULLThe allocate memory callback is NULLArgon2_Context context is NULLThere is no such version of Argon2Output pointer mismatchNot enough threadsToo many threadsMissing argumentsEncoding failedDecoding failedThreading failureSome of encoded parameters are too long or too shortThe password does not match the supplied hashUnknown error code$$v=%lu$m=,t=,p=                                         ɼg j;ʄg+rn<6_:OтRQl>+hkAكy!~[;> >>%>3>>>>> >$>>'>>> > >4=KU  Nnn4ox4 m p  8o ooB oo                    lpGCC: (GNU) 11.4.0A2aeabi(7-A A   ".shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.ARM.exidx.eh_frame.init_array.fini_array.dynamic.got.data.bss.comment.ARM.attributes44D oxx 44m%oB B T2o @A  8J B  S N  $Y00=_NNePPmpXX xXXn^n^o_p`llpl`tpt`0t`p`3`))entry(name pkgconfignode(type directoryentry(name libargon2.pcnode(typeregularcontentsm# libargon2 info for pkg-config prefix=/gnu/store/0225a4wn8walah8slczq2mygjbp09g2q-argon2-20190702 exec_prefix=${prefix} libdir=${prefix}/lib includedir=${prefix}/include Name: libargon2 Description: Development libraries for libargon2 Version: 20190702 Libs: -L${libdir} -largon2 -lrt -ldl Cflags: -I${includedir} URL: https://github.com/P-H-C/phc-winner-argon2 ))))))entry(namesharenode(type directoryentry(namedocnode(type directoryentry(nameargon2-20190702node(type directoryentry(nameLICENSEnode(typeregularcontentsEArgon2 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 The terms of the licenses are reproduced below. -------------------------------------------------------------------------------- Creative Commons Legal Code CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. -------------------------------------------------------------------------------- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. )))))))))