"Fossies" - the Fresh Open Source Software Archive

Member "cryptsetup-2.4.3/lib/crypto_backend/argon2/encoding.h" (13 Jan 2022, 2091 Bytes) of package /linux/misc/cryptsetup-2.4.3.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "encoding.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Argon2 reference source code package - reference C implementations
    3  *
    4  * Copyright 2015
    5  * Daniel Dinu, Dmitry Khovratovich, Jean-Philippe Aumasson, and Samuel Neves
    6  *
    7  * You may use this work under the terms of a Creative Commons CC0 1.0
    8  * License/Waiver or the Apache Public License 2.0, at your option. The terms of
    9  * these licenses can be found at:
   10  *
   11  * - CC0 1.0 Universal : https://creativecommons.org/publicdomain/zero/1.0
   12  * - Apache 2.0        : https://www.apache.org/licenses/LICENSE-2.0
   13  *
   14  * You should have received a copy of both of these licenses along with this
   15  * software. If not, they may be obtained at the above URLs.
   16  */
   17 
   18 #ifndef ENCODING_H
   19 #define ENCODING_H
   20 #include "argon2.h"
   21 
   22 #define ARGON2_MAX_DECODED_LANES UINT32_C(255)
   23 #define ARGON2_MIN_DECODED_SALT_LEN UINT32_C(8)
   24 #define ARGON2_MIN_DECODED_OUT_LEN UINT32_C(12)
   25 
   26 /*
   27 * encode an Argon2 hash string into the provided buffer. 'dst_len'
   28 * contains the size, in characters, of the 'dst' buffer; if 'dst_len'
   29 * is less than the number of required characters (including the
   30 * terminating 0), then this function returns ARGON2_ENCODING_ERROR.
   31 *
   32 * on success, ARGON2_OK is returned.
   33 */
   34 int encode_string(char *dst, size_t dst_len, argon2_context *ctx,
   35                   argon2_type type);
   36 
   37 /*
   38 * Decodes an Argon2 hash string into the provided structure 'ctx'.
   39 * The only fields that must be set prior to this call are ctx.saltlen and
   40 * ctx.outlen (which must be the maximal salt and out length values that are
   41 * allowed), ctx.salt and ctx.out (which must be buffers of the specified
   42 * length), and ctx.pwd and ctx.pwdlen which must hold a valid password.
   43 *
   44 * Invalid input string causes an error. On success, the ctx is valid and all
   45 * fields have been initialized.
   46 *
   47 * Returned value is ARGON2_OK on success, other ARGON2_ codes on error.
   48 */
   49 int decode_string(argon2_context *ctx, const char *str, argon2_type type);
   50 
   51 /* Returns the length of the encoded byte stream with length len */
   52 size_t b64len(uint32_t len);
   53 
   54 /* Returns the length of the encoded number num */
   55 size_t numlen(uint32_t num);
   56 
   57 #endif