47 #if defined(__MINGW32__) 69 #define PseudoRandomHash SHA256Hash 70 #define RandomEntropyLevel 9 71 #define RandomFilename "reservoir.xdm" 72 #define RandomFiletype "random" 73 #define RandomProtocolMajorVersion 1 74 #define RandomProtocolMinorVersion 0 117 #if defined(__APPLE__) && !defined(TARGET_OS_IPHONE) 118 #include <crt_externs.h> 119 #define environ (*_NSGetEnviron()) 122 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) 319 #if !defined(MAGICKCORE_WINDOWS_SUPPORT) 320 static ssize_t
ReadRandom(
int file,
unsigned char *source,
size_t length)
330 for (q=source; length != 0; length-=count)
332 count=(ssize_t) read(file,q,length);
349 #define MaxEntropyExtent 64 375 pid=(ssize_t) getpid();
383 #if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PHYS_PAGES) 388 pages=(ssize_t) sysconf(_SC_PHYS_PAGES);
394 #if defined(MAGICKCORE_HAVE_GETRUSAGE) && defined(RUSAGE_SELF) 399 if (getrusage(RUSAGE_SELF,&usage) == 0)
406 seconds=time((time_t *) 0);
408 #if defined(MAGICKCORE_HAVE_GETTIMEOFDAY) 413 if (gettimeofday(&timer,(
struct timezone *) NULL) == 0)
415 seconds=(size_t) timer.tv_sec;
416 nanoseconds=(
size_t) (1000UL*timer.tv_usec);
420 #if defined(MAGICKCORE_HAVE_CLOCK_GETTIME) && defined(CLOCK_REALTIME_HR) 425 if (clock_gettime(CLOCK_REALTIME_HR,&timer) == 0)
427 seconds=timer.tv_sec;
428 nanoseconds=timer.tv_nsec;
439 #if defined(MAGICKCORE_HAVE_CLOCK) 442 #if defined(MAGICKCORE_HAVE_TIMES) 447 (void) times(&timer);
448 nanoseconds=timer.tms_utime+timer.tms_stime;
454 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 465 seconds=NTElapsedTime()+NTUserTime();
469 if (QueryPerformanceCounter(&nanoseconds) != 0)
507 for (i=0;
environ[i] != (
char *) NULL; i++)
587 #define RandomROTL(x,k) (((x) << (k)) | ((x) >> (64-(k)))) 750 }
while (key == range);
751 return((
double) key/range);
static MagickThreadType GetMagickThreadId(void)
#define RandomProtocolMajorVersion
static ssize_t ReadRandom(int file, unsigned char *source, size_t length)
MagickExport StringInfo * StringToStringInfo(const char *string)
MagickExport void UnlockSemaphoreInfo(SemaphoreInfo *semaphore_info)
MagickPrivate double GetRandomInfoNormalize(const RandomInfo *random_info)
#define MagickULLConstant(c)
#define ThrowFatalException(severity, tag)
MagickPrivate SignatureInfo * AcquireSignatureInfo(void)
MagickExport SemaphoreInfo * AcquireSemaphoreInfo(void)
MagickPrivate void InitializeSignature(SignatureInfo *)
MagickExport void ConcatenateStringInfo(StringInfo *string_info, const StringInfo *source)
unsigned short protocol_minor
MagickExport void SetRandomTrueRandom(const MagickBooleanType true_random)
unsigned short protocol_major
MagickPrivate MagickBooleanType RandomComponentGenesis(void)
MagickExport unsigned long GetRandomSecretKey(const RandomInfo *random_info)
MagickExport void SetRandomKey(RandomInfo *random_info, const size_t length, unsigned char *key)
MagickExport RandomInfo * DestroyRandomInfo(RandomInfo *random_info)
MagickPrivate void RandomComponentTerminus(void)
#define MagickCoreSignature
MagickPrivate void FinalizeSignature(SignatureInfo *)
MagickExport void LockSemaphoreInfo(SemaphoreInfo *semaphore_info)
MagickPrivate SignatureInfo * DestroySignatureInfo(SignatureInfo *)
MagickExport unsigned char * GetStringInfoDatum(const StringInfo *string_info)
SemaphoreInfo * semaphore
SignatureInfo * signature_info
MagickExport char * AcquireString(const char *source)
MagickExport void * AcquireCriticalMemory(const size_t size)
MagickExport StringInfo * DestroyStringInfo(StringInfo *string_info)
MagickExport void ResetStringInfo(StringInfo *string_info)
MagickExport MagickBooleanType LogMagickEvent(const LogEventType type, const char *module, const char *function, const size_t line, const char *format,...)
static int open_utf8(const char *path, int flags, mode_t mode)
MagickExport RandomInfo * AcquireRandomInfo(void)
static SemaphoreInfo * random_semaphore
MagickExport StringInfo * AcquireStringInfo(const size_t length)
MagickPrivate void UpdateSignature(SignatureInfo *, const StringInfo *)
#define GetMagickModule()
MagickExport double GetRandomValue(RandomInfo *random_info)
static void IncrementRandomNonce(StringInfo *nonce)
MagickExport void SetStringInfoLength(StringInfo *string_info, const size_t length)
static unsigned long secret_key
MagickExport char * DestroyString(char *string)
MagickExport void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info)
MagickExport double GetPseudoRandomValue(RandomInfo *magick_restrict random_info)
static RandomInfo * random_info
MagickExport void * RelinquishMagickMemory(void *memory)
MagickPrivate const StringInfo * GetSignatureDigest(const SignatureInfo *)
static StringInfo * GenerateEntropicChaos(RandomInfo *)
MagickExport StringInfo * GetRandomKey(RandomInfo *random_info, const size_t length)
static MagickBooleanType gather_true_random
MagickPrivate unsigned long * GetRandomInfoSeed(RandomInfo *random_info)
MagickPrivate unsigned int GetSignatureDigestsize(const SignatureInfo *)
MagickExport void SetRandomSecretKey(const unsigned long key)
MagickExport size_t GetStringInfoLength(const StringInfo *string_info)
MagickExport void RelinquishSemaphoreInfo(SemaphoreInfo **semaphore_info)
MagickExport void SetStringInfoDatum(StringInfo *string_info, const unsigned char *source)
#define RandomProtocolMinorVersion
MagickExport void SetStringInfo(StringInfo *string_info, const StringInfo *source)