#include "dkcGenericFileSystem.h"
dkcSemiRealRandom.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

構成 | |
| struct | dkc_SemiRealRandom |
マクロ定義 | |
| #define | dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT 64 |
| #define | dkcdSEMI_REAL_RANDOM_BITS 64 |
| #define | dkcdSRR_TEMP_FILE_NAME "secure_rand_temp.tmp\0" |
| テンポラリファイルの名前 | |
| #define | dkcdSRR_TEMP_FILE_NAME_W L"secure_rand_temp.tmp\0" |
型定義 | |
| typedef dkc_SemiRealRandom | DKC_SEMI_REAL_RANDOM |
関数 | |
| DKC_EXTERN DKC_SEMI_REAL_RANDOM *WINAPI | dkcAllocSemiRealRandom () |
| DKC_EXTERN DKC_SEMI_REAL_RANDOM *WINAPI | dkcAllocSemiRealRandomFromGFS (DKC_GENERIC_FILESYSTEM *) |
| DKC_EXTERN int WINAPI | dkcFreeSemiRealRandom (DKC_SEMI_REAL_RANDOM **) |
| DKC_EXTERN int WINAPI | dkcSemiRealRandomInit (DKC_SEMI_REAL_RANDOM *) |
| DKC_EXTERN BOOL WINAPI | dkcSemiRealRandomGet32 (DKC_SEMI_REAL_RANDOM *, uint32 *) |
| DKC_EXTERN uint8 WINAPI | dkcSemiRealRandomGet1 (DKC_SEMI_REAL_RANDOM *) |
上記URLより引用
このプログラムを利用して発生したいかなる損害にも、作者とつげき東北は責任を負わない。各自の責任の下に使用すること。 改良、自作ソフトへの組み込み等は全て自由。このページの内容を著作権だけを変更して、そのまま自分のHPに書くようなことはしないように(著作権法に違反する)。 このページは2002/04/21に公開された。
hdrand.c Copyright(C) とつげき東北
dkcSemiRealRandom.h で定義されています。
|
|
dkcSemiRealRandom.h の 27 行で定義されています。 参照元 test(). |
|
|
dkcSemiRealRandom.h の 25 行で定義されています。 |
|
|
テンポラリファイルの名前
dkcSemiRealRandom.h の 33 行で定義されています。 |
|
|
dkcSemiRealRandom.h の 34 行で定義されています。 |
|
|
|
|
|
|
dkcSemiRealRandom.c の 122 行で定義されています。 参照先 DKC_GENERIC_FILESYSTEM, DKC_SEMI_REAL_RANDOM, dkcAllocate(), dkc_SemiRealRandom::mpObj, と NULL. 参照元 dkcAllocSemiRealRandomWin32().
00123 {
00124 DKC_SEMI_REAL_RANDOM *p;
00125 if(NULL==pa){
00126 return NULL;
00127 }
00128 p = dkcAllocate(sizeof(DKC_SEMI_REAL_RANDOM));
00129 if(NULL==p){
00130 return NULL;
00131 }
00132 p->mpObj = pa;
00133 return p;
00134 }
|
|
|
dkcSemiRealRandom.c の 137 行で定義されています。 参照先 DKC_SEMI_REAL_RANDOM, dkcFree(), dkcFreeGenericFileSystem(), dkc_SemiRealRandom::mpObj, と NULL. 参照元 dkcAllocSemiRealRandomWin32().
00138 {
00139 DKC_SEMI_REAL_RANDOM *p = *pp;
00140 if(NULL==pp || NULL==p)
00141 return edk_FAILED;
00142
00143 dkcFreeGenericFileSystem(&(p->mpObj));
00144 return dkcFree(pp);
00145 }
|
|
|
dkcSemiRealRandom.c の 326 行で定義されています。 参照先 DKC_SEMI_REAL_RANDOM, と generate().
00327 {
00328 #ifdef WIN32
00329 uint32 val;
00330 generate(ptr,&val);
00331 return (uint8) ( (val >> ptr->mRightShift ) & 1) ;
00332
00333 #else
00334
00335
00336 #endif
00337
00338
00339
00340 }
|
|
||||||||||||
|
dkcSemiRealRandom.c の 293 行で定義されています。 参照先 BOOL, DKC_SEMI_REAL_RANDOM, dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT, FALSE, generate(), と TRUE.
00294 {
00295 uint32 tmp=0;
00296 uint32 val;
00297 int totalbit=0;
00298 size_t i,j;
00299 for(j=0;j<dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT;j++)
00300 {
00301 if(FALSE==generate(ptr,&val))
00302 return FALSE;
00303
00304 val = val >> ptr->mRightShift;
00305 for(i=0;i<ptr->mLeftShift;i++)
00306 {
00307 tmp+=val & 1;
00308 val=val >> 1;
00309 totalbit++;
00310 if(totalbit>=32){
00311 *value32 = tmp;
00312 goto End;
00313 }
00314 tmp=tmp<<1;
00315 }
00316 }
00317
00318 End:
00319 if(!(j<dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT))
00320 {
00321 return FALSE;
00322 }
00323 return TRUE;
00324 }
|
|
|
dkcSemiRealRandom.c の 231 行で定義されています。 参照先 DKC_SEMI_REAL_RANDOM, dkc_strcat2(), dkc_wcscat2(), dkcdMAXPATH, dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT, dkcdSRR_PATH_SIZE, dkcdSRR_TEMP_FILE_NAME, dkcdSRR_TEMP_FILE_NAME_W, dkcmFORCE_NOT_ASSERT, GetTempPathA_FT, GetTempPathW_FT, と test().
00232 {
00233 #ifdef WIN32
00234
00235 GetTempPathA_FT pGTPA;
00236 //char *pstr;
00237
00238 GetTempPathW_FT pGTPW;
00239 //wchar_t *pwstr;
00240
00241 if(ptr->mIsNT){
00242 pGTPW = (GetTempPathW_FT)ptr->fpGetTempPath;
00243 dkcmFORCE_NOT_ASSERT(dkcdMAXPATH < pGTPW(0,ptr->pPath));
00244
00245 if(pGTPW(dkcdMAXPATH,ptr->pPath)==0)
00246 return edk_FAILED; //テンポラリファイルフォルダを取得
00247
00248 //仮のテンポラリファイル。ちゃんとやるならGetTempFileNameで。
00249 if(DKUTIL_FAILED(dkc_wcscat2(ptr->pPath,dkcdSRR_PATH_SIZE,dkcdSRR_TEMP_FILE_NAME_W)))
00250 {
00251 return edk_FAILED;
00252 }
00253
00254 }else{//Win9x
00255 pGTPA = (GetTempPathA_FT)ptr->fpGetTempPath;
00256 dkcmFORCE_NOT_ASSERT(dkcdMAXPATH < pGTPA(0,ptr->pPath));
00257
00258 if(pGTPA(dkcdMAXPATH,ptr->pPath)==0)
00259 return edk_FAILED; //テンポラリファイルフォルダを取得
00260
00261 //仮のテンポラリファイル。ちゃんとやるならGetTempFileNameで。
00262 if(DKUTIL_FAILED(dkc_strcat2(ptr->pPath,dkcdSRR_PATH_SIZE,dkcdSRR_TEMP_FILE_NAME)))
00263 {
00264 return edk_FAILED;
00265 }
00266 }
00267 {
00268 int i;
00269 for(i=0;i<dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT;)//64回も行って成功しないは無いだろう・・・
00270 {
00271 if(0xFFFFFFFF==test(ptr,128,40,60)){
00272 i++;
00273 }else{
00274 break;
00275 }
00276 }
00277 if(!(i<64))
00278 {
00279 return edk_FAILED;
00280 }
00281 }
00282
00283 return edk_SUCCEEDED;
00284 #else
00285
00286
00287 #endif
00288
00289 }
|
1.3.6