#include "dkcSafeFileSystem.h"
#include "dkcMath.h"
#include "dkcStdio.h"
dkcSafeFileSystem.cのインクルード依存関係図

構成 | |
| struct | FileWithSigCallBackSend |
型定義 | |
| typedef int(WINAPI * | CALLBACK_WRITE_F_T )(DKC_STREAM *, const void *, size_t) |
| typedef FileWithSigCallBackSend | FWS_CALLBACK_SEND |
関数 | |
| DKC_INLINE int | HeaderWrite (DKC_STREAM *p, DKC_FILE_HEADER_FILE_WITH_SIGNATURE *header) |
| DKC_INLINE int | GetHeader (DKC_FILE_HEADER_FILE_WITH_SIGNATURE *header, const char *filename) |
| 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_INLINE BOOL | FileWithSignatureIsFinalized (DKC_FILE_WITH_SIGNATURE *ptr) |
| SHAがFinalizedしていたらTRUE. | |
| DKC_INLINE int | FileWithSignatureGetDigest (DKC_FILE_WITH_SIGNATURE *ptr) |
| SHAをfinalizeしてハッシュ値を取得. | |
| int WINAPI | dkcCloseFileWithSignature (DKC_FILE_WITH_SIGNATURE **p) |
| int WINAPI | WriteCallback (DKC_STREAM *ptr, void *buffer, size_t size, void *data) |
| int WINAPI | ReadCallback (DKC_STREAM *ptr, void *buffer, size_t size, void *data) |
| DKC_INLINE int | FileWithSignatureReadLogic (DKC_FILE_WITH_SIGNATURE *p, void *data, size_t size, size_t *readsize) |
| DKC_INLINE int | FileWithSignatureWriteLogic (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size, CALLBACK_WRITE_F_T callback) |
| DKC_INLINE int | ReadEOFCheck (DKC_FILE_WITH_SIGNATURE *p) |
| int WINAPI | dkcFileWithSignatureRead (DKC_FILE_WITH_SIGNATURE *p, void *data, size_t size, size_t *readsize) |
| int WINAPI | dkcFileWithSignatureWrite (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size) |
| int WINAPI | dkcFileWithSignatureWrite16 (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size) |
| int WINAPI | dkcFileWithSignatureWrite32 (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size) |
| int WINAPI | dkcFileWithSignatureWrite64 (DKC_FILE_WITH_SIGNATURE *p, const void *data, size_t size) |
| int WINAPI | dkcFileWithSignatureCheckCheat (DKC_FILE_WITH_SIGNATURE *p) |
dkcSafeFileSystem.c で定義されています。
|
|
dkcSafeFileSystem.c の 322 行で定義されています。 |
|
|
参照元 dkcFileWithSignatureWrite(), dkcFileWithSignatureWrite16(), dkcFileWithSignatureWrite32(), dkcFileWithSignatureWrite64(), FileWithSignatureReadLogic(), ReadCallback(), と WriteCallback(). |
|
|
dkcSafeFileSystem.c の 285 行で定義されています。 参照先 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(p);
00320 }
|
|
|
||||||||||||||||||||
|
dkcSafeFileSystem.c の 417 行で定義されています。 参照先 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 }
|
|
||||||||||||||||
|
dkcSafeFileSystem.c の 463 行で定義されています。 参照先 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 }
|
|
||||||||||||||||
|
dkcSafeFileSystem.c の 475 行で定義されています。 参照先 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 }
|
|
||||||||||||||||
|
dkcSafeFileSystem.c の 488 行で定義されています。 参照先 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 }
|
|
||||||||||||||||
|
dkcSafeFileSystem.c の 499 行で定義されています。 参照先 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 }
|
|
||||||||||||||||||||||||||||
|
dkcSafeFileSystem.c の 113 行で定義されています。 参照先 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 = 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 = tp;
00240 p->mDustbin = mbp;
00241
00242 //とりあえず、ゴミ値をSHA1にロード
00243 dkcSHA1Load(p->mSHA1,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(&p);
00256 return NULL;
00257 }
|
|
|
SHAをfinalizeしてハッシュ値を取得.
dkcSafeFileSystem.c の 269 行で定義されています。 参照先 DKC_FILE_WITH_SIGNATURE, DKC_INLINE, dkcBufferPointer(), dkcBufferSize(), dkcSHA1FinalDigest(), dkcSHA1Load(), dkc_FileHeader_FileWithSignature::hash_value, dkc_FileWithSignature::mDustbin, dkc_FileWithSignature::mFileHeader, と dkc_FileWithSignature::mSHA1. 参照元 dkcCloseFileWithSignature().
00272 {
00273 dkcSHA1Load(
00274 ptr->mSHA1,
00275 dkcBufferPointer(ptr->mDustbin),
00276 dkcBufferSize(ptr->mDustbin)
00277 );
00278 return dkcSHA1FinalDigest(
00279 ptr->mSHA1,
00280 ptr->mFileHeader.hash_value,
00281 sizeof(ptr->mFileHeader.hash_value)
00282 );
00283 }
|
|
|
SHAがFinalizedしていたらTRUE.
dkcSafeFileSystem.c の 264 行で定義されています。 参照先 BOOL, DKC_FILE_WITH_SIGNATURE, DKC_INLINE, dkc_SHA1::mFinalized, と dkc_FileWithSignature::mSHA1.
00264 {
00265 return ptr->mSHA1->mFinalized;
00266 }
|
|
||||||||||||||||||||
|
dkcSafeFileSystem.c の 362 行で定義されています。 参照先 FileWithSigCallBackSend::callback, DKC_FILE_WITH_SIGNATURE, DKC_INLINE, dkcStreamProcess(), FWS_CALLBACK_SEND, dkc_FileWithSignature::mStream, NULL, FileWithSigCallBackSend::psig, ReadCallback(), と FileWithSigCallBackSend::readsize. 参照元 dkcFileWithSignatureRead().
00363 {
00364 FWS_CALLBACK_SEND send;
00365 int r;
00366 send.callback = NULL;
00367 send.psig = p;
00368 send.readsize = 0;
00369 r = dkcStreamProcess(p->mStream,data,size,ReadCallback,(void *)&send);
00370 if(readsize){
00371 *readsize = send.readsize;
00372 }
00373 return r;
00374 /*
00375 int r;
00376 size_t readsize_ = 0;
00377 if(NULL==readsize){
00378 readsize = &readsize_;
00379 }
00380
00381 r = dkcStreamRead(p->mStream,data,size,readsize);
00382 if(DKUTIL_FAILED(r)){
00383 return r;
00384 }
00385 dkcSHA1Load(p->mSHA1,data,*readsize);
00386 return r;
00387 */
00388 }
|
|
||||||||||||||||||||
|
dkcSafeFileSystem.c の 390 行で定義されています。 参照先 CALLBACK_WRITE_F_T, DKC_FILE_WITH_SIGNATURE, と DKC_INLINE.
00392 {
00393 //return WriteCallback(p->mStream,data,size,&send);
00394 /*int r;
00395 r = callback(p->mStream,data,size);
00396 if(DKUTIL_FAILED(r)){
00397 return r;
00398 }
00399 dkcSHA1Load(p->mSHA1,data,size);
00400
00401 return r;
00402 */
00403 }
|
|
||||||||||||
|
dkcSafeFileSystem.c の 24 行で定義されています。 参照先 BYTE, DKC_FILE_HEADER_FILE_WITH_SIGNATURE, DKC_INLINE, dkcFClose(), dkcFOpen(), dkcFReadAll(), dkcIsLittleEndian(), dkcReverseEndian32(), dkcReverseEndian64(), edk_FAILED, edk_SUCCEEDED, dkc_FileHeader_FileWithSignature::filesize, dkc_FileHeader_FileWithSignature::little_endian, NULL, と dkc_FileHeader_FileWithSignature::sig. 参照元 dkcOpenFileWithSignature().
00027 {
00028 size_t readsize = 0;
00029 size_t mustsize = sizeof(DKC_FILE_HEADER_FILE_WITH_SIGNATURE);
00030 int r = edk_FAILED;
00031 FILE *fp = NULL;
00032 BYTE isLE = (BYTE)dkcIsLittleEndian();
00033 //BYTE get_flag;
00034 const char *mode = "rb";
00035
00036 fp = dkcFOpen(filename,mode);
00037 if(NULL==fp){
00038 goto Exit;
00039 }
00040 fseek(fp,0,SEEK_SET);
00041 //readsize = fread(header,1,mustsize,fp);
00042 readsize = dkcFReadAll(header,mustsize,fp);
00043 if(mustsize != readsize){
00044 goto Exit;
00045 }
00046
00047 if(header->little_endian != isLE)
00048 {//エンディアンが違ったらリバース
00049 header->sig = dkcReverseEndian32(header->sig);
00050 header->filesize = dkcReverseEndian64(header->filesize);
00051 }
00052
00053
00054 r = edk_SUCCEEDED;
00055 Exit:
00056 dkcFClose(&fp);
00057 return r;
00058 /*
00059 DKC_STREAM *fsp;
00060
00061 //読み込み時
00062 fsp = dkcAllocStreamFileType(edkcStreamRead,filename,mode);
00063 if(NULL==fsp){
00064 return edk_FAILED;
00065 }
00066 r = dkcStreamRead(fsp,header,mustsize,&readsize);
00067 if(DKUTIL_FAILED(r)){
00068 return r;
00069 }
00070 if(readsize != mustsize){
00071 return edk_FAILED;
00072 ]
00073 dkcFreeStream(&fsp);
00074 */
00075 }
|
|
||||||||||||
|
dkcSafeFileSystem.c の 12 行で定義されています。 参照先 BYTE, DKC_FILE_HEADER_FILE_WITH_SIGNATURE, DKC_INLINE, DKC_STREAM, dkcIsLittleEndian(), dkcReverseEndian32(), dkcReverseEndian64(), dkcStreamWrite(), dkc_FileHeader_FileWithSignature::filesize, dkc_FileHeader_FileWithSignature::little_endian, と dkc_FileHeader_FileWithSignature::sig. 参照元 dkcCloseFileWithSignature().
00013 {
00014 BYTE isLE = (BYTE)dkcIsLittleEndian();
00015 if(header->little_endian != isLE)
00016 {//ココバグっているかも・・・。
00017 header->sig = dkcReverseEndian32(header->sig);
00018 header->filesize = dkcReverseEndian64(header->filesize);
00019 }
00020 return dkcStreamWrite(p,header,sizeof(DKC_FILE_HEADER_FILE_WITH_SIGNATURE));
00021 }
|
|
||||||||||||||||||||
|
dkcSafeFileSystem.c の 344 行で定義されています。 参照先 DKC_STREAM, dkcSHA1Load(), dkcStreamRead(), DKUTIL_FAILED, FWS_CALLBACK_SEND, dkc_FileWithSignature::mSHA1, FileWithSigCallBackSend::psig, と FileWithSigCallBackSend::readsize. 参照元 FileWithSignatureReadLogic().
00344 {
00345
00346 int r;
00347 FWS_CALLBACK_SEND *pfws = data;
00348 size_t readsize;
00349
00350 r = dkcStreamRead(ptr,buffer,size,&readsize);
00351 (pfws->readsize) = readsize;
00352
00353 if(DKUTIL_FAILED(r)){
00354 return r;
00355 }
00356 dkcSHA1Load(pfws->psig->mSHA1,buffer,readsize);
00357
00358 return r;
00359 }
|
|
|
dkcSafeFileSystem.c の 406 行で定義されています。 参照先 DKC_FILE_WITH_SIGNATURE, DKC_INLINE, dkcStreamTell(), edk_EndProcess, edk_SUCCEEDED, dkc_FileHeader_FileWithSignature::filesize, dkc_FileWithSignature::mAllLoad, dkc_FileWithSignature::mFileHeader, dkc_FileWithSignature::mStream, TRUE, と ULONGLONG. 参照元 dkcFileWithSignatureRead().
00406 {
00407 ULONGLONG filesize = p->mFileHeader.filesize;
00408 ULONGLONG stream_size = dkcStreamTell(p->mStream);
00409 if(filesize == stream_size || TRUE==p->mAllLoad)
00410 {
00411 p->mAllLoad = TRUE;
00412 return edk_EndProcess;
00413 }
00414 return edk_SUCCEEDED;
00415 }
|
|
||||||||||||||||||||
|
dkcSafeFileSystem.c の 330 行で定義されています。 参照先 FileWithSigCallBackSend::callback, CALLBACK_WRITE_F_T, DKC_STREAM, dkcSHA1Load(), DKUTIL_FAILED, FWS_CALLBACK_SEND, dkc_FileWithSignature::mSHA1, と FileWithSigCallBackSend::psig. 参照元 dkcFileWithSignatureWrite(), dkcFileWithSignatureWrite16(), dkcFileWithSignatureWrite32(), と dkcFileWithSignatureWrite64().
00330 {
00331 int r;
00332 FWS_CALLBACK_SEND *pfws = data;
00333 CALLBACK_WRITE_F_T callback = pfws->callback;
00334
00335 r = callback(ptr,buffer,size);
00336
00337 if(DKUTIL_FAILED(r)){
00338 return r;
00339 }
00340 dkcSHA1Load(pfws->psig->mSHA1,buffer,size);
00341 return r;
00342 }
|
1.3.6