1 #ifndef crypto_pwhash_scryptsalsa208sha256_H 2 #define crypto_pwhash_scryptsalsa208sha256_H 3 4 #include <limits.h> 5 #include <stddef.h> 6 #include <stdint.h> 7 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_scryptsalsa208sha256_BYTES_MIN 16U 18 SODIUM_EXPORT 19 size_t crypto_pwhash_scryptsalsa208sha256_bytes_min(void); 20 21 #define crypto_pwhash_scryptsalsa208sha256_BYTES_MAX \ 22 SODIUM_MIN(SODIUM_SIZE_MAX, 0x1fffffffe0ULL) 23 SODIUM_EXPORT 24 size_t crypto_pwhash_scryptsalsa208sha256_bytes_max(void); 25 26 #define crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN 0U 27 SODIUM_EXPORT 28 size_t crypto_pwhash_scryptsalsa208sha256_passwd_min(void); 29 30 #define crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX SODIUM_SIZE_MAX 31 SODIUM_EXPORT 32 size_t crypto_pwhash_scryptsalsa208sha256_passwd_max(void); 33 34 #define crypto_pwhash_scryptsalsa208sha256_SALTBYTES 32U 35 SODIUM_EXPORT 36 size_t crypto_pwhash_scryptsalsa208sha256_saltbytes(void); 37 38 #define crypto_pwhash_scryptsalsa208sha256_STRBYTES 102U 39 SODIUM_EXPORT 40 size_t crypto_pwhash_scryptsalsa208sha256_strbytes(void); 41 42 #define crypto_pwhash_scryptsalsa208sha256_STRPREFIX "$7$" 43 SODIUM_EXPORT 44 const char *crypto_pwhash_scryptsalsa208sha256_strprefix(void); 45 46 #define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN 32768U 47 SODIUM_EXPORT 48 size_t crypto_pwhash_scryptsalsa208sha256_opslimit_min(void); 49 50 #define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX 4294967295U 51 SODIUM_EXPORT 52 size_t crypto_pwhash_scryptsalsa208sha256_opslimit_max(void); 53 54 #define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN 16777216U 55 SODIUM_EXPORT 56 size_t crypto_pwhash_scryptsalsa208sha256_memlimit_min(void); 57 58 #define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX \ 59 SODIUM_MIN(SIZE_MAX, 68719476736ULL) 60 SODIUM_EXPORT 61 size_t crypto_pwhash_scryptsalsa208sha256_memlimit_max(void); 62 63 #define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE 524288U 64 SODIUM_EXPORT 65 size_t crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(void); 66 67 #define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE 16777216U 68 SODIUM_EXPORT 69 size_t crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(void); 70 71 #define crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE 33554432U 72 SODIUM_EXPORT 73 size_t crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(void); 74 75 #define crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE 1073741824U 76 SODIUM_EXPORT 77 size_t crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(void); 78 79 SODIUM_EXPORT 80 int crypto_pwhash_scryptsalsa208sha256(unsigned char * const out, 81 unsigned long long outlen, 82 const char * const passwd, 83 unsigned long long passwdlen, 84 const unsigned char * const salt, 85 unsigned long long opslimit, 86 size_t memlimit) 87 __attribute__ ((warn_unused_result)); 88 89 SODIUM_EXPORT 90 int crypto_pwhash_scryptsalsa208sha256_str(char out[crypto_pwhash_scryptsalsa208sha256_STRBYTES], 91 const char * const passwd, 92 unsigned long long passwdlen, 93 unsigned long long opslimit, 94 size_t memlimit) 95 __attribute__ ((warn_unused_result)); 96 97 SODIUM_EXPORT 98 int crypto_pwhash_scryptsalsa208sha256_str_verify(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], 99 const char * const passwd, 100 unsigned long long passwdlen) 101 __attribute__ ((warn_unused_result)); 102 103 SODIUM_EXPORT 104 int crypto_pwhash_scryptsalsa208sha256_ll(const uint8_t * passwd, size_t passwdlen, 105 const uint8_t * salt, size_t saltlen, 106 uint64_t N, uint32_t r, uint32_t p, 107 uint8_t * buf, size_t buflen) 108 __attribute__ ((warn_unused_result)); 109 110 SODIUM_EXPORT 111 int crypto_pwhash_scryptsalsa208sha256_str_needs_rehash(const char str[crypto_pwhash_scryptsalsa208sha256_STRBYTES], 112 unsigned long long opslimit, 113 size_t memlimit) 114 __attribute__ ((warn_unused_result)); 115 116 #ifdef __cplusplus 117 } 118 #endif 119 120 #endif 121