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

dkcMD5.c

説明を見る。
00001 
00010 #define DKUTIL_C_MD5_C
00011 
00012 #include "dkcMD5.h"
00013 #include "dkcStdio.h"
00014 
00015 
00016 DKC_MD5 *WINAPI dkcAllocMD5(){
00017     DKC_MD5 *p = (DKC_MD5 *)dkcAllocate(sizeof(DKC_MD5));
00018     if(NULL==p){
00019         return NULL;
00020     }
00021     dkcMD5Init(p);
00022     return p;
00023 }
00024 
00025 void WINAPI dkcMD5Init(DKC_MD5 *p){
00026     md5_init(&(p->d));
00027     p->mFinalized = FALSE;
00028 }
00029 
00030 int WINAPI dkcMD5Load(DKC_MD5 *p,const BYTE *pBuffer,DWORD dwSize){
00031     if(dwSize > INT_MAX){
00032         return edk_FAILED;
00033     }
00034 
00035     dkcMD5LoadStandard(p,pBuffer,dwSize);
00036     return edk_SUCCEEDED;
00037 }
00038 
00039 void WINAPI dkcMD5LoadStandard(DKC_MD5 *p,const BYTE *pBuffer,DWORD dwSize){
00040     if(p->mFinalized){
00041         return;
00042     }
00043     md5_append(&(p->d),pBuffer,(int)dwSize);
00044 }
00045 
00046 
00047 
00048 void WINAPI dkcMD5Final(DKC_MD5 *p){
00049     if(p->mFinalized){
00050         return;
00051     }
00052     md5_finalize(&(p->d));
00053 
00054     p->mFinalized = TRUE;
00055 }
00056 
00057 int WINAPI dkcMD5Digest(DKC_MD5 *p,BYTE *buff,size_t size){
00058     //if(size < 16){
00059     if(size < MD5_BIN_BUFFER_SIZE){
00060         return edk_BufferOverFlow;
00061     }
00062     //第二引数のbuffのキャストがバグかもしれない。
00063     md5_get_digest(&(p->d),(BYTE *)buff);
00064     return edk_SUCCEEDED;
00065 }
00066 
00067 int WINAPI dkcMD5DigestStr(DKC_MD5 *p,char *buff,size_t size){
00068     //if(size < 32 + 1){
00069     if(size < MD5_STR_BUFFER_SIZE){
00070         return edk_BufferOverFlow;
00071     }
00072     md5_get_str_digest(&(p->d),(char *)buff);
00073     return edk_SUCCEEDED;
00074 }
00075 
00076 int WINAPI dkcMD5FinalDigestStr(DKC_MD5 *p,char *buff,size_t size){
00077     dkcMD5Final(p);
00078     return dkcMD5DigestStr(p,buff,size);
00079 }
00080 
00081 int WINAPI dkcMD5FinalDigest(DKC_MD5 *p,BYTE *buff,size_t size){
00082     dkcMD5Final(p);
00083     return dkcMD5Digest(p,buff,size);
00084 
00085 }
00086 
00087 
00088 int WINAPI dkcFreeMD5(DKC_MD5 **p){
00089     if(NULL==p){
00090         return edk_FAILED;
00091     }
00092     return dkcFree((void **)p);
00093 }

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