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

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.h20 行で定義されています。

参照元 dkcMD2Digest(), dkcMD2DigestStr(), と dkcSHO_MD2Init().

#define MD2_STR_BUFFER_SIZE   33
 

MD2文字列のシグネチャ保存に必要な領域

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

参照元 dkcMD2DigestStr(), と dkcSHO_MD2Init().


型定義

typedef struct dkc_MD2 DKC_MD2
 


関数

DKC_EXTERN DKC_MD2* WINAPI dkcAllocMD2  ) 
 

戻り値:
DKC_MD2構造体への確保したメモリ領域
覚え書き:
すでにdkcMD2Init()は呼ばれています。

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

参照先 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.c38 行で定義されています。

参照先 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.c170 行で定義されています。

参照先 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.c179 行で定義されています。

参照先 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.c160 行で定義されています。

参照先 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.c201 行で定義されています。

参照先 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.c196 行で定義されています。

参照先 dkcMD2DigestStr(), と dkcMD2Final().

00196                                                                   {
00197     dkcMD2Final(p);
00198     return dkcMD2DigestStr(p,buff,size);
00199 }

DKC_EXTERN void WINAPI dkcMD2Init DKC_MD2  ) 
 

戻り値:
dkcAllocMD2()から取得した領域を初期化する。

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

参照元 dkcAllocMD2(), dkcMD2InitEx(), と dkcSHO_MD2Init().

00047                                   {
00048     
00049     memset(p, 0, sizeof(*p));
00050 
00051 }

DKC_INLINE void dkcMD2InitEx DKC_MD2 p,
uint8  flags
 

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

参照先 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.c151 行で定義されています。

参照先 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 }


dkutil_cに対してMon Jan 16 00:42:16 2006に生成されました。  doxygen 1.4.4