mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-27 18:19:52 -05:00
In fallback mode, use value of buffer to improve quality of hash.
This commit is contained in:
parent
f804da9bef
commit
c52dc059e6
1 changed files with 10 additions and 2 deletions
|
|
@ -24,6 +24,10 @@
|
|||
/*
|
||||
* lutil_entropy() provides nbytes of entropy in buf.
|
||||
* Quality offerred is suitable for one-time uses, such as "once" keys.
|
||||
*
|
||||
* Note: Callers are encouraged to provide additional bytes of
|
||||
* of entropy in the buf argument. This information is used in
|
||||
* fallback mode to improve the quality of bytes returned.
|
||||
*/
|
||||
int lutil_entropy( char *buf, int nbytes )
|
||||
{
|
||||
|
|
@ -75,7 +79,7 @@ int lutil_entropy( char *buf, int nbytes )
|
|||
* MD5 is a strong cryptographic hash, this should
|
||||
* be fairly resistant to attack
|
||||
*/
|
||||
static int counter = 0;
|
||||
static sig_atomic_t counter = 0;
|
||||
int n;
|
||||
|
||||
struct rdata_s {
|
||||
|
|
@ -119,10 +123,14 @@ int lutil_entropy( char *buf, int nbytes )
|
|||
|
||||
lutil_MD5Init( &ctx );
|
||||
lutil_MD5Update( &ctx, (char *) &rdata, sizeof( rdata ) );
|
||||
|
||||
/* use caller to provided information */
|
||||
lutil_MD5Update( &ctx, (char *) &buf, nbytes );
|
||||
|
||||
lutil_MD5Final( digest, &ctx );
|
||||
|
||||
memcpy( &buf[n], digest,
|
||||
nbytes - n > 16 ? 16 : nbytes - n );
|
||||
nbytes - n >= 16 ? 16 : nbytes - n );
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue