passwordbasedauthentication.c File Reference
`#include "passwordbasedauthentication.h"`
`#include "authutils.c"`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include <crypt.h>`

## Macros

#define | __USE_GNU
#define | INVALID_HASH "1234567890$"
#define | CRYPT_GENSALT_OUTPUT_SIZE 192
#define | CRYPT_OUTPUT_SIZE 384

## Functions

int | is_prefix_supported (const char *id)
int | get_random (char *buf, size_t buflen)
char * | crypt_gensalt_r (const char *prefix, unsigned long count, const char *rbytes, int nrbytes, char *output, int output_size)
struct PBASettings * | pba_init (const char *pepper, unsigned int pepper_size, unsigned int count, char *prefix)
void | pba_finalize (struct PBASettings *settings)
int | pba_is_phc_compliant (const char *setting)
char * | pba_hash (struct PBASettings *setting, const char *password)
enum pba_rc | pba_verify_hash (const struct PBASettings *setting, const char *hash, const char *password)

## Variables

const char | ascii64 [64]

## Macro Definition Documentation

## __USE_GNU

#define __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$"

## Function Documentation

## crypt_gensalt_r()

char* crypt_gensalt_r | ( | const char * | prefix,
|  | unsigned long | count,
|  | const char * | rbytes,
|  | int | nrbytes,
|  | char * | output,
|  | int | output_size
| ) |  |

## get_random()

int get_random | ( | char * | buf,
|  | size_t | buflen
| ) |  |

## is_prefix_supported()

int is_prefix_supported | ( | const char * | id | ) |

## pba_finalize()

void pba_finalize | ( | struct PBASettings * | settings | ) |

## pba_hash()

char* pba_hash | ( | struct PBASettings * | setting,
|  | const char * | password
| ) |  |

pba_hash tries to create a hash based SETTING and PASSWORD. Returns a hash on success or a NULL pointer on failure

## pba_init()

struct PBASettings* pba_init | ( | const char * | pepper,
|  | unsigned int | pepper_size,
|  | unsigned int | count,
|  | char * | prefix
| ) |  |

Intitializes PBASettings with given PEPPER, PREFIX, COUNT.

PEPPER_SIZE must be lower or equal MAX_PEPPER_SIZE when PEPPER is set, when PEPPER is a NULL pointer, no pepper will be used and PEPPER_SIZE is ignored.

COUNT is set to COUNT_DEFAULT when it is 0, PREFIX is set to PREFIX_DEFAULT when prefix is a nullpointer.

Returns a pointer to PBASettings on success or NULL on failure.

## pba_is_phc_compliant()

int pba_is_phc_compliant | ( | const char * | setting | ) |

## pba_verify_hash()

enum pba_rc pba_verify_hash | ( | const struct PBASettings * | settings,
|  | const char * | hash,
|  | const char * | password
| ) |  |

pba_verify_hash tries to create hash based on PASSWORD and settings found via HASH and compares that with HASH.

Returns VALID if HASH and PASSWORD are correct; UPDATE_RECOMMENDED when the HASH and PASSWORD are correct but based on a deprecated algorithm; IVALID if HASH does not match PASSWORD; ERR if an unexpected error occurs.

## Variable Documentation

## ascii64

const char ascii64[64]

Initial value:
=
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"