00001
00032 #ifndef DKUTIL_C_SAFE_FILESYSTEM_H
00033 #define DKUTIL_C_SAFE_FILESYSTEM_H
00034
00035 #include "dkcCryptograph.h"
00036 #include "dkcSHA1.h"
00037 #include "dkcSJISFileSystem.h"
00038 #include "dkcBuffer.h"
00039 #include "dkcStream.h"
00040
00041 typedef struct dkc_FileHeader_FileWithSignature{
00043 BYTE little_endian;
00045 UINT sig;
00047 ULONGLONG filesize;
00048
00049
00051 BYTE hash_value[SHA1_BIN_BUFFER_SIZE];
00052
00053 }DKC_FILE_HEADER_FILE_WITH_SIGNATURE;
00054
00055 typedef struct dkc_FileWithSignature{
00056 DKC_STREAM *mStream;
00057 DKC_SHA1 *mSHA1;
00058 DKC_BUFFER *mDustbin;
00060 BYTE mWriteMode;
00062 BYTE mAllLoad;
00064 DKC_FILE_HEADER_FILE_WITH_SIGNATURE mFileHeader;
00065
00066 }DKC_FILE_WITH_SIGNATURE;
00067
00068
00085 DKC_EXTERN DKC_FILE_WITH_SIGNATURE *WINAPI dkcOpenFileWithSignature(
00086 UINT stream_flag,
00087 const char *filename,const char *mode,
00088 const void *dustbin,size_t dustbin_size,
00089 UINT signature
00090 );
00091
00092
00093 DKC_EXTERN int WINAPI dkcFileWithSignatureWrite(DKC_FILE_WITH_SIGNATURE *p,
00094 const void *data,size_t size);
00095
00096 DKC_EXTERN int WINAPI dkcFileWithSignatureWrite16(DKC_FILE_WITH_SIGNATURE *p,
00097 const void *data,size_t size);
00098
00099
00100 DKC_EXTERN int WINAPI dkcFileWithSignatureWrite32(DKC_FILE_WITH_SIGNATURE *p,
00101 const void *data,size_t size);
00102
00103 DKC_EXTERN int WINAPI dkcFileWithSignatureWrite64(DKC_FILE_WITH_SIGNATURE *p,
00104 const void *data,size_t size);
00105
00111 DKC_EXTERN int WINAPI dkcFileWithSignatureRead(DKC_FILE_WITH_SIGNATURE *p,
00112 void *data,size_t size,size_t *readsize);
00113
00120 DKC_EXTERN int WINAPI dkcFileWithSignatureCheckCheat(DKC_FILE_WITH_SIGNATURE *p);
00121
00122 DKC_EXTERN int WINAPI dkcFileWithSignatureCheckCheatFile(const char *filename);
00123
00126 DKC_EXTERN void WINAPI dkcFileWithSignatureFinal(DKC_FILE_WITH_SIGNATURE *p);
00127
00128
00129 DKC_EXTERN int WINAPI dkcCloseFileWithSignature(DKC_FILE_WITH_SIGNATURE **);
00130
00131
00132
00133
00134
00135
00136 typedef struct dkc_Arcfour_File{
00138 DKC_FILE_WITH_SIGNATURE *mFile;
00140 DKC_ARCFOUR_STATE *maf;
00141 }DKC_ARCFOUR_FILE;
00142
00149 DKC_EXTERN DKC_ARCFOUR_FILE *dkcOpenArcfourFile(
00150 UINT stream_flag,size_t stream_size,
00151 const char *filename,const char *mode,
00152 const void *dustbin,size_t dustbin_size,
00153 const void *arcfour_key,size_t arcfour_size,
00154 UINT signature,BOOL *IsCheated
00155 );
00156
00157 DKC_EXTERN int dkcCloseArcfourFile(DKC_ARCFOUR_FILE **);
00158
00159
00160 DKC_EXTERN int WINAPI dkcArcfourFileWrite(DKC_ARCFOUR_FILE *p,
00161 const void *data,size_t size);
00162
00163 DKC_EXTERN int WINAPI dkcArcfourFileWrite16(DKC_ARCFOUR_FILE *p,
00164 const void *data,size_t size);
00165
00166
00167 DKC_EXTERN int WINAPI dkcArcfourFileWrite32(DKC_ARCFOUR_FILE *p,
00168 const void *data,size_t size);
00169
00170 DKC_EXTERN int WINAPI dkcArcfourFileWrite64(DKC_ARCFOUR_FILE *p,
00171 const void *data,size_t size);
00172
00173
00174 DKC_EXTERN int WINAPI dkcArcfourFileRead(DKC_ARCFOUR_FILE *p,
00175 void *data,size_t size);
00176
00177
00178
00179
00180 #endif //end of include once