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

dkcMD4.h

MD4 Algorithm [詳細]

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

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

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

ソースコードを見る。

マクロ定義

#define MD4_BIN_BUFFER_SIZE   16
 MD4バイナリのシグネチャ保存に必要な領域
#define MD4_STR_BUFFER_SIZE   33
 MD4文字列のシグネチャ保存に必要な領域

関数

DKC_EXTERN DKC_MD4 *WINAPI dkcAllocMD4 ()
DKC_EXTERN void WINAPI dkcMD4Init (DKC_MD4 *)
DKC_INLINE void dkcMD4InitEx (DKC_MD4 *p, uint8 flags)
DKC_EXTERN void WINAPI dkcMD4Load (DKC_MD4 *p, const BYTE *pBuffer, DWORD dwSize)
DKC_EXTERN void WINAPI dkcMD4Final (DKC_MD4 *p)
DKC_EXTERN int WINAPI dkcMD4DigestStr (DKC_MD4 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcMD4Digest (DKC_MD4 *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI dkcMD4FinalDigestStr (DKC_MD4 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI dkcMD4FinalDigest (DKC_MD4 *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI dkcFreeMD4 (DKC_MD4 **p)


説明

MD4 Algorithm

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

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


マクロ定義

#define MD4_BIN_BUFFER_SIZE   16
 

MD4バイナリのシグネチャ保存に必要な領域

dkcMD4.h20 行で定義されています。

参照元 dkcMD4Digest(), dkcMD4DigestStr(), と dkcSHO_MD4Init().

#define MD4_STR_BUFFER_SIZE   33
 

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

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

参照元 dkcMD4DigestStr(), と dkcSHO_MD4Init().


関数

DKC_EXTERN DKC_MD4* WINAPI dkcAllocMD4  ) 
 

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

dkcMD4.c33 行で定義されています。

参照先 DKC_MD4, dkcAllocate(), dkcMD4Init(), と NULL.

参照元 dkcSHO_MD4Init().

00033                              {
00034     DKC_MD4 *p = dkcAllocate(sizeof(DKC_MD4));
00035     if(NULL==p) return NULL;
00036     dkcMD4Init(p);
00037     return p;
00038 }

DKC_EXTERN int WINAPI dkcFreeMD4 DKC_MD4 **  p  ) 
 

引数:
p[in][out] dkcAllocMD4()で取得したポインタへのポインタ
戻り値:
上手く開放できたらedk_SUCCEEDED

dkcMD4.c41 行で定義されています。

参照先 dkcFree(), と NULL.

参照元 dkcFreeSHO().

00041                                    {
00042     if(NULL==pp || NULL==*pp){
00043         return edk_FAILED;
00044     }
00045     return dkcFree((void **)pp);
00046 }

DKC_EXTERN int WINAPI dkcMD4Digest DKC_MD4 p,
BYTE buff,
size_t  size
 

参照:
dkcMD4DigestStr()

dkcMD4.c282 行で定義されています。

参照先 dkc_memcpy(), と MD4_BIN_BUFFER_SIZE.

参照元 dkcMD4DigestStr(), dkcMD4FinalDigest(), と dkcSHO_MD4Init().

00282                                                           {
00283     
00284     if(size < MD4_BIN_BUFFER_SIZE){
00285         return edk_BufferOverFlow;
00286     }
00287     return dkc_memcpy(buff,size,p->abcd,sizeof(p->abcd));
00288 }

DKC_EXTERN int WINAPI dkcMD4DigestStr DKC_MD4 p,
char *  buff,
size_t  size
 

引数:
p[in][out] dkcAllocMD4()で取得したポインタ
buff[out] 書き込むバッファへのポインタ
size[in] buffのサイズ
戻り値:
成功したらedk_SUCCEEDEDが返る

dkcMD4.c290 行で定義されています。

参照先 dkcMD4Digest(), MD4_BIN_BUFFER_SIZE, MD4_STR_BUFFER_SIZE, と uint8.

参照元 dkcMD4FinalDigestStr(), と dkcSHO_MD4Init().

00290                                                              {
00291     register int i;
00292     uint8 temp[MD4_BIN_BUFFER_SIZE];
00293     if(size < MD4_STR_BUFFER_SIZE){
00294         return edk_BufferOverFlow;
00295     }
00296     i = dkcMD4Digest(p,temp,sizeof(temp));
00297     if(DKUTIL_FAILED(i)){
00298         return i;
00299     }
00300     for (i=0; i<16; i++){
00301         sprintf(buff+i*2,"%02x", temp[i]);
00302     }
00303   buff[32]='\0';
00304     return edk_SUCCEEDED;
00305 }

DKC_EXTERN void WINAPI dkcMD4Final DKC_MD4 p  ) 
 

引数:
p[in][out] dkcAllocMD4()で取得したポインタ
覚え書き:
dkcMD4FinalDigest()を使用する事を奨励します。

dkcMD4.c271 行で定義されています。

参照先 dkcMD_Final(), edkcMD_Finalized, と MD4Transform().

参照元 dkcMD4FinalDigest(), dkcMD4FinalDigestStr(), と dkcSHO_MD4Init().

00271                                    {
00272     //uint8 digest[MD4_BIN_BUFFER_SIZE];
00273     if(p->flags & edkcMD_Finalized){
00274         return;
00275     }
00276     //MD4Final(p);
00277     dkcMD_Final(p,MD4Transform);
00278     //memcpy(p->a8,digest,sizeof(digest));
00279     p->flags |= edkcMD_Finalized;
00280 }

DKC_EXTERN int WINAPI dkcMD4FinalDigest DKC_MD4 p,
BYTE buff,
size_t  size
 

参照:
dkcMD4FinalDigestStr()

dkcMD4.c312 行で定義されています。

参照先 dkcMD4Digest(), と dkcMD4Final().

00312                                                                {
00313     dkcMD4Final(p);
00314     return dkcMD4Digest(p,buff,size);
00315 
00316 }

DKC_EXTERN int WINAPI dkcMD4FinalDigestStr DKC_MD4 p,
char *  buff,
size_t  size
 

参照:
引数、戻り値についてはdkcMD4Digest()と同じです。
覚え書き:
dkcMD4Final()とdkcMD4Digest()を使用するより、この関数の使用を奨励します。

dkcMD4.c307 行で定義されています。

参照先 dkcMD4DigestStr(), と dkcMD4Final().

00307                                                                   {
00308     dkcMD4Final(p);
00309     return dkcMD4DigestStr(p,buff,size);
00310 }

DKC_EXTERN void WINAPI dkcMD4Init DKC_MD4  ) 
 

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

