bool as_password_gen_salt(char* salt) { // Create BCrypt random salt. char rnd[BCRYPT_RAND_LEN]; cf_get_rand_buf((uint8_t*)rnd, BCRYPT_RAND_LEN); return (bool) _crypt_gensalt_blowfish_rn("$2a$", BCRYPT_WORK_FACTOR, rnd, BCRYPT_RAND_LEN, salt, AS_PASSWORD_HASH_SIZE); }
APU_DECLARE(apr_status_t) apr_bcrypt_encode(const char *pw, unsigned int count, const unsigned char *salt, apr_size_t salt_len, char *out, apr_size_t out_len) { char setting[40]; if (_crypt_gensalt_blowfish_rn(bcrypt_id, count, (const char *)salt, salt_len, setting, sizeof(setting)) == NULL) return APR_FROM_OS_ERROR(errno); if (_crypt_blowfish_rn(pw, setting, out, out_len) == NULL) return APR_FROM_OS_ERROR(errno); return APR_SUCCESS; }