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

# dkcMD5.h

MD5 Algorithm [詳細]

`#include "dkcOSIndependent.h"`
`#include "md5.h"`

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

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

ソースコードを見る。

## 構成
struct | dkc_MD5
## マクロ定義
#define | MD5_BIN_BUFFER_SIZE 16
| MD5バイナリのシグネチャ保存に必要な領域
#define | MD5_STR_BUFFER_SIZE 33
| MD5文字列のシグネチャ保存に必要な領域
## 型定義
typedef dkc_MD5 | DKC_MD5
## 関数
DKC_EXTERN DKC_MD5 *WINAPI | dkcAllocMD5 ()
DKC_EXTERN void WINAPI | dkcMD5Init (DKC_MD5 *)
DKC_EXTERN int WINAPI | dkcMD5Load (DKC_MD5 *p, const BYTE *pBuffer, DWORD dwSize)
DKC_EXTERN void WINAPI | dkcMD5LoadStandard (DKC_MD5 *p, const BYTE *pBuffer, DWORD dwSize)
| dkcSHA1Load() dkcSHA256Load()等と同じ仕様のLoad
DKC_EXTERN void WINAPI | dkcMD5Final (DKC_MD5 *p)
DKC_EXTERN int WINAPI | dkcMD5DigestStr (DKC_MD5 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI | dkcMD5Digest (DKC_MD5 *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI | dkcMD5FinalDigestStr (DKC_MD5 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI | dkcMD5FinalDigest (DKC_MD5 *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI | dkcFreeMD5 (DKC_MD5 **p)

## 説明

MD5 Algorithm

作者:
  wrapped by d金魚

覚え書き:
  MD5はすでに終わったアルゴリズムなので、SHA1をご利用ください。 また、安全性を考慮するならばSHA256以上にすると良いと思われます。

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

## マクロ定義

#define MD5_BIN_BUFFER_SIZE 16

| MD5バイナリのシグネチャ保存に必要な領域 dkcMD5.h の 19 行で定義されています。 参照元 dkcMD5Digest(), と dkcSHO_MD5Init().

#define MD5_STR_BUFFER_SIZE 33

| MD5文字列のシグネチャ保存に必要な領域 dkcMD5.h の 21 行で定義されています。 参照元 dkcMD5DigestStr(), と dkcSHO_MD5Init().

## 型定義

typedef struct dkc_MD5 DKC_MD5

## 関数

DKC_EXTERN DKC_MD5* WINAPI dkcAllocMD5 | ( |  | ) |

| 戻り値: DKC_MD5構造体への確保したメモリ領域 覚え書き: すでにdkcMD5Init()は呼ばれています。 dkcMD5.c の 16 行で定義されています。 参照先 dkcAllocate(), dkcMD5Init(), と NULL. 参照元 dkcSHO_MD5Init().
    00016                              {
    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 }

DKC_EXTERN int WINAPI dkcFreeMD5 | ( | DKC_MD5 ** | p | ) |

  | 引数:
  | p[in][out] | dkcAllocMD5()で取得したポインタへのポインタ
戻り値: 上手く開放できたらedk_SUCCEEDED dkcMD5.c の 88 行で定義されています。 参照先 dkcFree(), と NULL. 参照元 dkcFreeSHO().
    00088                                   {
    00089     if(NULL==p){
    00090         return edk_FAILED;
    00091     }
    00092     return dkcFree((void **)p);
    00093 }

DKC_EXTERN int WINAPI dkcMD5Digest | ( | DKC_MD5 * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| 参照: dkcMD5DigestStr() dkcMD5.c の 57 行で定義されています。 参照先 BYTE, dkc_MD5::d, MD5_BIN_BUFFER_SIZE, と md5_get_digest(). 参照元 dkcMD5FinalDigest(), と dkcSHO_MD5Init().
    00057                                                           {
    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 }

DKC_EXTERN int WINAPI dkcMD5DigestStr | ( | DKC_MD5 * | p,
|  | char * | buff,
|  | size_t | size
| ) |

  | 引数:
  | p[in][out] | dkcAllocMD5()で取得したポインタ
  | buff[out] | 書き込むバッファへのポインタ
  | size[in] | buffのサイズ
戻り値: 成功したらedk_SUCCEEDEDが返る dkcMD5.c の 67 行で定義されています。 参照先 dkc_MD5::d, md5_get_str_digest(), と MD5_STR_BUFFER_SIZE. 参照元 dkcMD5FinalDigestStr(), と dkcSHO_MD5Init().
    00067                                                              {
    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 }

DKC_EXTERN void WINAPI dkcMD5Final | ( | DKC_MD5 * | p | ) |

  | 引数:
  | p[in][out] | dkcAllocMD5()で取得したポインタ
覚え書き: dkcMD5FinalDigest()を使用する事を奨励します。 dkcMD5.c の 48 行で定義されています。 参照先 dkc_MD5::d, md5_finalize(), dkc_MD5::mFinalized, と TRUE. 参照元 dkcMD5FinalDigest(), dkcMD5FinalDigestStr(), と dkcSHO_MD5Init().
    00048                                    {
    00049     if(p->mFinalized){
    00050         return;
    00051     }
    00052     md5_finalize(&(p->d));
    00053
    00054     p->mFinalized = TRUE;
    00055 }

DKC_EXTERN int WINAPI dkcMD5FinalDigest | ( | DKC_MD5 * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| 参照: dkcMD5FinalDigestStr() dkcMD5.c の 81 行で定義されています。 参照先 dkcMD5Digest(), と dkcMD5Final().
    00081                                                                {
    00082     dkcMD5Final(p);
    00083     return dkcMD5Digest(p,buff,size);
    00084
    00085 }

DKC_EXTERN int WINAPI dkcMD5FinalDigestStr | ( | DKC_MD5 * | p,
|  | char * | buff,
|  | size_t | size
| ) |

| 参照: 引数、戻り値についてはdkcMD5Digest()と同じです。 覚え書き: dkcMD5Final()とdkcMD5Digest()を使用するより、この関数の使用を奨励します。 dkcMD5.c の 76 行で定義されています。 参照先 dkcMD5DigestStr(), と dkcMD5Final().
    00076                                                                   {
    00077     dkcMD5Final(p);
    00078     return dkcMD5DigestStr(p,buff,size);
    00079 }

DKC_EXTERN void WINAPI dkcMD5Init | ( | DKC_MD5 * |  | ) |

| 戻り値: dkcAllocMD5()から取得した領域を初期化する。 dkcMD5.c の 25 行で定義されています。 参照先 dkc_MD5::d, FALSE, md5_init(), と dkc_MD5::mFinalized. 参照元 dkcAllocMD5(), と dkcSHO_MD5Init().
    00025                                   {
    00026     md5_init(&(p->d));
    00027     p->mFinalized = FALSE;
    00028 }

DKC_EXTERN int WINAPI dkcMD5Load | ( | DKC_MD5 * | p,
|  | const BYTE * | pBuffer,
|  | DWORD | dwSize
| ) |

  | 引数:
  | p[in][out] | dkcAllocMD5()で取得したポインタ
  | pBuffer[in] | 読み取るバッファへのポインタ
  | dwSize[in] | バッファにアクセスしてOKなサイズ
戻り値: edk_SUCCEEDEDで成功 覚え書き: ライブラリの都合により、dkcMD5Load()はINT_MAXより大きいバッファを扱えないため dkcMD5.c の 30 行で定義されています。 参照先 dkcMD5LoadStandard(). 参照元 dkcSHO_MD5Init().
    00030                                                                   {
    00031     if(dwSize > INT_MAX){
    00032         return edk_FAILED;
    00033     }
    00034
    00035     dkcMD5LoadStandard(p,pBuffer,dwSize);
    00036     return edk_SUCCEEDED;
    00037 }

DKC_EXTERN void WINAPI dkcMD5LoadStandard | ( | DKC_MD5 * | p,
|  | const BYTE * | pBuffer,
|  | DWORD | dwSize
| ) |

| dkcSHA1Load() dkcSHA256Load()等と同じ仕様のLoad dkcMD5.c の 39 行で定義されています。 参照先 dkc_MD5::d, md5_append(), と dkc_MD5::mFinalized. 参照元 dkcMD5Load().
    00039                                                                            {
    00040     if(p->mFinalized){
    00041         return;
    00042     }
    00043     md5_append(&(p->d),pBuffer,(int)dwSize);
    00044 }