#include "dkcDCF.h"
#include "dkcGenericFileSystem.h"
#include "dkcSJISFileSystem.h"
#include "dkcCryptograph.h"
dkcDCF.cのインクルード依存関係図
マクロ定義 | |
#define | DKUTIL_C_DCF_C |
関数 | |
int WINAPI | dkcFreeDCF (DKC_DCF **pp) |
int WINAPI | dkcFileToDCF (uint32 option, const char *save_filename, const char *target_filename, const void *key, size_t keysize) |
int WINAPI | dkcDCFToFile (uint32 option, const char *dest_filename, const char *target_filename, const void *key, size_t keysize) |
BOOL WINAPI | dkcDCFPasswordCheck (DKC_DCF *p, const char *filename, const void *password, size_t size) |
int WINAPI | dkcDCFAllRead (DKC_DCF *p, void *buff, size_t size) |
すべて読み込みます。 内部でdkcDCFInit()されます。 | |
int WINAPI | dkcDCFFileSizeExpect (const char *filename, uint64 *pv) |
元のファイルサイズを予測します。 |
dkcDCF.c で定義されています。
|
|
|
すべて読み込みます。 内部でdkcDCFInit()されます。
参照先 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 }
|
|
元のファイルサイズを予測します。
参照先 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 }
|
|
参照先 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 }
|
|
参照先 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 }
|
|
参照先 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_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 }
|