メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcSafeFileSystem.h

改竄防止機能付き ファイルシステム d金魚 [詳細]

#include "dkcCryptograph.h"
#include "dkcSHA1.h"
#include "dkcSJISFileSystem.h"
#include "dkcBuffer.h"
#include "dkcStream.h"

dkcSafeFileSystem.hのインクルード依存関係図

Include dependency graph

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

Included by dependency graph

ソースコードを見る。

構成

struct  dkc_FileHeader_FileWithSignature
struct  dkc_FileWithSignature
struct  dkc_Arcfour_File

型定義

typedef dkc_FileHeader_FileWithSignature DKC_FILE_HEADER_FILE_WITH_SIGNATURE
typedef dkc_FileWithSignature DKC_FILE_WITH_SIGNATURE
typedef dkc_Arcfour_File DKC_ARCFOUR_FILE

関数

DKC_EXTERN DKC_FILE_WITH_SIGNATURE
*WINAPI 
dkcOpenFileWithSignature (UINT stream_flag, const char *filename, const char *mode, const void *dustbin, size_t dustbin_size, UINT signature)
DKC_EXTERN int WINAPI dkcFileWithSignatureWrite (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcFileWithSignatureWrite16 (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcFileWithSignatureWrite32 (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcFileWithSignatureWrite64 (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcFileWithSignatureRead (DKC_FILE_WITH_SIGNATURE *p, void *data, size_t size, size_t *readsize)
DKC_EXTERN int WINAPI dkcFileWithSignatureCheckCheat (DKC_FILE_WITH_SIGNATURE *p)
DKC_EXTERN int WINAPI dkcFileWithSignatureCheckCheatFile (const char *filename)
DKC_EXTERN void WINAPI dkcFileWithSignatureFinal (DKC_FILE_WITH_SIGNATURE *p)
 SHAの最終処理をする.

DKC_EXTERN int WINAPI dkcCloseFileWithSignature (DKC_FILE_WITH_SIGNATURE **)
DKC_EXTERN DKC_ARCFOUR_FILEdkcOpenArcfourFile (UINT stream_flag, size_t stream_size, const char *filename, const char *mode, const void *dustbin, size_t dustbin_size, const void *arcfour_key, size_t arcfour_size, UINT signature, BOOL *IsCheated)
DKC_EXTERN int dkcCloseArcfourFile (DKC_ARCFOUR_FILE **)
DKC_EXTERN int WINAPI dkcArcfourFileWrite (DKC_ARCFOUR_FILE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcArcfourFileWrite16 (DKC_ARCFOUR_FILE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcArcfourFileWrite32 (DKC_ARCFOUR_FILE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcArcfourFileWrite64 (DKC_ARCFOUR_FILE *p, const void *data, size_t size)
DKC_EXTERN int WINAPI dkcArcfourFileRead (DKC_ARCFOUR_FILE *p, void *data, size_t size)


説明

改竄防止機能付き ファイルシステム d金魚

覚え書き:

ウンチク</h4? http://studiokingyo.fc2web.com/dxlib/kowaza/k4.html#k19 セーブ

-ファイルに保存するすべてのデータをハッシュ関数に食わせる。 -ハッシュ値をいただく。 -ファイルに保存するすべてのデータを暗号化する。 -ハッシュ値を保存 -暗号化したデータを保存

ロード

-ファイルに保存した暗号化したデータをメモリ上にロード -メモリ上にロードしたデータを複合化する -複合化したデータをハッシュ関数に食わせる -ハッシュ値をいただく。 -ファイルに保存してあるハッシュ値とさっき取得したハッシュ値をくらべる。 (ここでハッシュ値が違う場合は、セーブデータが改竄されていると判断できる。)

ファイル構造

dkcSafeFileSystem.h で定義されています。


型定義

typedef struct dkc_Arcfour_File DKC_ARCFOUR_FILE
 

typedef struct dkc_FileHeader_FileWithSignature DKC_FILE_HEADER_FILE_WITH_SIGNATURE
 

参照元 dkcOpenFileWithSignature(), GetHeader(), と HeaderWrite().

typedef struct dkc_FileWithSignature DKC_FILE_WITH_SIGNATURE
 

参照元 dkcCloseFileWithSignature(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcFileWithSignatureWrite(), dkcFileWithSignatureWrite16(), dkcFileWithSignatureWrite32(), dkcFileWithSignatureWrite64(), dkcOpenFileWithSignature(), FileWithSignatureGetDigest(), FileWithSignatureIsFinalized(), FileWithSignatureReadLogic(), FileWithSignatureWriteLogic(), と ReadEOFCheck().


関数

DKC_EXTERN int WINAPI dkcArcfourFileRead DKC_ARCFOUR_FILE p,
void *  data,
size_t  size
 

DKC_EXTERN int WINAPI dkcArcfourFileWrite DKC_ARCFOUR_FILE p,
const void *  data,
size_t  size
 

DKC_EXTERN int WINAPI dkcArcfourFileWrite16 DKC_ARCFOUR_FILE p,
const void *  data,
size_t  size
 

DKC_EXTERN int WINAPI dkcArcfourFileWrite32 DKC_ARCFOUR_FILE p,
const void *  data,
size_t  size
 

DKC_EXTERN int WINAPI dkcArcfourFileWrite64 DKC_ARCFOUR_FILE p,
const void *  data,
size_t  size
 

DKC_EXTERN int dkcCloseArcfourFile DKC_ARCFOUR_FILE **   ) 
 

DKC_EXTERN int WINAPI dkcCloseFileWithSignature DKC_FILE_WITH_SIGNATURE **   ) 
 

dkcSafeFileSystem.c285 行で定義されています。

参照先 DKC_FILE_WITH_SIGNATURE, dkcFree(), dkcFreeBuffer(), dkcFreeSHA1(), dkcFreeStream(), dkcStreamSeek(), dkcStreamTell(), edk_FAILED, edkcStreamSeekSet, dkc_FileHeader_FileWithSignature::filesize, FileWithSignatureGetDigest(), HeaderWrite(), dkc_FileWithSignature::mDustbin, dkc_FileWithSignature::mFileHeader, dkc_FileWithSignature::mSHA1, dkc_FileWithSignature::mStream, dkc_FileWithSignature::mWriteMode, NULL, と ULONGLONG.

00285                                                                  {
00286     DKC_FILE_WITH_SIGNATURE *ptr;
00287     //BYTE buff[SHA1_BUFFER_SIZE];
00288 
00289     //size_t offset = SM_OFFSET(DKC_FILE_HEADER_FILE_WITH_SIGNATURE,hash_value);
00290 
00291     if(NULL==p){
00292         return edk_FAILED;
00293     }
00294 
00295     ptr = *p;
00296     
00297     if(ptr->mWriteMode)
00298     {//書き込みモード時のみ
00299         
00300         //メッセージダイジェストを取得
00301         //FileWithSignatureGetDigest(ptr,buff,sizeof(buff));
00302         FileWithSignatureGetDigest(ptr);
00303         //ファイルサイズ取得
00304         ptr->mFileHeader.filesize = (ULONGLONG)dkcStreamTell(ptr->mStream);
00305         //ptr->mFileHeader.datasize = ptr->mFileHeader.filesize - sizeof(DKC_FILE_HEADER_FILE_WITH_SIGNATURE);
00306 
00307         //メッセージダイジェスト領域の位置を取得
00308         dkcStreamSeek(ptr->mStream,0,edkcStreamSeekSet);
00309         //メッセージダイジェストを書き込む
00310         //dkcStreamWrite(ptr->mStream,buff,sizeof(buff));
00311         HeaderWrite(ptr->mStream,&(ptr->mFileHeader));
00312     }
00313     dkcFreeBuffer(&(ptr->mDustbin));
00314 
00315     dkcFreeStream(&(ptr->mStream));
00316     
00317     dkcFreeSHA1(&(ptr->mSHA1));
00318 
00319     return dkcFree((void **)p);
00320 }

DKC_EXTERN int WINAPI dkcFileWithSignatureCheckCheat DKC_FILE_WITH_SIGNATURE p  ) 
 

戻り値:
edk_SUCCEEDED以外はチートされている。edk_LogicErrorなら呼び出し時が間違っている。 詳しくはdkcOpenFileWithSignature()にて。
覚え書き:
dkcFileWithSignatureRead()でedk_EndProcessが返ってきたらこれを呼び出してチートされているかどうか確かめてください。

dkcSafeFileSystem.c510 行で定義されています。

参照先 BYTE, DKC_FILE_WITH_SIGNATURE, dkc_memcmp(), dkcBufferPointer(), dkcBufferSize(), dkcSHA1FinalDigest(), dkcSHA1Load(), dkcStreamTell(), DKUTIL_FAILED, edk_FAILED, edk_FileCheated_Addition, edk_LogicError, edk_SignatureException, edk_SUCCEEDED, FALSE, dkc_FileHeader_FileWithSignature::filesize, dkc_FileHeader_FileWithSignature::hash_value, dkc_FileWithSignature::mAllLoad, dkc_FileWithSignature::mDustbin, dkc_FileWithSignature::mFileHeader, dkc_FileWithSignature::mSHA1, dkc_FileWithSignature::mStream, dkc_FileWithSignature::mWriteMode, SHA1_BIN_BUFFER_SIZE, TRUE, と ULONGLONG.

00510                                                                      {
00511     ULONGLONG filesize = p->mFileHeader.filesize;
00512     ULONGLONG stream_size = dkcStreamTell(p->mStream);
00513     BYTE buff[SHA1_BIN_BUFFER_SIZE];
00514     int r;
00515 
00516     if(FALSE==p->mAllLoad){//すべて読み込んでいない。
00517         return edk_LogicError;
00518     }
00519     if(TRUE==p->mWriteMode){//書き込みモード時は使用できない。
00520         return edk_LogicError;
00521     }
00522 
00523     dkcSHA1Load(p->mSHA1,
00524         dkcBufferPointer(p->mDustbin),
00525         dkcBufferSize(p->mDustbin)
00526     );
00527 
00528     //メッセージダイジェストが欲しい。(二回呼び出されてもOK)
00529     dkcSHA1FinalDigest(p->mSHA1,buff,sizeof(buff));
00530     
00531     r = dkc_memcmp(
00532         buff,sizeof(buff),
00533         p->mFileHeader.hash_value,sizeof(p->mFileHeader.hash_value));
00534 
00535     if(DKUTIL_FAILED(r)){//違うみたい〜〜。
00536         return edk_SignatureException;
00537     }
00538 
00539     if(filesize < stream_size){//サイズが違う〜〜。へんなもの引っ付いている〜〜。
00540         return edk_FileCheated_Addition;
00541     }
00542     if(filesize == stream_size){
00543         return edk_SUCCEEDED;
00544     }
00545     //誰だよ、チートしたのは・・・。
00546     return edk_FAILED;
00547 
00548 }

DKC_EXTERN int WINAPI dkcFileWithSignatureCheckCheatFile const char *  filename  ) 
 

DKC_EXTERN void WINAPI dkcFileWithSignatureFinal DKC_FILE_WITH_SIGNATURE p  ) 
 

SHAの最終処理をする.

覚え書き:
別にこれを呼び出さなくてもdkcCloseFIleWithSignature()が行ってくれる

DKC_EXTERN int WINAPI dkcFileWithSignatureRead DKC_FILE_WITH_SIGNATURE p,
void *  data,
size_t  size,
size_t *  readsize
 

戻り値:
すべて読み終わると edk_EndProcessを返します。それ以外は指定した初期化フラグに依存します。
覚え書き:
エンディアンの考慮はありません。

dkcSafeFileSystem.c417 行で定義されています。

参照先 DKC_FILE_WITH_SIGNATURE, dkcStreamTell(), DKUTIL_FAILED, edk_EndProcess, edk_FAILED, edk_FileCheated_Addition, edk_LogicError, dkc_FileHeader_FileWithSignature::filesize, FileWithSignatureReadLogic(), dkc_FileWithSignature::mAllLoad, dkc_FileWithSignature::mFileHeader, dkc_FileWithSignature::mStream, dkc_FileWithSignature::mWriteMode, ReadEOFCheck(), TRUE, と ULONGLONG.

00418                                                                                                                 {
00419     size_t tsize;
00420     ULONGLONG filesize = p->mFileHeader.filesize;
00421     ULONGLONG stream_size = dkcStreamTell(p->mStream);
00422     int r = edk_FAILED;
00423 
00424     if(readsize){
00425         //とりあえず、明示的にまだ読み込んでいない事を告げる。
00426         *readsize = 0;
00427     }
00428 
00429     if(p->mWriteMode){//書き込みモードじゃねぇかよ。
00430         return edk_LogicError;
00431     }
00432 
00433     if(filesize == stream_size || TRUE==p->mAllLoad)
00434     {
00435         p->mAllLoad = TRUE;
00436         return edk_EndProcess;
00437     }
00438     //ファイルに冗長なモノが引っ付いている。
00439     if(filesize < stream_size){
00440         p->mAllLoad = TRUE;
00441         return edk_FileCheated_Addition;
00442     }
00443     //読み取りサイズをフィルターする
00444     if(stream_size + size > filesize){
00445         tsize = (size_t)(ULONGLONG)(filesize - stream_size);
00446     }else{
00447         tsize = size;
00448     }
00449     
00450     r = FileWithSignatureReadLogic(
00451         p,data,tsize,readsize);
00452     
00453 
00454     if(DKUTIL_FAILED(r)){
00455         return r;
00456     }
00457         
00458     return ReadEOFCheck(p);
00459     //return dkcStreamRead(p->mStream,data,tsize,readsize);
00460 }

DKC_EXTERN int WINAPI dkcFileWithSignatureWrite DKC_FILE_WITH_SIGNATURE p,
const void *  data,
size_t  size
 

dkcSafeFileSystem.c463 行で定義されています。

参照先 FileWithSigCallBackSend::callback, DKC_FILE_WITH_SIGNATURE, dkcStreamProcess(), dkcStreamWrite(), FWS_CALLBACK_SEND, dkc_FileWithSignature::mStream, FileWithSigCallBackSend::psig, FileWithSigCallBackSend::readsize, と WriteCallback().

00465 {
00466     FWS_CALLBACK_SEND send;
00467     send.callback = dkcStreamWrite;
00468     send.psig = p;
00469     send.readsize = 0;
00470     return dkcStreamProcess(p->mStream,(void *)data,size,WriteCallback,&send);
00471     //return FileWithSignatureWriteLogic(p,data,size,dkcStreamWrite);
00472 
00473 }

DKC_EXTERN int WINAPI dkcFileWithSignatureWrite16 DKC_FILE_WITH_SIGNATURE p,
const void *  data,
size_t  size
 

dkcSafeFileSystem.c475 行で定義されています。

参照先 FileWithSigCallBackSend::callback, DKC_FILE_WITH_SIGNATURE, dkcStreamProcess(), dkcStreamWrite16(), FWS_CALLBACK_SEND, dkc_FileWithSignature::mStream, FileWithSigCallBackSend::psig, FileWithSigCallBackSend::readsize, と WriteCallback().

00477 {
00478     FWS_CALLBACK_SEND send;
00479     send.callback = dkcStreamWrite16;
00480     send.psig = p;
00481     send.readsize = 0;
00482     return dkcStreamProcess(p->mStream,(void *)data,size,WriteCallback,&send);
00483     //return FileWithSignatureWriteLogic(p,data,size,dkcStreamWrite16);
00484 }

DKC_EXTERN int WINAPI dkcFileWithSignatureWrite32 DKC_FILE_WITH_SIGNATURE p,
const void *  data,
size_t  size
 

dkcSafeFileSystem.c488 行で定義されています。

参照先 FileWithSigCallBackSend::callback, DKC_FILE_WITH_SIGNATURE, dkcStreamProcess(), dkcStreamWrite32(), FWS_CALLBACK_SEND, dkc_FileWithSignature::mStream, FileWithSigCallBackSend::psig, FileWithSigCallBackSend::readsize, と WriteCallback().

00490 {
00491     FWS_CALLBACK_SEND send;
00492     send.callback = dkcStreamWrite32;
00493     send.psig = p;
00494     send.readsize = 0;
00495     return dkcStreamProcess(p->mStream,(void *)data,size,WriteCallback,&send);
00496     //return FileWithSignatureWriteLogic(p,data,size,dkcStreamWrite32);
00497 }

DKC_EXTERN int WINAPI dkcFileWithSignatureWrite64 DKC_FILE_WITH_SIGNATURE p,
const void *  data,
size_t  size
 

dkcSafeFileSystem.c499 行で定義されています。

参照先 FileWithSigCallBackSend::callback, DKC_FILE_WITH_SIGNATURE, dkcStreamProcess(), dkcStreamWrite64(), FWS_CALLBACK_SEND, dkc_FileWithSignature::mStream, FileWithSigCallBackSend::psig, FileWithSigCallBackSend::readsize, と WriteCallback().

00501 {
00502     FWS_CALLBACK_SEND send;
00503     send.callback = dkcStreamWrite64;
00504     send.psig = p;
00505     send.readsize = 0;
00506     return dkcStreamProcess(p->mStream,(void *)data,size,WriteCallback,&send);
00507     //return FileWithSignatureWriteLogic(p,data,size,dkcStreamWrite64);
00508 }

DKC_EXTERN DKC_ARCFOUR_FILE* dkcOpenArcfourFile UINT  stream_flag,
size_t  stream_size,
const char *  filename,
const char *  mode,
const void *  dustbin,
size_t  dustbin_size,
const void *  arcfour_key,
size_t  arcfour_size,
UINT  signature,
BOOL IsCheated
 

参照:
引数のほとんどはdkcOpenFileWithSignature()と同じ。
引数:
arcfour_key[in] arcfourに使うキー
arcfour_size[in] arcfour_keyのサイズ
戻り値:
DKC_ARCFOUR_FILE への領域へのポインタ

DKC_EXTERN DKC_FILE_WITH_SIGNATURE* WINAPI dkcOpenFileWithSignature UINT  stream_flag,
const char *  filename,
const char *  mode,
const void *  dustbin,
size_t  dustbin_size,
UINT  signature
 

引数:
stream_flag[in] dkcAllocStream()に使われるflag edkcStreamInitMemoryは使えません。
stream_size[in] dkcAllocStream()に使われるsize
filename[in] ファイル名
mode[in] ファイルオープンモード (aを指定するとエラーとして処理を返します。rかwを指定してください。)
dustbin[in] ゴミデータ
dustbin_size[in] ゴミデータのサイズ
signature[in] 自分が識別するファイルのシグネチャ。このread open時 最初のシグネチャが違うとエラーとなる。
CheckCheat[out] リード Open時にシグネチャをチェックしない時はNULL、 チェックするときはint型変数へのポインタを入れる。 受け取ったポインタ先がedk_SUCCEEDED 以外だったらチートされていた。
  • edk_FileSignatureException:ファイルの内容自体を変化させられた。
  • edk_FileCheated_Addition:ファイルの内容に問題は無いが、冗長なデータが引っ付いている。
戻り値:
DKC_FILE_WITH_SIGNATUREへのポインタ

dkcSafeFileSystem.c113 行で定義されています。

参照先 BOOL, BYTE, DKC_BUFFER, DKC_FILE_HEADER_FILE_WITH_SIGNATURE, DKC_FILE_WITH_SIGNATURE, DKC_SHA1, DKC_STREAM, dkcAllocate(), dkcAllocBuffer(), dkcAllocSHA1(), dkcAllocStreamFileType(), dkcFree(), dkcFreeSHA1(), dkcFreeStream(), dkcIsLittleEndian(), dkcSHA1Load(), dkcStreamSeek(), dkcStreamWrite(), DKUTIL_FAILED, DKUTIL_FLAG_DOWN, DKUTIL_FLAG_UP, edkcStreamBigEndian, edkcStreamInitFile, edkcStreamInitMemory, edkcStreamLittleEndian, edkcStreamProcessAsOrdered, edkcStreamProcessDefault, edkcStreamSeekSet, FALSE, GetHeader(), dkc_FileHeader_FileWithSignature::little_endian, dkc_Stream::mChangeEndian, dkc_FileWithSignature::mDustbin, dkc_FileWithSignature::mFileHeader, dkc_FileWithSignature::mSHA1, dkc_FileWithSignature::mStream, dkc_FileWithSignature::mWriteMode, NULL, dkc_FileHeader_FileWithSignature::sig, と TRUE.

00124 {
00125     DKC_STREAM *sp = NULL;
00126     void *tp = NULL;
00127     DKC_BUFFER *mbp = NULL;
00128     DKC_FILE_WITH_SIGNATURE *p = NULL;
00129     
00130     DKC_FILE_HEADER_FILE_WITH_SIGNATURE header;
00131 
00132     BOOL isWrite = FALSE;
00133     BYTE isLE = (BYTE)dkcIsLittleEndian();
00134 
00135     //UINT stream_flag = edkcStreamInitFile;
00136     
00137     //フラグの変更
00138     stream_flag |= edkcStreamInitFile;
00139     
00140     DKUTIL_FLAG_DOWN(stream_flag,edkcStreamInitMemory);
00141     
00142     DKUTIL_FLAG_DOWN(stream_flag,edkcStreamProcessDefault);
00143 
00144     DKUTIL_FLAG_UP(stream_flag,edkcStreamProcessAsOrdered);
00145 
00146     //size_t stream_size;
00147 
00148 
00149     //エラーチェック
00150     if(NULL==dustbin ||  0 == dustbin_size){
00151         return NULL;
00152     }
00153 
00154     if(NULL==mode || NULL==filename){
00155         return NULL;
00156     }
00157     if(NULL != strchr(mode,'a')){//共通モードでは開けない
00158         return NULL;
00159     }
00160     if(NULL != strchr(mode,'t')){//テキストモードでは開けない。
00161         return NULL;
00162     }
00163 
00164 
00165     //領域取得
00166 
00167     p = (DKC_FILE_WITH_SIGNATURE *)dkcAllocate(sizeof(DKC_FILE_WITH_SIGNATURE));
00168     if(NULL==p){
00169         return NULL;
00170     }
00171     tp = (DKC_SHA1 *)dkcAllocSHA1();
00172     if(NULL==tp){
00173         goto Error;
00174     }
00175 
00176     //ライトモードかどうか。
00177     isWrite = (NULL==strchr(mode,'r'));
00178 
00179     if(isWrite){
00180         //書き込みモードの時
00181         p->mWriteMode = TRUE;   
00182     }else{
00183         if(DKUTIL_FAILED(GetHeader(&header,filename))){
00184             goto Error;
00185         }
00186 
00187         if(header.little_endian){
00188             stream_flag |= edkcStreamLittleEndian;
00189         }else{
00190             stream_flag |= edkcStreamBigEndian;
00191         }
00192 
00193         p->mWriteMode = FALSE;
00194         //とりあえず、コピーしておかないと支障が出る。
00195         memcpy(&(p->mFileHeader),&header,sizeof(header));
00196     }
00197 
00198 
00199     sp = dkcAllocStreamFileType( stream_flag,filename,mode);
00200     if(NULL==sp){
00201         goto Error;
00202     }
00203     //update
00204     p->mStream = sp;
00205 
00206     if(isWrite){
00207         //ヘッダ分を書き込んでおく。
00208         memset(&header,0,sizeof(header));
00209         dkcStreamWrite(sp,&header,sizeof(header));
00210 
00211 
00212         //ヘッダの設定
00213 
00214         //エンディアン設定
00215         if(isLE){
00216             if(FALSE==p->mStream->mChangeEndian){
00217                 p->mFileHeader.little_endian = TRUE;
00218             }else{
00219                 p->mFileHeader.little_endian = FALSE;
00220             }
00221         }else{
00222             if(TRUE==p->mStream->mChangeEndian){
00223                 p->mFileHeader.little_endian = TRUE;
00224             }else{
00225                 p->mFileHeader.little_endian = FALSE;
00226             }
00227         }
00228         //シグネチャを設定
00229         p->mFileHeader.sig = signature;
00230     }
00231 
00232     mbp = dkcAllocBuffer(dustbin,dustbin_size);
00233     if(NULL==mbp){
00234         goto Error;
00235     }
00236 
00237 
00238 
00239     p->mSHA1 = (DKC_SHA1 *)tp;
00240     p->mDustbin = mbp;
00241 
00242     //とりあえず、ゴミ値をSHA1にロード
00243     dkcSHA1Load(p->mSHA1,(const BYTE *)dustbin,dustbin_size);
00244 
00245     if(isWrite==FALSE){
00246         //ストリームをデータ部にシーク
00247         dkcStreamSeek(p->mStream,sizeof(DKC_FILE_HEADER_FILE_WITH_SIGNATURE),edkcStreamSeekSet);
00248     }
00249         
00250 
00251     return p;
00252 Error:
00253     dkcFreeStream(&sp);
00254     dkcFreeSHA1((DKC_SHA1 **)&tp);
00255     dkcFree((void **)&p);
00256     return NULL;
00257 }


dkutil_cに対してTue Dec 7 01:10:29 2004に生成されました。 doxygen 1.3.6