00001 00021 #ifndef DKUTIL_C_SEMI_REAL_RANDOM_H 00022 #define DKUTIL_C_SEMI_REAL_RANDOM_H 00023 00024 00025 #define dkcdSEMI_REAL_RANDOM_TRIAL_AND_ERROR_LIMIT 64 00026 00027 #define dkcdSEMI_REAL_RANDOM_BITS 64 00028 00029 00030 #include "dkcGenericFileSystem.h" 00031 00033 #define dkcdSRR_TEMP_FILE_NAME "secure_rand_temp.tmp\0" 00034 #define dkcdSRR_TEMP_FILE_NAME_W L"secure_rand_temp.tmp\0" 00035 00036 typedef struct dkc_SemiRealRandom{ 00037 DKC_GENERIC_FILESYSTEM *mpObj; 00038 #ifdef WIN32 00039 BOOL mIsNT; 00040 void *pPath; 00041 DKC_DLL *pDLL; 00042 void *fpGetTempPath; 00043 void *fpGetTempFileName; 00044 void *fpQueryPerformanceCounter; 00045 uint32 mLeftShift; 00046 uint32 mRightShift; 00047 #else 00048 00049 #endif 00050 00051 }DKC_SEMI_REAL_RANDOM; 00052 00053 00058 DKC_EXTERN DKC_SEMI_REAL_RANDOM *WINAPI dkcAllocSemiRealRandom(); 00059 00060 00061 DKC_EXTERN DKC_SEMI_REAL_RANDOM *WINAPI dkcAllocSemiRealRandomFromGFS(DKC_GENERIC_FILESYSTEM *); 00062 00063 00064 DKC_EXTERN int WINAPI dkcFreeSemiRealRandom(DKC_SEMI_REAL_RANDOM **); 00065 00066 DKC_EXTERN int WINAPI dkcSemiRealRandomInit(DKC_SEMI_REAL_RANDOM *); 00067 00068 DKC_EXTERN BOOL WINAPI dkcSemiRealRandomGet32(DKC_SEMI_REAL_RANDOM *,uint32 *); 00069 00070 DKC_EXTERN uint8 WINAPI dkcSemiRealRandomGet1(DKC_SEMI_REAL_RANDOM *); 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 #endif //end of include once