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

dkcDCF.h

dKingyo Cryption File [詳細]

#include "dkcDCF01.h"

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

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

ソースコードを見る。

関数

DKC_EXTERN int WINAPI dkcFreeDCF (DKC_DCF **pp)
DKC_INLINE void WINAPI dkcDCFInit (DKC_DCF *p)
 内部メッセージダイジェスト関数を初期化する
DKC_INLINE int WINAPI dkcDCFWrite (DKC_DCF *p, const void *data, size_t size, size_t *write_size)
DKC_INLINE int WINAPI dkcDCFWriteFinal (DKC_DCF *p)
DKC_INLINE int WINAPI dkcDCFRead (DKC_DCF *p, void *buff, size_t size, size_t *readsize)
DKC_INLINE int WINAPI dkcDCFReadFinal (DKC_DCF *p)
DKC_EXTERN BOOL WINAPI dkcDCFPasswordCheck (DKC_DCF *p, const char *filename, const void *password, size_t size)
DKC_EXTERN int WINAPI dkcFileToDCF (uint32 flags, const char *save_filename, const char *target_filename, const void *key, size_t keysize)
DKC_EXTERN int WINAPI dkcDCFToFile (uint32 flags, const char *dest_filename, const char *target_filename, const void *key, size_t keysize)
DKC_EXTERN int WINAPI dkcDCFAllRead (DKC_DCF *p, void *buff, size_t size)
 すべて読み込みます。 内部でdkcDCFInit()されます。
DKC_EXTERN BOOL WINAPI dkcDCFFileSizeExpect (const char *filename, uint64 *pv)
 元のファイルサイズを予測します。


説明

dKingyo Cryption File

覚え書き:
dKingyo Cryption File形式の実装
から:
2005/11/22

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


関数

DKC_EXTERN int WINAPI dkcDCFAllRead DKC_DCF p,
void *  buff,
size_t  size
 

すべて読み込みます。 内部でdkcDCFInit()されます。

dkcDCF.c87 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpInit, dkc_dKingyoCryptionFile::fpRead, dkc_dKingyoCryptionFile::fpReadFinal, NULL, と uint8.

00088 {
00089 
00090     DKC_DCF_INIT_F_TYPE init;
00091     DKC_DCF_READ_F_TYPE read;
00092     DKC_DCF_READ_FINAL_F_TYPE readfinal;
00093     size_t readsize;
00094     uint8 *pBuff = (uint8 *)buff;
00095     int r = edk_FAILED;
00096     size_t offset = 0;
00097     
00098     if(NULL==p) return edk_ArgumentException;
00099     init = p->fpInit;
00100     read = p->fpRead;
00101     readfinal = p->fpReadFinal;
00102     init(p);
00103 
00104     do
00105     {
00106         r = read(p,pBuff + offset,size - offset,&readsize);
00107         
00108         if(DKUTIL_FAILED(r) && (r != edk_EndProcess))
00109         {
00110             return r;
00111         }
00112         offset += readsize;
00113         if(size < offset){
00114             return edk_OutputBufferWasLost;
00115         }else if(size == offset){
00116             if(edk_EndProcess!=r){
00117                 return edk_OutputBufferWasLost;
00118             }
00119             break;
00120         }
00121     }while(edk_EndProcess!=r);
00122 
00123     r = readfinal(p);
00124     if(DKUTIL_FAILED(r)) return r;
00125 
00126     r = edk_SUCCEEDED;
00127 
00128     return r;
00129 }

DKC_EXTERN BOOL WINAPI dkcDCFFileSizeExpect const char *  filename,
uint64 *  pv
 

元のファイルサイズを予測します。

戻り値:
edk_SUCCEEDEDで成功。それ以外はエラー。DCF形式じゃない場合が濃厚な場合はedk_LogicExceptionを返します。

dkcDCF.c131 行で定義されています。

参照先 dkcAllocFile64(), dkcFile64Read(), dkcFile64Seek(), dkcFile64Tell(), dkcFileExist(), dkcFreeFile64(), edkcReadMode, edkcSeekEnd, edkcSeekSet, FALSE, NULL, と SHA512_BIN_BUFFER_SIZE.

00131                                                                 {
00132     int r;
00133     DKC_FILE64 *p;
00134     size_t readsize;
00135     uint64 tv;
00136     if(dkcFileExist(filename)==FALSE)
00137         return edk_FileNotFound;
00138 
00139     p = dkcAllocFile64(edkcReadMode,filename);
00140     if(NULL==p) return edk_FAILED;
00141 
00142     //ファイルの先頭を取得。
00143     r = dkcFile64Seek(p,SHA512_BIN_BUFFER_SIZE,edkcSeekSet);
00144     if(DKUTIL_FAILED(r)){goto Error;}
00145     r = dkcFile64Read(p,pv,sizeof(*pv),&readsize);
00146     if(DKUTIL_FAILED(r)){goto Error;}
00147     if(readsize != sizeof(*pv)){
00148         r = edk_LogicException;
00149         goto Error;
00150     }
00151 
00152     //ファイルの最後までのサイズと比較
00153     r = dkcFile64Seek(p,0,edkcSeekEnd);
00154     if(DKUTIL_FAILED(r)){goto Error;}
00155     
00156     r = dkcFile64Tell(p,&tv);
00157     if(DKUTIL_FAILED(r)){goto Error;}
00158     
00159     if(*pv != tv - (SHA512_BIN_BUFFER_SIZE + readsize)){
00160         r = edk_LogicException;
00161         goto Error;
00162     }
00163     r = edk_SUCCEEDED;
00164 Error:
00165     dkcFreeFile64(&p);
00166     return r;
00167 }

