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

# dkcHash.h

lots of Hash Algorithm [詳細]

`#include "dkcOSIndependent.h"`
`#include "st.h"`
`#include "dkcSHA.h"`
`#include "dkcMD5.h"`

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

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

ソースコードを見る。

## 構成
struct | dkc_SecureHashObject
| DKC_SHOの名前は廃止する可能性アリ [詳細]
## 型定義
typedef int(WINAPI * | DKC_SHO_INIT_F_TYPE )(void *)
typedef void(WINAPI * | DKC_SHO_LOAD_F_TYPE )(void *, const BYTE *pBuffer, DWORD dwSize)
typedef void(WINAPI * | DKC_SHO_FINAL_F_TYPE )(void *p)
typedef int(WINAPI * | DKC_SHO_DIGESTSTR_F_TYPE )(void *p, char *buff, size_t size)
typedef int(WINAPI * | DKC_SHO_DIGEST_F_TYPE )(void *p, BYTE *buff, size_t size)
typedef dkc_SecureHashObject | DKC_SECURE_HASH_OBJECT
| DKC_SHOの名前は廃止する可能性アリ
typedef dkc_SecureHashObject | DKC_SHO
| DKC_SHOの名前は廃止する可能性アリ
## 関数
DKC_SECURE_HASH_OBJECT *WINAPI | dkcAllocSHO (UINT option)
int WINAPI | dkcFreeSHO (DKC_SECURE_HASH_OBJECT **pp)
void WINAPI | dkcSHOInit (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHOLoad (DKC_SECURE_HASH_OBJECT *p, const BYTE *pBuffer, DWORD dwSize)
void WINAPI | dkcSHOFinal (DKC_SECURE_HASH_OBJECT *p)
int WINAPI | dkcSHODigestStr (DKC_SECURE_HASH_OBJECT *p, char *buff, size_t size)
int WINAPI | dkcSHODigest (DKC_SECURE_HASH_OBJECT *p, BYTE *buff, size_t size)
DKC_EXTERN int WINAPI | dkcSecureHashCalculateBinaryDigest (UINT hash_option, BYTE *digest_dest, size_t destsize, const BYTE *data, size_t data_size)
| バイナリでのハッシュを出力をする
DKC_EXTERN int WINAPI | dkcSecureHashCalculateStringDigest (UINT hash_option, char *digest_dest, size_t destsize, const BYTE *data, size_t data_size)
| 文字列の出力をする
DKC_EXTERN uint32 | dkcHash24 (uint8 *, size_t)
DKC_EXTERN uint16 | dkcHash16 (uint8 *, size_t)
DKC_EXTERN uint8 | dkcHash8 (uint8 *, size_t)

## 説明

lots of Hash Algorithm

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

## 型定義

typedef struct dkc_SecureHashObject DKC_SECURE_HASH_OBJECT

| DKC_SHOの名前は廃止する可能性アリ

typedef struct dkc_SecureHashObject DKC_SHO

| DKC_SHOの名前は廃止する可能性アリ

typedef int(WINAPI * DKC_SHO_DIGEST_F_TYPE)(void *p, BYTE *buff, size_t size)

| dkcHash.h の 17 行で定義されています。

typedef int(WINAPI * DKC_SHO_DIGESTSTR_F_TYPE)(void *p, char *buff, size_t size)

| dkcHash.h の 16 行で定義されています。

typedef void(WINAPI * DKC_SHO_FINAL_F_TYPE)(void *p)

| dkcHash.h の 15 行で定義されています。

typedef int(WINAPI * DKC_SHO_INIT_F_TYPE)(void *)

| dkcHash.h の 13 行で定義されています。

typedef void(WINAPI * DKC_SHO_LOAD_F_TYPE)(void *, const BYTE *pBuffer, DWORD dwSize)

| dkcHash.h の 14 行で定義されています。

## 関数

DKC_SECURE_HASH_OBJECT* WINAPI dkcAllocSHO | ( | UINT | option | ) |

| dkcHash.c の 97 行で定義されています。 参照先 check_init(), dkcAllocate(), dkcFreeSHO(), dkcSHO_MD5Init(), dkcSHO_SHA1Init(), dkcSHO_SHA256Init(), dkcSHO_SHA384Init(), dkcSHO_SHA512Init(), dkc_SecureHashObject::mObj, dkc_SecureHashObject::mOption, と NULL. 参照元 dkcAllocHMAC(), と shc().
    00098 {
    00099     DKC_SECURE_HASH_OBJECT *p;
    00100     DKC_SHO_HASH_INIT_F_TYPE init_func;
    00101
    00102     check_init();
    00103     p = dkcAllocate(sizeof(DKC_SECURE_HASH_OBJECT));
    00104     if(NULL==p){
    00105         return NULL;
    00106     }
    00107
    00108     {
    00109         switch(option)
    00110         {
    00111         case edkcSH_MD5:
    00112             init_func = dkcSHO_MD5Init;
    00113             break;
    00114         case edkcSH_SHA1:
    00115             init_func = dkcSHO_SHA1Init;
    00116             break;
    00117         case edkcSH_SHA256:
    00118             init_func = dkcSHO_SHA256Init;
    00119             break;
    00120         case edkcSH_SHA384:
    00121             init_func = dkcSHO_SHA384Init;
    00122             break;
    00123         case edkcSH_SHA512:
    00124             init_func = dkcSHO_SHA512Init;
    00125             break;
    00126         default:
    00127             goto Error;
    00128         }
    00129     }
    00130
    00131     //各ハッシュに応じた初期化
    00132     init_func(p);
    00133     if(NULL==p->mObj){
    00134         goto Error;
    00135     }
    00136     p->mOption = option;
    00137     //dkcAllocate()はmemset(0)
    00138     //p->mInited = 0;
    00139
    00140
    00141     return p;
    00142 Error:
    00143     dkcFreeSHO(&p);
    00144     return NULL;
    00145 }

int WINAPI dkcFreeSHO | ( | DKC_SECURE_HASH_OBJECT ** | pp | ) |

| dkcHash.c の 147 行で定義されています。 参照先 dkcFree(), dkcFreeMD5(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkc_SecureHashObject::mObj, dkc_SecureHashObject::mOption, と NULL. 参照元 dkcAllocSHO(), dkcFreeHMAC(), と shc().
    00148 {
    00149     DKC_SECURE_HASH_OBJECT *p = *pp;
    00150     int option;
    00151     void **obj;
    00152
    00153     if(NULL==pp || NULL==p){
    00154         return edk_FAILED;
    00155     }
    00156     option = p->mOption;
    00157     obj = &(p->mObj);
    00158
    00159     switch(option)
    00160     {
    00161     case edkcSH_MD5:
    00162         dkcFreeMD5((DKC_MD5 **)obj);
    00163         break;
    00164     case edkcSH_SHA1:
    00165         dkcFreeSHA1((DKC_SHA1 **)obj);
    00166         break;
    00167     case edkcSH_SHA256:
    00168         dkcFreeSHA256((DKC_SHA256 **)obj);
    00169         break;
    00170     case edkcSH_SHA384:
    00171         dkcFreeSHA384((DKC_SHA384 **)obj);
    00172         break;
    00173     case edkcSH_SHA512:
    00174         dkcFreeSHA512((DKC_SHA512 **)obj);
    00175         break;
    00176     //default:
    00177
    00178
    00179     }//eos
    00180
    00181     return dkcFree(pp);
    00182 }

DKC_EXTERN uint16 dkcHash16 | ( | uint8 * | ,
|  | size_t |
| ) |

| dkcHash.c の 287 行で定義されています。 参照先 dkcdUNSIGNED_16BIT_PRIME_NUM.
    00287                                         {
    00288     uint32 v = 0;
    00289     size_t i;
    00290     for(i=0;i<cycle;i++){
    00291         v = (pd[i] << 3) + v;
    00292     }
    00293     return (uint16)((v % dkcdUNSIGNED_16BIT_PRIME_NUM) & 0xFFFF);
    00294 }

DKC_EXTERN uint32 dkcHash24 | ( | uint8 * | ,
|  | size_t |
| ) |

| dkcHash.c の 296 行で定義されています。 参照先 dkcdUNSIGNED_16BIT_PRIME_NUM.
    00296                                         {
    00297     uint32 v = 0;
    00298     size_t i;
    00299     for(i=0;i<cycle;i++){
    00300         v ^= (pd[i] << 3) + v;
    00301     }
    00302     return (v % dkcdUNSIGNED_16BIT_PRIME_NUM) & 0xFFFFFF;
    00303 }

DKC_EXTERN uint8 dkcHash8 | ( | uint8 * | ,
|  | size_t |
| ) |

| dkcHash.c の 278 行で定義されています。 参照先 dkcdUNSIGNED_8BIT_PRIME_NUM.
    00278                                       {
    00279     uint32 v = 0;
    00280     size_t i;
    00281     for(i=0;i<cycle;i++){
    00282         v ^= (pd[i] << 3) + v;
    00283     }
    00284     return (uint8)((v % dkcdUNSIGNED_8BIT_PRIME_NUM) & 0xFF);
    00285 }

DKC_EXTERN int WINAPI dkcSecureHashCalculateBinaryDigest | ( | UINT | hash_option,
|  | BYTE * | digest_dest,
|  | size_t | destsize,
|  | const BYTE * | data,
|  | size_t | data_size
| ) |

  | バイナリでのハッシュを出力をする 引数:
  | hash_option[in] | edk_SecureHashのどれか
  | digest_dest[out] | ダイジェストの出力バッファ
  | dest_size[in] | digest_destに渡したバッファのサイズ
  | data[in] | ハッシュを計算したいデータ
  | data_size[in] | dataのサイズ
dkcHash.c の 258 行で定義されています。 参照先 shc(), と TRUE. 参照元 dkcAllocHC256NoLimitKeyLength(), dkcAllocSNOW2NoLimitKeyLength(), dkcCalculateInitializeVector(), dkcHMACInit(), と dkcSNOW2GetInitializeVector().
    00261      {
    00262
    00263     return shc(hash_option,digest_dest,destsize,data,data_size,TRUE);
    00264 }

DKC_EXTERN int WINAPI dkcSecureHashCalculateStringDigest | ( | UINT | hash_option,
|  | char * | digest_dest,
|  | size_t | destsize,
|  | const BYTE * | data,
|  | size_t | data_size
| ) |

| 文字列の出力をする 参照: その他引数等は dkcSecureHashCalculateBinaryDigest() dkcHash.c の 267 行で定義されています。 参照先 FALSE, と shc(). 参照元 dkcHMACInit().
    00270  {
    00271
    00272     return shc(hash_option,digest_dest,destsize,data,data_size,FALSE);
    00273 }

int WINAPI dkcSHODigest | ( | DKC_SECURE_HASH_OBJECT * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| dkcHash.c の 218 行で定義されています。 参照先 check_, dkc_SecureHashObject::Digest, と dkc_SecureHashObject::mObj. 参照元 dkcHMACDigest(), dkcHMACFinal(), と shc().
    00219 {
    00220     DKC_SHO_DIGEST_F_TYPE digest = (DKC_SHO_DIGEST_F_TYPE)p->Digest;
    00221     check_();
    00222     return digest(p->mObj,buff,size);
    00223 }

int WINAPI dkcSHODigestStr | ( | DKC_SECURE_HASH_OBJECT * | p,
|  | char * | buff,
|  | size_t | size
| ) |

| dkcHash.c の 210 行で定義されています。 参照先 check_, dkc_SecureHashObject::DigestStr, と dkc_SecureHashObject::mObj. 参照元 dkcHMACDigestStr(), dkcHMACFinal(), と shc().
    00211 {
    00212     DKC_SHO_DIGESTSTR_F_TYPE digeststr = (DKC_SHO_DIGESTSTR_F_TYPE)p->DigestStr;
    00213     check_();
    00214     return digeststr(p->mObj,buff,size);
    00215 }

void WINAPI dkcSHOFinal | ( | DKC_SECURE_HASH_OBJECT * | p | ) |

| dkcHash.c の 204 行で定義されています。 参照先 check_, dkc_SecureHashObject::Final, と dkc_SecureHashObject::mObj. 参照元 dkcHMACFinal(), と shc().
    00204                                                   {
    00205     DKC_SHO_FINAL_F_TYPE final = (DKC_SHO_FINAL_F_TYPE)p->Final;
    00206     check_();
    00207     final(p->mObj);
    00208 }

void WINAPI dkcSHOInit | ( | DKC_SECURE_HASH_OBJECT * | p | ) |

| dkcHash.c の 184 行で定義されています。 参照先 dkc_SecureHashObject::Init, dkc_SecureHashObject::mInited, dkc_SecureHashObject::mObj, と TRUE. 参照元 dkcHMACFinal(), dkcHMACInit(), と dkcSHOLoad().
    00185 {
    00186     DKC_SHO_INIT_F_TYPE init = (DKC_SHO_INIT_F_TYPE)p->Init;
    00187     init(p->mObj);
    00188
    00189     p->mInited = TRUE;
    00190 }

void WINAPI dkcSHOLoad | ( | DKC_SECURE_HASH_OBJECT * | p,
|  | const BYTE * | pBuffer,
|  | DWORD | dwSize
| ) |

| dkcHash.c の 192 行で定義されています。 参照先 check_, dkcSHOInit(), FALSE, dkc_SecureHashObject::Load, dkc_SecureHashObject::mInited, と dkc_SecureHashObject::mObj. 参照元 dkcHMACFinal(), dkcHMACKeyInner(), dkcHMACLoad(), と shc().
    00193 {
    00194     DKC_SHO_LOAD_F_TYPE load = (DKC_SHO_LOAD_F_TYPE)p->Load;
    00195     check_();
    00196     if(FALSE == p->mInited){
    00197         dkcSHOInit(p);
    00198     }
    00199     load(p->mObj,pBuffer,dwSize);
    00200 }