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

# 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.c の 87 行で定義されています。 参照先 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.c の 131 行で定義されています。 参照先 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.h の 19 行で定義されています。 参照先 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.c の 51 行で定義されています。 参照先 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.h の 35 行で定義されています。 参照先 dkc_dKingyoCryptionFile::fpRead.
    00036 {
    00037     return p->fpRead(p,buff,size,readsize);
    00038 }

DKC_INLINE int WINAPI dkcDCFReadFinal | ( | DKC_DCF * | p | ) |

| dkcDCF.h の 41 行で定義されています。 参照先 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.c の 38 行で定義されています。 参照先 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.h の 25 行で定義されています。 参照先 dkc_dKingyoCryptionFile::fpWrite.
    00026 {
    00027     return p->fpWrite(p,data,size,write_size);
    00028 }

DKC_INLINE int WINAPI dkcDCFWriteFinal | ( | DKC_DCF * | p | ) |

| dkcDCF.h の 30 行で定義されています。 参照先 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.c の 26 行で定義されています。 参照先 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.c の 18 行で定義されています。 参照先 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 }