Home | History | Annotate | Download | only in MagickCore

Lines Matching refs:random_info

175     *random_info;
182 random_info=(RandomInfo *) AcquireMagickMemory(sizeof(*random_info));
183 if (random_info == (RandomInfo *) NULL)
185 (void) ResetMagickMemory(random_info,0,sizeof(*random_info));
186 random_info->signature_info=AcquireSignatureInfo();
187 random_info->nonce=AcquireStringInfo(2*GetSignatureDigestsize(
188 random_info->signature_info));
189 ResetStringInfo(random_info->nonce);
190 random_info->reservoir=AcquireStringInfo(GetSignatureDigestsize(
191 random_info->signature_info));
192 ResetStringInfo(random_info->reservoir);
193 random_info->normalize=1.0/(~0UL);
194 random_info->secret_key=secret_key;
195 random_info->protocol_major=RandomProtocolMajorVersion;
196 random_info->protocol_minor=RandomProtocolMinorVersion;
197 random_info->semaphore=AcquireSemaphoreInfo();
198 random_info->timestamp=(ssize_t) time(0);
199 random_info->signature=MagickCoreSignature;
203 nonce=GenerateEntropicChaos(random_info);
206 InitializeSignature(random_info->signature_info);
207 UpdateSignature(random_info->signature_info,nonce);
208 FinalizeSignature(random_info->signature_info);
210 random_info->signature_info)+1)/2);
211 SetStringInfo(nonce,GetSignatureDigest(random_info->signature_info));
212 SetStringInfo(random_info->nonce,nonce);
217 entropy=GenerateEntropicChaos(random_info);
220 UpdateSignature(random_info->signature_info,entropy);
221 FinalizeSignature(random_info->signature_info);
222 SetStringInfo(random_info->reservoir,GetSignatureDigest(
223 random_info->signature_info));
228 if (random_info->secret_key == ~0UL)
230 key=GetRandomKey(random_info,sizeof(random_info->secret_key));
231 (void) CopyMagickMemory(random_info->seed,GetStringInfoDatum(key),
241 key=AcquireStringInfo(sizeof(random_info->secret_key));
242 SetStringInfoDatum(key,(unsigned char *) &random_info->secret_key);
247 (void) CopyMagickMemory(random_info->seed,GetStringInfoDatum(digest),
249 sizeof(*random_info->seed)));
252 random_info->seed[1]=0x50a7f451UL;
253 random_info->seed[2]=0x5365417eUL;
254 random_info->seed[3]=0xc3a4171aUL;
255 return(random_info);
275 % RandomInfo *DestroyRandomInfo(RandomInfo *random_info)
279 % o random_info: the random info.
282 MagickExport RandomInfo *DestroyRandomInfo(RandomInfo *random_info)
285 assert(random_info != (RandomInfo *) NULL);
286 assert(random_info->signature == MagickCoreSignature);
287 LockSemaphoreInfo(random_info->semaphore);
288 if (random_info->reservoir != (StringInfo *) NULL)
289 random_info->reservoir=DestroyStringInfo(random_info->reservoir);
290 if (random_info->nonce != (StringInfo *) NULL)
291 random_info->nonce=DestroyStringInfo(random_info->nonce);
292 if (random_info->signature_info != (SignatureInfo *) NULL)
293 random_info->signature_info=DestroySignatureInfo(
294 random_info->signature_info);
295 (void) ResetMagickMemory(random_info->seed,0,sizeof(*random_info->seed));
296 random_info->signature=(~MagickCoreSignature);
297 UnlockSemaphoreInfo(random_info->semaphore);
298 RelinquishSemaphoreInfo(&random_info->semaphore);
299 random_info=(RandomInfo *) RelinquishMagickMemory(random_info);
300 return(random_info);
320 % StringInfo *GenerateEntropicChaos(RandomInfo *random_info)
324 % o random_info: the random info.
356 static StringInfo *GenerateEntropicChaos(RandomInfo *random_info)
378 LockSemaphoreInfo(random_info->semaphore);
595 UnlockSemaphoreInfo(random_info->semaphore);
621 % o random_info: the random info.
624 MagickExport double GetPseudoRandomValue(RandomInfo *random_info)
632 seed=random_info->seed;
641 return(random_info->normalize*seed[0]);
660 % double GetRandomInfoNormalize(const RandomInfo *random_info)
664 % o random_info: the random info.
667 MagickPrivate double GetRandomInfoNormalize(const RandomInfo *random_info)
669 assert(random_info != (const RandomInfo *) NULL);
670 return(random_info->normalize);
689 % unsigned long *GetRandomInfoSeed(RandomInfo *random_info)
693 % o random_info: the random info.
696 MagickPrivate unsigned long *GetRandomInfoSeed(RandomInfo *random_info)
698 assert(random_info != (RandomInfo *) NULL);
699 return(random_info->seed);
718 % StringInfo *GetRandomKey(RandomInfo *random_info,const size_t length)
722 % o random_info: the random info.
727 MagickExport StringInfo *GetRandomKey(RandomInfo *random_info,
733 assert(random_info != (RandomInfo *) NULL);
735 SetRandomKey(random_info,length,GetStringInfoDatum(key));
755 % unsigned long GetRandomSecretKey(const RandomInfo *random_info)
759 % o random_info: the random info.
761 MagickExport unsigned long GetRandomSecretKey(const RandomInfo *random_info)
763 return(random_info->secret_key);
787 MagickExport double GetRandomValue(RandomInfo *random_info)
796 SetRandomKey(random_info,sizeof(key),(unsigned char *) &key);
869 % void SetRandomKey(RandomInfo *random_info,const size_t length,
874 % o random_info: the random info.
900 MagickExport void SetRandomKey(RandomInfo *random_info,const size_t length,
915 assert(random_info != (RandomInfo *) NULL);
918 LockSemaphoreInfo(random_info->semaphore);
919 signature_info=random_info->signature_info;
920 datum=GetStringInfoDatum(random_info->reservoir);
922 for (p=key; (i != 0) && (random_info->i != 0); i--)
924 *p++=datum[random_info->i];
925 random_info->i++;
926 if (random_info->i == GetSignatureDigestsize(signature_info))
927 random_info->i=0;
932 UpdateSignature(signature_info,random_info->nonce);
934 IncrementRandomNonce(random_info->nonce);
943 UpdateSignature(signature_info,random_info->nonce);
945 IncrementRandomNonce(random_info->nonce);
946 SetStringInfo(random_info->reservoir,GetSignatureDigest(signature_info));
947 random_info->i=i;
948 datum=GetStringInfoDatum(random_info->reservoir);
952 UnlockSemaphoreInfo(random_info->semaphore);