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

# dkcMD2.h

MD2 Algorithm [詳細]

`#include "md_misc.h"`
`#include "dkcOSIndependent.h"`

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

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

ソースコードを見る。

## 構成
struct | dkc_MD2
## マクロ定義
#define | MD2_BIN_BUFFER_SIZE 16
| MD2バイナリのシグネチャ保存に必要な領域
#define | MD2_STR_BUFFER_SIZE 33
| MD2文字列のシグネチャ保存に必要な領域
## 型定義
typedef dkc_MD2 | DKC_MD2
## 関数
DKC_EXTERN DKC_MD2 *WINAPI | dkcAllocMD2 ()
DKC_EXTERN void WINAPI | dkcMD2Init (DKC_MD2 *)
DKC_INLINE void | dkcMD2InitEx (DKC_MD2 *p, uint8 flags)
DKC_EXTERN void WINAPI | dkcMD2Load (DKC_MD2 *p, const BYTE *pBuffer, DWORD dwSize)
DKC_EXTERN void WINAPI | dkcMD2Final (DKC_MD2 *p)
DKC_EXTERN int WINAPI | dkcMD2DigestStr (DKC_MD2 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI | dkcMD2Digest (DKC_MD2 *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI | dkcMD2FinalDigestStr (DKC_MD2 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI | dkcMD2FinalDigest (DKC_MD2 *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI | dkcFreeMD2 (DKC_MD2 **p)

## 説明

MD2 Algorithm

作者:
  wrapped by d金魚

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

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

## マクロ定義

#define MD2_BIN_BUFFER_SIZE 16

| MD2バイナリのシグネチャ保存に必要な領域 dkcMD2.h の 20 行で定義されています。 参照元 dkcMD2Digest(), dkcMD2DigestStr(), と dkcSHO_MD2Init().

#define MD2_STR_BUFFER_SIZE 33

| MD2文字列のシグネチャ保存に必要な領域 dkcMD2.h の 22 行で定義されています。 参照元 dkcMD2DigestStr(), と dkcSHO_MD2Init().

## 型定義

typedef struct dkc_MD2 DKC_MD2

## 関数

DKC_EXTERN DKC_MD2* WINAPI dkcAllocMD2 | ( |  | ) |

| 戻り値: DKC_MD2構造体への確保したメモリ領域 覚え書き: すでにdkcMD2Init()は呼ばれています。 dkcMD2.c の 30 行で定義されています。 参照先 dkcAllocate(), dkcMD2Init(), と NULL. 参照元 dkcSHO_MD2Init().
    00030                              {
    00031     DKC_MD2 *p = dkcAllocate(sizeof(DKC_MD2));
    00032     if(NULL==p) return NULL;
    00033     dkcMD2Init(p);
    00034     return p;
    00035 }

DKC_EXTERN int WINAPI dkcFreeMD2 | ( | DKC_MD2 ** | p | ) |

  | 引数:
  | p[in][out] | dkcAllocMD2()で取得したポインタへのポインタ
戻り値: 上手く開放できたらedk_SUCCEEDED dkcMD2.c の 38 行で定義されています。 参照先 dkcFree(), と NULL. 参照元 dkcFreeSHO().
    00038                                    {
    00039     if(NULL==pp || NULL==*pp){
    00040         return edk_FAILED;
    00041     }
    00042     return dkcFree((void **)pp);
    00043 }

DKC_EXTERN int WINAPI dkcMD2Digest | ( | DKC_MD2 * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| 参照: dkcMD2DigestStr() dkcMD2.c の 170 行で定義されています。 参照先 hash_digest(), と MD2_BIN_BUFFER_SIZE. 参照元 dkcMD2DigestStr(), dkcMD2FinalDigest(), と dkcSHO_MD2Init().
    00170                                                           {
    00171
    00172     if(size < MD2_BIN_BUFFER_SIZE){
    00173         return edk_BufferOverFlow;
    00174     }
    00175     hash_digest(p,buff);
    00176     return edk_SUCCEEDED;
    00177 }

DKC_EXTERN int WINAPI dkcMD2DigestStr | ( | DKC_MD2 * | p,
|  | char * | buff,
|  | size_t | size
| ) |

  | 引数:
  | p[in][out] | dkcAllocMD2()で取得したポインタ
  | buff[out] | 書き込むバッファへのポインタ
  | size[in] | buffのサイズ
戻り値: 成功したらedk_SUCCEEDEDが返る dkcMD2.c の 179 行で定義されています。 参照先 dkcMD2Digest(), MD2_BIN_BUFFER_SIZE, MD2_STR_BUFFER_SIZE, と uint8. 参照元 dkcMD2FinalDigestStr(), と dkcSHO_MD2Init().
    00179                                                              {
    00180     register int i;
    00181     uint8 temp[MD2_BIN_BUFFER_SIZE];
    00182     if(size < MD2_STR_BUFFER_SIZE){
    00183         return edk_BufferOverFlow;
    00184     }
    00185     i = dkcMD2Digest(p,temp,sizeof(temp));
    00186     if(DKUTIL_FAILED(i)){
    00187         return i;
    00188     }
    00189     for (i=0; i<16; i++){
    00190         sprintf(buff+i*2,"%02x", temp[i]);
    00191     }
    00192   buff[32]='\0';
    00193     return edk_SUCCEEDED;
    00194 }

DKC_EXTERN void WINAPI dkcMD2Final | ( | DKC_MD2 * | p | ) |

  | 引数:
  | p[in][out] | dkcAllocMD2()で取得したポインタ
覚え書き: dkcMD2FinalDigest()を使用する事を奨励します。 dkcMD2.c の 160 行で定義されています。 参照先 edkcMD_Finalized, dkc_MD2::flags, と hash_final(). 参照元 dkcMD2FinalDigest(), dkcMD2FinalDigestStr(), と dkcSHO_MD2Init().
    00160                                    {
    00161     //uint8 digest[MD2_BIN_BUFFER_SIZE];
    00162     if(p->flags & edkcMD_Finalized){
    00163         return;
    00164     }
    00165     hash_final(p);
    00166     //memcpy(p->u_store.a8,digest,sizeof(digest));
    00167     p->flags |= edkcMD_Finalized;
    00168 }

DKC_EXTERN int WINAPI dkcMD2FinalDigest | ( | DKC_MD2 * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| 参照: dkcMD2FinalDigestStr() dkcMD2.c の 201 行で定義されています。 参照先 dkcMD2Digest(), と dkcMD2Final().
    00201                                                                {
    00202     dkcMD2Final(p);
    00203     return dkcMD2Digest(p,buff,size);
    00204
    00205 }

DKC_EXTERN int WINAPI dkcMD2FinalDigestStr | ( | DKC_MD2 * | p,
|  | char * | buff,
|  | size_t | size
| ) |

| 参照: 引数、戻り値についてはdkcMD2Digest()と同じです。 覚え書き: dkcMD2Final()とdkcMD2Digest()を使用するより、この関数の使用を奨励します。 dkcMD2.c の 196 行で定義されています。 参照先 dkcMD2DigestStr(), と dkcMD2Final().
    00196                                                                   {
    00197     dkcMD2Final(p);
    00198     return dkcMD2DigestStr(p,buff,size);
    00199 }

DKC_EXTERN void WINAPI dkcMD2Init | ( | DKC_MD2 * |  | ) |

| 戻り値: dkcAllocMD2()から取得した領域を初期化する。 dkcMD2.c の 47 行で定義されています。 参照元 dkcAllocMD2(), dkcMD2InitEx(), と dkcSHO_MD2Init().
    00047                                   {
    00048
    00049     memset(p, 0, sizeof(*p));
    00050
    00051 }

DKC_INLINE void dkcMD2InitEx | ( | DKC_MD2 * | p,
|  | uint8 | flags
| ) |

| dkcMD2.h の 46 行で定義されています。 参照先 dkcMD2Init(), と dkc_MD2::flags.
    00047 {
    00048     dkcMD2Init(p);
    00049     p->flags = flags;
    00050 }

DKC_EXTERN void WINAPI dkcMD2Load | ( | DKC_MD2 * | p,
|  | const BYTE * | pBuffer,
|  | DWORD | dwSize
| ) |

  | 引数:
  | p[in][out] | dkcAllocMD2()で取得したポインタ
  | pBuffer[in] | 読み取るバッファへのポインタ
  | dwSize[in] | バッファにアクセスしてOKなサイズ
戻り値: edk_SUCCEEDEDで成功 覚え書き: ライブラリの都合により、dkcMD2Load()はINT_MAXより大きいバッファを扱えないため dkcMD2.c の 151 行で定義されています。 参照先 edkcMD_Finalized, dkc_MD2::flags, と hash_update(). 参照元 dkcSHO_MD2Init().
    00151                                                                    {
    00152     if(p->flags & edkcMD_Finalized){
    00153         return;
    00154     }
    00155     hash_update(p,pBuffer,dwSize);
    00156 }