xp^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~BSD3 hvr@gnu.orgUnsafed!Compute size of encoded hash size_t argon2_encodedlen(uint32_t t_cost, uint32_t m_cost, uint32_t parallelism, uint32_t saltlen, uint32_t hashlen, argon2_type type); Parameters t_costNumber of iterationsm_cost%Sets memory usage to m_cost kibibytes parallelism#Number of threads and compute lanessaltPointer to saltsaltlenSalt size in byteshashlen#Desired length of the hash in bytestypeVariant of Argon2 hashVerify encoded hash qint argon2_verify(const char *encoded, const void *pwd, const size_t pwdlen, argon2_type type); Parameters encoded'Pointer to zero-terminated encoded hashpwdPointer to passwordpwdlenPassword size in bytestypeVariant of Argon2 hashCompute Argon2 hash |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); Parameters t_costNumber of iterationsm_cost%Sets memory usage to m_cost kibibytes parallelism#Number of threads and compute lanespwdPointer to passwordpwdlenPassword size in bytessaltPointer to saltsaltlenSalt size in byteshash"Buffer where to write the raw hashhashlen#Desired length of the hash in bytesencoded&Buffer where to write the encoded hash encodedlen6Size of the buffer (thus max size of the encoded hash)typeVariant of Argon2 hashversionVersion of Argon2 specificationC  !"#$%&'()*+,-./0123456789:;<=>?@ABCBA@?>=<;:9876543210/.-,+*)('&%$#"!  BSD3 hvr@gnu.org Trustworthy"#16]m8C*Returned status code for Argon2 functions.Not all iR can necessarily be used to compute hashes. If you supply unsupported or invalid i" (or hashing otherwise fails) an C1 value will be returned to describe the failure.Note that this enumeration contains some status codes which are not expected to be returned by the operation provided by the Haskell API.DOK (operation succeeded)EOutput pointer is NULLFOutput is too shortGOutput is too longHPassword is too shortIPassword is too longJSalt is too shortKSalt is too longLAssociated data is too shortMAssociated data is too longNSecret is too shortOSecret is too longPTime cost is too smallQTime cost is too largeRMemory cost is too smallSMemory cost is too largeT Too few lanesUToo many lanesVPassword pointer is NULL, but password length is not 0WSalt pointer is NULL, but salt length is not 0XSecret pointer is NULL, but secret length is not 0YAssociated data pointer is NULL, but ad length is not 0ZMemory allocation error[The free memory callback is NULL\ The allocate memory callback is NULL]Argon2_Context context is NULL^"There is no such version of Argon2_Output pointer mismatch`Not enough threadsaToo many threadsbMissing argumentscEncoding faileddDecoding failedeThreading failuref4Some of encoded parameters are too long or too shortg-The password does not match the supplied hashh*Internal error or unrecognized status codei\Parameters that can be adjusted to change the runtime performance of the hashing. See also x.kThe time cost, which defines the amount of computation realized and therefore the execution time, given in number of iterations. <= k <=  l:The memory cost, which defines the memory usage, given in  &https://en.wikipedia.org/wiki/Kibibyte kibibytes.max  (8 * m) <= l <= mCA parallelism degree, which defines the number of parallel threads. <= m <=  &&  <= m <= nWhich variant of Argon2 to use.o5Which version of Argon2 to use for generating hashes.p+Desired length of hash expressed in octets.q Version of the Argon2 algorithm.rVersion 1.0 (deprecated)sVersion 1.3 (See  @https://www.ietf.org/mail-archive/web/cfrg/current/msg07948.htmlthis announcment for more details)txWhich variant of Argon2 to use. You should choose the variant that is most applicable to your intention to hash inputs.uArgon2i uses data-independent memory access, which is preferred for password hashing and password-based key derivation. Argon2i is slower as it makes more passes over the memory to protect from tradeoff attacks.vArgon2d is faster and uses data-depending memory access, which makes it suitable for cryptocurrencies and applications with no threats from side-channel timing attacks.wArgon2id works as Argon2i for the first half of the first iteration over the memory, and as Argon2d for the rest, thus providing both side-channel attack protection and brute-force cost savings due to time-memory tradeoffs.xA set of default i, taken from the argon2 executable. x :: i x = i { k = 3 , l( = 2 ^ 12 -- 4 MiB , m = 1 , n = u , o = s , p* = 2 ^ 5 -- 32 bytes } dFor more information on how to select these parameters for your application, see section 6.4 of the  Ghttps://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdfArgon2 specification.y(Encode a password with a given salt and i0 and produce a binary stream of bytes (of size p).z(Encode a password with a given salt and i2 and produce a textual encoding according to the  Ehttps://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.mdPHC string format of the result.Use { to verify.{hVerify that a given password could result in a given hash output. Automatically determines the correct i' based on the encoded hash (using the  Ehttps://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.mdPHC string format as produced by z).Returns DU on successful verification. If decoding is successful but the password mismatches, g1 is returned; if decoding fails, the respective C code is returned.y=Options pertaining to how expensive the hash is to calculate.9The password to hash. Must be less than 4294967295 bytes.AThe salt to use when hashing. Must be less than 4294967295 bytes.@The un-encoded password hash (or error code in case of failure).z=Options pertaining to how expensive the hash is to calculate.9The password to hash. Must be less than 4294967295 bytes.AThe salt to use when hashing. Must be less than 4294967295 bytes.=The encoded password hash (or error code in case of failure).9CdDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijklmnopqrstuvwxyz{9yz{ijklmnoptuvwqrsxCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghC%DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnnopqrstuvwxyz{|}~%argon2-1.3.0.1-4Fp2iuOSUDL16InZj6Q0esCrypto.Argon2.FFI Crypto.Argon2FFIARGON_MIN_THREADSArgon2_version Argon2_typeargon2_encodedlen argon2_verify argon2_hashARGON2_MAX_SECRETARGON2_MIN_SECRETARGON2_MAX_SALT_LENGTHARGON2_MIN_SALT_LENGTHARGON2_MAX_AD_LENGTHARGON2_MIN_AD_LENGTHARGON2_MAX_PWD_LENGTHARGON2_MIN_PWD_LENGTHARGON2_MAX_TIMEARGON2_MIN_TIMEARGON2_MAX_MEMORYARGON2_MAX_MEMORY_BITSARGON2_MIN_MEMORYARGON2_MAX_OUTLENARGON2_MIN_OUTLENARGON2_SYNC_POINTSARGON2_MAX_THREADSARGON2_MIN_THREADSARGON2_MAX_LANESARGON2_MIN_LANESARGON2_VERIFY_MISMATCHARGON2_DECODING_LENGTH_FAILARGON2_THREAD_FAILARGON2_DECODING_FAILARGON2_ENCODING_FAILARGON2_MISSING_ARGSARGON2_THREADS_TOO_MANYARGON2_THREADS_TOO_FEWARGON2_OUT_PTR_MISMATCHARGON2_INCORRECT_TYPEARGON2_INCORRECT_PARAMETERARGON2_ALLOCATE_MEMORY_CBK_NULLARGON2_FREE_MEMORY_CBK_NULLARGON2_MEMORY_ALLOCATION_ERRORARGON2_AD_PTR_MISMATCHARGON2_SECRET_PTR_MISMATCHARGON2_SALT_PTR_MISMATCHARGON2_PWD_PTR_MISMATCHARGON2_LANES_TOO_MANYARGON2_LANES_TOO_FEWARGON2_MEMORY_TOO_MUCHARGON2_MEMORY_TOO_LITTLEARGON2_TIME_TOO_LARGEARGON2_TIME_TOO_SMALLARGON2_SECRET_TOO_LONGARGON2_SECRET_TOO_SHORTARGON2_AD_TOO_LONGARGON2_AD_TOO_SHORTARGON2_SALT_TOO_LONGARGON2_SALT_TOO_SHORTARGON2_PWD_TOO_LONGARGON2_PWD_TOO_SHORTARGON2_OUTPUT_TOO_LONGARGON2_OUTPUT_TOO_SHORTARGON2_OUTPUT_PTR_NULL ARGON2_OKARGON2_VERSION_NUMBERARGON2_VERSION_13ARGON2_VERSION_10 Argon2_idArgon2_iArgon2_d Argon2StatusArgon2OkArgon2OutputPtrNullArgon2OutputTooShortArgon2OutputTooLongArgon2PwdTooShortArgon2PwdTooLongArgon2SaltTooShortArgon2SaltTooLongArgon2AdTooShortArgon2AdTooLongArgon2SecretTooShortArgon2SecretTooLongArgon2TimeTooSmallArgon2TimeTooLargeArgon2MemoryTooLittleArgon2MemoryTooMuchArgon2LanesTooFewArgon2LanesTooManyArgon2PwdPtrMismatchArgon2SaltPtrMismatchArgon2SecretPtrMismatchArgon2AdPtrMismatchArgon2MemoryAllocationErrorArgon2FreeMemoryCbkNullArgon2AllocateMemoryCbkNullArgon2IncorrectParameterArgon2IncorrectTypeArgon2OutPtrMismatchArgon2ThreadsTooFewArgon2ThreadsTooManyArgon2MissingArgsArgon2EncodingFailArgon2DecodingFailArgon2ThreadFailArgon2DecodingLengthFailArgon2VerifyMismatchArgon2InternalError HashOptionshashIterations hashMemoryhashParallelism hashVariant hashVersion hashLength Argon2VersionArgon2Version10Argon2Version13 Argon2VariantArgon2iArgon2dArgon2iddefaultHashOptionshash hashEncoded verifyEncoded$fNFDataArgon2Variant$fNFDataArgon2Version$fNFDataHashOptions$fExceptionArgon2Status$fNFDataArgon2Status$fEqArgon2Variant$fOrdArgon2Variant$fReadArgon2Variant$fShowArgon2Variant$fBoundedArgon2Variant$fGenericArgon2Variant$fEnumArgon2Variant$fEqArgon2Version$fOrdArgon2Version$fReadArgon2Version$fShowArgon2Version$fBoundedArgon2Version$fGenericArgon2Version$fEnumArgon2Version$fEqHashOptions$fOrdHashOptions$fReadHashOptions$fShowHashOptions$fBoundedHashOptions$fGenericHashOptions$fEqArgon2Status$fOrdArgon2Status$fReadArgon2Status$fShowArgon2Status$fEnumArgon2Status$fBoundedArgon2Status