|
|
@ -1,10 +1,14 @@
|
|
|
|
<?php /* -*- php -*- */
|
|
|
|
<?php /* -*- php -*- */
|
|
|
|
|
|
|
|
|
|
|
|
function fulcrm_uuid_stir_mt_srand() {
|
|
|
|
function fulcrm_uuid_stir_mt_srand() {
|
|
|
|
$e1 = variable_get( 'fulcrm_uuid_entropy_1', '' );
|
|
|
|
if ( function_exists( 'drupal_random_bytes' ) )
|
|
|
|
mt_srand( crc32( $e1 ) );
|
|
|
|
mt_srand( crc32( drupal_random_bytes( 4 ) ) );
|
|
|
|
if ( function_exists( 'microtime' ) )
|
|
|
|
else if ( function_exists( 'microtime' ) )
|
|
|
|
mt_srand( crc32( microtime() ) );
|
|
|
|
mt_srand( crc32( microtime() ) );
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
$e1 = variable_get( 'fulcrm_uuid_entropy_1', '' );
|
|
|
|
|
|
|
|
mt_srand( crc32( $e1 ) );
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function fulcrm_uuid_stir_entropy() {
|
|
|
|
function fulcrm_uuid_stir_entropy() {
|
|
|
@ -12,24 +16,28 @@ function fulcrm_uuid_stir_entropy() {
|
|
|
|
|
|
|
|
|
|
|
|
$entropy = '';
|
|
|
|
$entropy = '';
|
|
|
|
|
|
|
|
|
|
|
|
$entropy .= mt_rand();
|
|
|
|
if ( function_exists( 'drupal_random_bytes' ) ) {
|
|
|
|
$entropy .= rand();
|
|
|
|
$entropy .= drupal_random_bytes( 32 );
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
$entropy .= mt_rand();
|
|
|
|
|
|
|
|
$entropy .= rand();
|
|
|
|
|
|
|
|
|
|
|
|
$entropy .= time();
|
|
|
|
$entropy .= time();
|
|
|
|
if ( function_exists( 'microtime' ) )
|
|
|
|
if ( function_exists( 'microtime' ) )
|
|
|
|
$entropy .= microtime();
|
|
|
|
$entropy .= microtime();
|
|
|
|
|
|
|
|
|
|
|
|
$entropy .= variable_get( 'cron_key', '' );
|
|
|
|
$entropy .= variable_get( 'cron_key', '' );
|
|
|
|
$entropy .= variable_get( 'cron_last', '' );
|
|
|
|
$entropy .= variable_get( 'cron_last', '' );
|
|
|
|
$entropy .= variable_get( 'drupal_private_key', '' );
|
|
|
|
$entropy .= variable_get( 'drupal_private_key', '' );
|
|
|
|
$entropy .= variable_get( 'site_name', '' );
|
|
|
|
$entropy .= variable_get( 'site_name', '' );
|
|
|
|
|
|
|
|
|
|
|
|
if ( function_exists( 'openssl_random_pseudo_bytes' ) )
|
|
|
|
if ( function_exists( 'openssl_random_pseudo_bytes' ) )
|
|
|
|
$entropy .= openssl_random_pseudo_bytes( 32 );
|
|
|
|
$entropy .= openssl_random_pseudo_bytes( 32 );
|
|
|
|
|
|
|
|
|
|
|
|
$handle = fopen( '/dev/urandom', 'r' );
|
|
|
|
$handle = fopen( '/dev/urandom', 'r' );
|
|
|
|
$entropy .= fread( $handle, 32 );
|
|
|
|
$entropy .= fread( $handle, 32 );
|
|
|
|
fclose( $handle );
|
|
|
|
fclose( $handle );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$old_entropy = ( variable_get( 'fulcrm_uuid_entropy_1', '' ) .
|
|
|
|
$old_entropy = ( variable_get( 'fulcrm_uuid_entropy_1', '' ) .
|
|
|
|
variable_get( 'fulcrm_uuid_entropy_2', '' ) );
|
|
|
|
variable_get( 'fulcrm_uuid_entropy_2', '' ) );
|
|
|
@ -44,11 +52,20 @@ function fulcrm_uuid_cron() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function fulcrm_uuid_uuid4() {
|
|
|
|
function fulcrm_uuid_uuid4() {
|
|
|
|
|
|
|
|
static $data = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( function_exists( 'drupal_random_bytes' ) )
|
|
|
|
|
|
|
|
$data = $data . drupal_random_bytes( 4 );
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
$data = $data . uniqid( $more_entropy = true );
|
|
|
|
|
|
|
|
|
|
|
|
$data = ( variable_get( 'fulcrm_uuid_entropy_2', '' ) .
|
|
|
|
$data = ( variable_get( 'fulcrm_uuid_entropy_2', '' ) .
|
|
|
|
uniqid( $more_entropy = true ) .
|
|
|
|
$data .
|
|
|
|
variable_get( 'fulcrm_uuid_entropy_2', '' ) );
|
|
|
|
variable_get( 'fulcrm_uuid_entropy_2', '' ) );
|
|
|
|
$data = hex2bin( md5( $data ) );
|
|
|
|
|
|
|
|
$data[ 6 ] = chr( ord( $data[ 6 ] ) & 0x0f | 0x40 );
|
|
|
|
$data = md5( $data );
|
|
|
|
$data[ 8 ] = chr( ord( $data[ 8 ] ) & 0x3f | 0x80 );
|
|
|
|
$rdata = hex2bin( $data );
|
|
|
|
return vsprintf( '%s%s-%s-%s-%s-%s%s%s', str_split( bin2hex( $data ), 4 ) );
|
|
|
|
$rdata[ 6 ] = chr( ord( $rdata[ 6 ] ) & 0x0f | 0x40 );
|
|
|
|
|
|
|
|
$rdata[ 8 ] = chr( ord( $rdata[ 8 ] ) & 0x3f | 0x80 );
|
|
|
|
|
|
|
|
return vsprintf( '%s%s-%s-%s-%s-%s%s%s', str_split( bin2hex( $rdata ), 4 ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|