modify ini_demo readme.md & update bcrypt components & bcrypt demo
This commit is contained in:
97
components/utils/Bcrypt/include/bcrypt.h
Normal file
97
components/utils/Bcrypt/include/bcrypt.h
Normal file
@@ -0,0 +1,97 @@
|
||||
#ifndef BCRYPT_H_
|
||||
#define BCRYPT_H_
|
||||
/*
|
||||
* bcrypt wrapper library
|
||||
*
|
||||
* Written in 2011, 2013, 2014, 2015 by Ricardo Garcia <r@rg3.name>
|
||||
*
|
||||
* To the extent possible under law, the author(s) have dedicated all copyright
|
||||
* and related and neighboring rights to this software to the public domain
|
||||
* worldwide. This software is distributed without any warranty.
|
||||
*
|
||||
* You should have received a copy of the CC0 Public Domain Dedication along
|
||||
* with this software. If not, see
|
||||
* <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||
*/
|
||||
|
||||
#define BCRYPT_HASHSIZE (64)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This function expects a work factor between 4 and 31 and a char array to
|
||||
* store the resulting generated salt. The char array should typically have
|
||||
* BCRYPT_HASHSIZE bytes at least. If the provided work factor is not in the
|
||||
* previous range, it will default to 12.
|
||||
*
|
||||
* The return value is zero if the salt could be correctly generated and
|
||||
* nonzero otherwise.
|
||||
*
|
||||
*/
|
||||
int bcrypt_gensalt(int workfactor, char salt[BCRYPT_HASHSIZE]);
|
||||
|
||||
/*
|
||||
* This function expects a password to be hashed, a salt to hash the password
|
||||
* with and a char array to leave the result. Both the salt and the hash
|
||||
* parameters should have room for BCRYPT_HASHSIZE characters at least.
|
||||
*
|
||||
* It can also be used to verify a hashed password. In that case, provide the
|
||||
* expected hash in the salt parameter and verify the output hash is the same
|
||||
* as the input hash. However, to avoid timing attacks, it's better to use
|
||||
* bcrypt_checkpw when verifying a password.
|
||||
*
|
||||
* The return value is zero if the password could be hashed and nonzero
|
||||
* otherwise.
|
||||
*/
|
||||
int bcrypt_hashpw(const char *passwd, const char salt[BCRYPT_HASHSIZE],
|
||||
char hash[BCRYPT_HASHSIZE]);
|
||||
|
||||
/*
|
||||
* This function expects a password and a hash to verify the password against.
|
||||
* The internal implementation is tuned to avoid timing attacks.
|
||||
*
|
||||
* The return value will be -1 in case of errors, zero if the provided password
|
||||
* matches the given hash and greater than zero if no errors are found and the
|
||||
* passwords don't match.
|
||||
*
|
||||
*/
|
||||
int bcrypt_checkpw(const char *passwd, const char hash[BCRYPT_HASHSIZE]);
|
||||
|
||||
/*
|
||||
* Brief Example
|
||||
* -------------
|
||||
*
|
||||
* Hashing a password:
|
||||
*
|
||||
* char salt[BCRYPT_HASHSIZE];
|
||||
* char hash[BCRYPT_HASHSIZE];
|
||||
* int ret;
|
||||
*
|
||||
* ret = bcrypt_gensalt(12, salt);
|
||||
* assert(ret == 0);
|
||||
* ret = bcrypt_hashpw("thepassword", salt, hash);
|
||||
* assert(ret == 0);
|
||||
*
|
||||
*
|
||||
* Verifying a password:
|
||||
*
|
||||
* int ret;
|
||||
*
|
||||
* ret = bcrypt_checkpw("thepassword", "expectedhash");
|
||||
* assert(ret != -1);
|
||||
*
|
||||
* if (ret == 0) {
|
||||
* printf("The password matches\n");
|
||||
* } else {
|
||||
* printf("The password does NOT match\n");
|
||||
* }
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
24
components/utils/Bcrypt/include/crypt.h
Normal file
24
components/utils/Bcrypt/include/crypt.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Written by Solar Designer <solar at openwall.com> in 2000-2002.
|
||||
* No copyright is claimed, and the software is hereby placed in the public
|
||||
* domain. In case this attempt to disclaim copyright and place the software
|
||||
* in the public domain is deemed null and void, then the software is
|
||||
* Copyright (c) 2000-2002 Solar Designer and it is hereby released to the
|
||||
* general public under the following terms:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted.
|
||||
*
|
||||
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
*
|
||||
* See crypt_blowfish.c for more information.
|
||||
*/
|
||||
|
||||
#include <gnu-crypt.h>
|
||||
|
||||
#if defined(_OW_SOURCE) || defined(__USE_OW)
|
||||
#define __SKIP_GNU
|
||||
#undef __SKIP_OW
|
||||
#include <ow-crypt.h>
|
||||
#undef __SKIP_GNU
|
||||
#endif
|
27
components/utils/Bcrypt/include/crypt_blowfish.h
Normal file
27
components/utils/Bcrypt/include/crypt_blowfish.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Written by Solar Designer <solar at openwall.com> in 2000-2011.
|
||||
* No copyright is claimed, and the software is hereby placed in the public
|
||||
* domain. In case this attempt to disclaim copyright and place the software
|
||||
* in the public domain is deemed null and void, then the software is
|
||||
* Copyright (c) 2000-2011 Solar Designer and it is hereby released to the
|
||||
* general public under the following terms:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted.
|
||||
*
|
||||
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
*
|
||||
* See crypt_blowfish.c for more information.
|
||||
*/
|
||||
|
||||
#ifndef _CRYPT_BLOWFISH_H
|
||||
#define _CRYPT_BLOWFISH_H
|
||||
|
||||
extern int _crypt_output_magic(const char *setting, char *output, int size);
|
||||
extern char *_crypt_blowfish_rn(const char *key, const char *setting,
|
||||
char *output, int size);
|
||||
extern char *_crypt_gensalt_blowfish_rn(const char *prefix,
|
||||
unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
|
||||
#endif
|
30
components/utils/Bcrypt/include/crypt_gensalt.h
Normal file
30
components/utils/Bcrypt/include/crypt_gensalt.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Written by Solar Designer <solar at openwall.com> in 2000-2011.
|
||||
* No copyright is claimed, and the software is hereby placed in the public
|
||||
* domain. In case this attempt to disclaim copyright and place the software
|
||||
* in the public domain is deemed null and void, then the software is
|
||||
* Copyright (c) 2000-2011 Solar Designer and it is hereby released to the
|
||||
* general public under the following terms:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted.
|
||||
*
|
||||
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
*
|
||||
* See crypt_blowfish.c for more information.
|
||||
*/
|
||||
|
||||
#ifndef _CRYPT_GENSALT_H
|
||||
#define _CRYPT_GENSALT_H
|
||||
|
||||
extern unsigned char _crypt_itoa64[];
|
||||
extern char *_crypt_gensalt_traditional_rn(const char *prefix,
|
||||
unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
extern char *_crypt_gensalt_extended_rn(const char *prefix,
|
||||
unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
extern char *_crypt_gensalt_md5_rn(const char *prefix, unsigned long count,
|
||||
const char *input, int size, char *output, int output_size);
|
||||
|
||||
#endif
|
43
components/utils/Bcrypt/include/ow-crypt.h
Normal file
43
components/utils/Bcrypt/include/ow-crypt.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Written by Solar Designer <solar at openwall.com> in 2000-2011.
|
||||
* No copyright is claimed, and the software is hereby placed in the public
|
||||
* domain. In case this attempt to disclaim copyright and place the software
|
||||
* in the public domain is deemed null and void, then the software is
|
||||
* Copyright (c) 2000-2011 Solar Designer and it is hereby released to the
|
||||
* general public under the following terms:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted.
|
||||
*
|
||||
* There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
*
|
||||
* See crypt_blowfish.c for more information.
|
||||
*/
|
||||
|
||||
#ifndef _OW_CRYPT_H
|
||||
#define _OW_CRYPT_H
|
||||
|
||||
#ifndef __GNUC__
|
||||
#undef __const
|
||||
#define __const const
|
||||
#endif
|
||||
|
||||
#ifndef __SKIP_GNU
|
||||
extern char *crypt(__const char *key, __const char *setting);
|
||||
extern char *crypt_r(__const char *key, __const char *setting, void *data);
|
||||
#endif
|
||||
|
||||
#ifndef __SKIP_OW
|
||||
extern char *crypt_rn(__const char *key, __const char *setting,
|
||||
void *data, int size);
|
||||
extern char *crypt_ra(__const char *key, __const char *setting,
|
||||
void **data, int *size);
|
||||
extern char *crypt_gensalt(__const char *prefix, unsigned long count,
|
||||
__const char *input, int size);
|
||||
extern char *crypt_gensalt_rn(__const char *prefix, unsigned long count,
|
||||
__const char *input, int size, char *output, int output_size);
|
||||
extern char *crypt_gensalt_ra(__const char *prefix, unsigned long count,
|
||||
__const char *input, int size);
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user