libsodium (1.0.19)

(root)/
include/
sodium/
crypto_pwhash.h
       1  #ifndef crypto_pwhash_H
       2  #define crypto_pwhash_H
       3  
       4  #include <stddef.h>
       5  
       6  #include "crypto_pwhash_argon2i.h"
       7  #include "crypto_pwhash_argon2id.h"
       8  #include "export.h"
       9  
      10  #ifdef __cplusplus
      11  # ifdef __GNUC__
      12  #  pragma GCC diagnostic ignored "-Wlong-long"
      13  # endif
      14  extern "C" {
      15  #endif
      16  
      17  #define crypto_pwhash_ALG_ARGON2I13 crypto_pwhash_argon2i_ALG_ARGON2I13
      18  SODIUM_EXPORT
      19  int crypto_pwhash_alg_argon2i13(void);
      20  
      21  #define crypto_pwhash_ALG_ARGON2ID13 crypto_pwhash_argon2id_ALG_ARGON2ID13
      22  SODIUM_EXPORT
      23  int crypto_pwhash_alg_argon2id13(void);
      24  
      25  #define crypto_pwhash_ALG_DEFAULT crypto_pwhash_ALG_ARGON2ID13
      26  SODIUM_EXPORT
      27  int crypto_pwhash_alg_default(void);
      28  
      29  #define crypto_pwhash_BYTES_MIN crypto_pwhash_argon2id_BYTES_MIN
      30  SODIUM_EXPORT
      31  size_t crypto_pwhash_bytes_min(void);
      32  
      33  #define crypto_pwhash_BYTES_MAX crypto_pwhash_argon2id_BYTES_MAX
      34  SODIUM_EXPORT
      35  size_t crypto_pwhash_bytes_max(void);
      36  
      37  #define crypto_pwhash_PASSWD_MIN crypto_pwhash_argon2id_PASSWD_MIN
      38  SODIUM_EXPORT
      39  size_t crypto_pwhash_passwd_min(void);
      40  
      41  #define crypto_pwhash_PASSWD_MAX crypto_pwhash_argon2id_PASSWD_MAX
      42  SODIUM_EXPORT
      43  size_t crypto_pwhash_passwd_max(void);
      44  
      45  #define crypto_pwhash_SALTBYTES crypto_pwhash_argon2id_SALTBYTES
      46  SODIUM_EXPORT
      47  size_t crypto_pwhash_saltbytes(void);
      48  
      49  #define crypto_pwhash_STRBYTES crypto_pwhash_argon2id_STRBYTES
      50  SODIUM_EXPORT
      51  size_t crypto_pwhash_strbytes(void);
      52  
      53  #define crypto_pwhash_STRPREFIX crypto_pwhash_argon2id_STRPREFIX
      54  SODIUM_EXPORT
      55  const char *crypto_pwhash_strprefix(void);
      56  
      57  #define crypto_pwhash_OPSLIMIT_MIN crypto_pwhash_argon2id_OPSLIMIT_MIN
      58  SODIUM_EXPORT
      59  size_t crypto_pwhash_opslimit_min(void);
      60  
      61  #define crypto_pwhash_OPSLIMIT_MAX crypto_pwhash_argon2id_OPSLIMIT_MAX
      62  SODIUM_EXPORT
      63  size_t crypto_pwhash_opslimit_max(void);
      64  
      65  #define crypto_pwhash_MEMLIMIT_MIN crypto_pwhash_argon2id_MEMLIMIT_MIN
      66  SODIUM_EXPORT
      67  size_t crypto_pwhash_memlimit_min(void);
      68  
      69  #define crypto_pwhash_MEMLIMIT_MAX crypto_pwhash_argon2id_MEMLIMIT_MAX
      70  SODIUM_EXPORT
      71  size_t crypto_pwhash_memlimit_max(void);
      72  
      73  #define crypto_pwhash_OPSLIMIT_INTERACTIVE crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE
      74  SODIUM_EXPORT
      75  size_t crypto_pwhash_opslimit_interactive(void);
      76  
      77  #define crypto_pwhash_MEMLIMIT_INTERACTIVE crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE
      78  SODIUM_EXPORT
      79  size_t crypto_pwhash_memlimit_interactive(void);
      80  
      81  #define crypto_pwhash_OPSLIMIT_MODERATE crypto_pwhash_argon2id_OPSLIMIT_MODERATE
      82  SODIUM_EXPORT
      83  size_t crypto_pwhash_opslimit_moderate(void);
      84  
      85  #define crypto_pwhash_MEMLIMIT_MODERATE crypto_pwhash_argon2id_MEMLIMIT_MODERATE
      86  SODIUM_EXPORT
      87  size_t crypto_pwhash_memlimit_moderate(void);
      88  
      89  #define crypto_pwhash_OPSLIMIT_SENSITIVE crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE
      90  SODIUM_EXPORT
      91  size_t crypto_pwhash_opslimit_sensitive(void);
      92  
      93  #define crypto_pwhash_MEMLIMIT_SENSITIVE crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE
      94  SODIUM_EXPORT
      95  size_t crypto_pwhash_memlimit_sensitive(void);
      96  
      97  /*
      98   * With this function, do not forget to store all parameters, including the
      99   * algorithm identifier in order to produce deterministic output.
     100   * The crypto_pwhash_* definitions, including crypto_pwhash_ALG_DEFAULT,
     101   * may change.
     102   */
     103  SODIUM_EXPORT
     104  int crypto_pwhash(unsigned char * const out, unsigned long long outlen,
     105                    const char * const passwd, unsigned long long passwdlen,
     106                    const unsigned char * const salt,
     107                    unsigned long long opslimit, size_t memlimit, int alg)
     108              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     109  
     110  /*
     111   * The output string already includes all the required parameters, including
     112   * the algorithm identifier. The string is all that has to be stored in
     113   * order to verify a password.
     114   */
     115  SODIUM_EXPORT
     116  int crypto_pwhash_str(char out[crypto_pwhash_STRBYTES],
     117                        const char * const passwd, unsigned long long passwdlen,
     118                        unsigned long long opslimit, size_t memlimit)
     119              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     120  
     121  SODIUM_EXPORT
     122  int crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES],
     123                            const char * const passwd, unsigned long long passwdlen,
     124                            unsigned long long opslimit, size_t memlimit, int alg)
     125              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     126  
     127  SODIUM_EXPORT
     128  int crypto_pwhash_str_verify(const char *str,
     129                               const char * const passwd,
     130                               unsigned long long passwdlen)
     131              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     132  
     133  SODIUM_EXPORT
     134  int crypto_pwhash_str_needs_rehash(const char *str,
     135                                     unsigned long long opslimit, size_t memlimit)
     136              __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
     137  
     138  #define crypto_pwhash_PRIMITIVE "argon2i"
     139  SODIUM_EXPORT
     140  const char *crypto_pwhash_primitive(void)
     141              __attribute__ ((warn_unused_result));
     142  
     143  #ifdef __cplusplus
     144  }
     145  #endif
     146  
     147  #endif