double
normalize;
+ unsigned long
+ secret_key;
+
unsigned short
protocol_major,
protocol_minor;
*random_semaphore = (SemaphoreInfo *) NULL;
static unsigned long
- random_seed = ~0UL;
+ secret_key = ~0UL;
static MagickBooleanType
gather_true_random = MagickFalse;
random_info->signature_info));
ResetStringInfo(random_info->reservoir);
random_info->normalize=1.0/(~0UL);
- random_info->semaphore=AllocateSemaphoreInfo();
+ random_info->secret_key=secret_key;
random_info->protocol_major=RandomProtocolMajorVersion;
random_info->protocol_minor=RandomProtocolMinorVersion;
+ random_info->semaphore=AllocateSemaphoreInfo();
random_info->timestamp=(ssize_t) time(0);
random_info->signature=MagickSignature;
/*
/*
Seed pseudo random number generator.
*/
- if (random_seed == ~0UL)
+ if (random_info->secret_key == ~0UL)
{
- key=GetRandomKey(random_info,sizeof(random_seed));
+ key=GetRandomKey(random_info,sizeof(random_info->secret_key));
(void) CopyMagickMemory(random_info->seed,GetStringInfoDatum(key),
GetStringInfoLength(key));
key=DestroyStringInfo(key);
*signature_info;
signature_info=AcquireSignatureInfo();
- key=AcquireStringInfo(sizeof(random_seed));
- SetStringInfoDatum(key,(unsigned char *) &random_seed);
+ key=AcquireStringInfo(sizeof(random_info->secret_key));
+ SetStringInfoDatum(key,(unsigned char *) &random_info->secret_key);
UpdateSignature(signature_info,key);
key=DestroyStringInfo(key);
FinalizeSignature(signature_info);
% %
% %
% %
+% G e t R a n d o m S e c r e t K e y %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% GetRandomSecretKey() returns the random secet key.
+%
+% The format of the GetRandomSecretKey method is:
+%
+% unsigned long GetRandomSecretKey(const RandomInfo *random_info)
+%
+% A description of each parameter follows:
+%
+% o random_info: the random info.
+*/
+MagickExport unsigned long GetRandomSecretKey(const RandomInfo *random_info)
+{
+ return(random_info->secret_key);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% G e t R a n d o m V a l u e %
% %
% %
% %
% %
% %
-% S e e d P s e u d o R a n d o m G e n e r a t o r %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% SeedPseudoRandomGenerator() initializes the pseudo-random number generator
-% with a random seed.
-%
-% The format of the SeedPseudoRandomGenerator method is:
-%
-% void SeedPseudoRandomGenerator(const unsigned long seed)
-%
-% A description of each parameter follows:
-%
-% o seed: the seed.
-%
-*/
-MagickExport void SeedPseudoRandomGenerator(const unsigned long seed)
-{
- random_seed=seed;
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% S e t R a n d o m K e y %
% %
% %
% %
% %
% %
+% S e t R a n d o m S e c r e t K e y %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SetRandomSecretKey() sets the pseudo-random number generator secret key.
+%
+% The format of the SetRandomSecretKey method is:
+%
+% void SetRandomSecretKey(const unsigned long key)
+%
+% A description of each parameter follows:
+%
+% o key: the secret seed.
+%
+*/
+MagickExport void SetRandomSecretKey(const unsigned long key)
+{
+ secret_key=key;
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% S e t R a n d o m T r u e R a n d o m %
% %
% %