DKC_INLINE void WINAPI dkcDCFInit DKC_DCF p  ) 
 

内部メッセージダイジェスト関数を初期化する

dkcDCF.h19 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpInit.

00020 {
00021     p->fpInit(p);
00022 }

DKC_EXTERN BOOL WINAPI dkcDCFPasswordCheck DKC_DCF p,
const char *  filename,
const void *  password,
size_t  size
 

dkcDCF.c51 行で定義されています。

参照先 FALSE, dkc_dKingyoCryptionFile::fpInit, dkc_dKingyoCryptionFile::fpRead, dkc_dKingyoCryptionFile::fpReadFinal, NULL, TRUE, と uint8.

00052 {
00053     
00054     DKC_DCF_INIT_F_TYPE init;
00055     DKC_DCF_READ_F_TYPE read;
00056     DKC_DCF_READ_FINAL_F_TYPE readfinal;
00057     BOOL r = FALSE;
00058     uint8 tempbuff[1024];
00059     size_t readsize;
00060     if(NULL==p) goto Error;
00061 
00062     init = p->fpInit;
00063     read = p->fpRead;
00064     readfinal = p->fpReadFinal;
00065 
00066     init(p);
00067     do
00068     {
00069         r = read(p,tempbuff,sizeof(tempbuff),&readsize);
00070         
00071         if(DKUTIL_FAILED(r) && (r != edk_EndProcess))
00072         {
00073             goto Error;
00074         }
00075 
00076     }while(edk_EndProcess!=r);
00077 
00078     r = readfinal(p);
00079     if(DKUTIL_FAILED(r)) goto Error;
00080 
00081     r = TRUE;
00082 Error:
00083     return r;
00084     
00085 }

DKC_INLINE int WINAPI dkcDCFRead DKC_DCF p,
void *  buff,
size_t  size,
size_t *  readsize
 

dkcDCF.h35 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpRead.

00036 {
00037     return p->fpRead(p,buff,size,readsize);
00038 }

DKC_INLINE int WINAPI dkcDCFReadFinal DKC_DCF p  ) 
 

dkcDCF.h41 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpReadFinal.

00042 {
00043     return p->fpReadFinal(p);
00044 }

DKC_EXTERN int WINAPI dkcDCFToFile uint32  flags,
const char *  dest_filename,
const char *  target_filename,
const void *  key,
size_t  keysize
 

dkcDCF.c38 行で定義されています。

参照先 dkcDCF01ToFile(), と edkcDCF01.

00040 {
00041     int r = edk_FAILED;
00042     switch(option){
00043         case edkcDCF01:
00044             r = dkcDCF01ToFile(dest_filename,target_filename,key,keysize);
00045             break;
00046     }
00047     return r;
00048 } 

DKC_INLINE int WINAPI dkcDCFWrite DKC_DCF p,
const void *  data,
size_t  size,
size_t *  write_size
 

dkcDCF.h25 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpWrite.

00026 {
00027     return p->fpWrite(p,data,size,write_size);
00028 }

DKC_INLINE int WINAPI dkcDCFWriteFinal DKC_DCF p  ) 
 

dkcDCF.h30 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpWriteFinal.

00031 {
00032     return p->fpWriteFinal(p);
00033 }

DKC_EXTERN int WINAPI dkcFileToDCF uint32  flags,
const char *  save_filename,
const char *  target_filename,
const void *  key,
size_t  keysize
 

dkcDCF.c26 行で定義されています。

参照先 dkcFileToDCF01(), と edkcDCF01.

00028 {
00029     int r = edk_FAILED;
00030     switch(option){
00031         case edkcDCF01:
00032             r = dkcFileToDCF01(save_filename,target_filename,key,keysize);
00033             break;
00034     }
00035     return r;
00036 }

DKC_EXTERN int WINAPI dkcFreeDCF DKC_DCF **  pp  ) 
 

dkcDCF.c18 行で定義されています。

参照先 dkc_dKingyoCryptionFile::fpFree, と NULL.

00018                                    {
00019     DKC_DCF *p = *pp;
00020     DKC_DCF_FREE_F_TYPE ff;
00021     if(NULL==pp || NULL==p) return edk_FAILED;
00022     ff = p->fpFree;
00023     return ff(pp);
00024 }


dkutil_cに対してMon Jan 16 00:41:03 2006に生成されました。  doxygen 1.4.4