dkcMD4.c50 行で定義されています。

参照元 dkcAllocMD4(), dkcMD4InitEx(), と dkcSHO_MD4Init().

00050                                   {
00051     p->count[0] = p->count[1] = 0;
00052 
00053     p->abcd[0] = 0x67452301;
00054   p->abcd[1] = 0xefcdab89;
00055   p->abcd[2] = 0x98badcfe;
00056   p->abcd[3] = 0x10325476;
00057     memset(p->a8,0,sizeof(p->a8));
00058     //p->mByteOrder = (uint8)dkcGetByteOrder();
00059 }

DKC_INLINE void dkcMD4InitEx DKC_MD4 p,
uint8  flags
 

dkcMD4.h50 行で定義されています。

参照先 dkcMD4Init().

00051 {
00052     dkcMD4Init(p);
00053     p->flags = flags;
00054 }

DKC_EXTERN void WINAPI dkcMD4Load DKC_MD4 p,
const BYTE pBuffer,
DWORD  dwSize
 

引数:
p[in][out] dkcAllocMD4()で取得したポインタ
pBuffer[in] 読み取るバッファへのポインタ
dwSize[in] バッファにアクセスしてOKなサイズ
戻り値:
edk_SUCCEEDEDで成功
覚え書き:
ライブラリの都合により、dkcMD4Load()はINT_MAXより大きいバッファを扱えないため

dkcMD4.c261 行で定義されています。

参照先 dkcMD_Update(), edkcMD_Finalized, と MD4Transform().

参照元 dkcSHO_MD4Init().

00261                                                                    {
00262     if(p->flags & edkcMD_Finalized){
00263         return;
00264     }
00265     dkcMD_Update(p,pBuffer,dwSize,MD4Transform);
00266     //MD4Update(p,pBuffer,dwSize);
00267 }


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