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

# 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 }