#include "passwordbasedauthentication.h"
#include "authutils.c"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <crypt.h>
Go to the source code of this file.
|
| static int | is_prefix_supported (const char *id) |
| | Check if a prefix is supported.
|
| static int | get_random (char *buf, size_t buflen) |
| | Try to get random bytes.
|
| char * | crypt_gensalt_r (const char *prefix, unsigned long count, const char *rbytes, int nrbytes, char *output, int output_size) |
| | Generate string suitable for use as setting when hashing a passphrase.
|
| struct PBASettings * | pba_init (const char *pepper, unsigned int pepper_size, unsigned int count, char *prefix) |
| | Init PBA.
|
| void | pba_finalize (struct PBASettings *settings) |
| | Cleanup PBA settings.
|
| static int | pba_is_phc_compliant (const char *setting) |
| | Check if a PBA settings is PHC compliant.
|
| char * | pba_hash (struct PBASettings *setting, const char *password) |
| | Create a password hash.
|
| enum pba_rc | pba_verify_hash (const struct PBASettings *setting, const char *hash, const char *password) |
| | Verify a password hash.
|
◆ __USE_GNU
◆ CRYPT_GENSALT_OUTPUT_SIZE
| #define CRYPT_GENSALT_OUTPUT_SIZE 192 |
◆ CRYPT_OUTPUT_SIZE
| #define CRYPT_OUTPUT_SIZE 384 |
◆ INVALID_HASH
| #define INVALID_HASH "1234567890$" |
◆ crypt_gensalt_r()
| char * crypt_gensalt_r |
( |
const char * | prefix, |
|
|
unsigned long | count, |
|
|
const char * | rbytes, |
|
|
int | nrbytes, |
|
|
char * | output, |
|
|
int | output_size ) |
Generate string suitable for use as setting when hashing a passphrase.
If prefix is a NULL pointer, the current best default is used; if rbytes is a NULL pointer, random data will be retrieved from the operating system if possible.
- Parameters
-
| [in] | prefix | Controls which hash function will be used. |
| [in] | count | Controls the computional cost of the hash. |
| [in] | rbytes | Should point to nrbytes bytes of random data. |
| [in] | nrbytes | Number of bytes in rbytes. |
| [out] | output | The generated setting string is written here. |
| [in] | output_size | Length of output. Must be at least CRYPT_GENSALT_OUTPUT_SIZE. |
- Returns
- On success
output, else NULL.
◆ get_random()
| int get_random |
( |
char * | buf, |
|
|
size_t | buflen ) |
|
static |
Try to get random bytes.
- Parameters
-
| [in] | buf | Destination for bytes. |
| [in] | buflen | Number of bytes to get. |
- Returns
- 0 on success, else error.
◆ is_prefix_supported()
| int is_prefix_supported |
( |
const char * | id | ) |
|
|
static |
Check if a prefix is supported.
- Parameters
-
- Returns
- 1 if supported, else 0.
◆ pba_finalize()
Cleanup PBA settings.
- Parameters
-
| [in] | settings | PBA settings. |
◆ pba_hash()
| char * pba_hash |
( |
struct PBASettings * | setting, |
|
|
const char * | password ) |
Create a password hash.
- Parameters
-
| [in] | setting | PBA settings. |
| [in] | password | Password. |
- Returns
- Hash. Must be freed with free().
◆ pba_init()
| struct PBASettings * pba_init |
( |
const char * | pepper, |
|
|
unsigned int | pepper_size, |
|
|
unsigned int | count, |
|
|
char * | prefix ) |
Init PBA.
- Parameters
-
| [in] | pepper | A static hidden addition to the randomly generated salt. |
| [in] | pepper_size | The size of pepper; it must not be larger than MAX_PEPPER_SIZE. |
| [in] | count | Number of rounds used to calculate the hash. 0 to use COUNT_DEFAULT. |
| [in] | prefix | The algorithm used, if NULL then the most secure available algorithm will be used. |
- Returns
- Settings, or NULL on error. Free with pba_finalize.
◆ pba_is_phc_compliant()
| int pba_is_phc_compliant |
( |
const char * | setting | ) |
|
|
static |
Check if a PBA settings is PHC compliant.
- Parameters
-
- Returns
- 1 if compliant, else 0.
◆ pba_verify_hash()
| enum pba_rc pba_verify_hash |
( |
const struct PBASettings * | setting, |
|
|
const char * | hash, |
|
|
const char * | password ) |
Verify a password hash.
- Parameters
-
| [in] | setting | PBA settings. |
| [in] | hash | Hash. |
| [in] | password | Password. |
- Returns
- Validity. VALID, UPDATE_RECOMMENDED, ...
◆ ascii64
Initial value:=
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"