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

# dkcHash.c

lots of Hash Algorithm [詳細]

`#include "dkcHash.h"`
`#include "dkcStdio.h"`

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

ソースコードを見る。

## マクロ定義
#define | check_() dkcmNOT_ASSERT(sizeof(void *) != sizeof(DKC_SHA1 *));
## 型定義
typedef void(WINAPI * | DKC_SHO_HASH_INIT_F_TYPE )(DKC_SECURE_HASH_OBJECT *)
## 関数
void WINAPI | dkcSHO_MD2Init (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHO_MD4Init (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHO_MD5Init (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHO_SHA1Init (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHO_SHA256Init (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHO_SHA384Init (DKC_SECURE_HASH_OBJECT *p)
void WINAPI | dkcSHO_SHA512Init (DKC_SECURE_HASH_OBJECT *p)
| これによるHMACの生成を奨励する。
static DKC_INLINE void | check_init ()
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)
static DKC_INLINE int | shc (UINT hash_option, void *digest_dest, size_t destsize, const BYTE *data, size_t data_size, dkctBOOL isBinary)
int WINAPI | dkcSecureHashCalculateBinaryDigest (UINT hash_option, BYTE *digest_dest, size_t destsize, const BYTE *data, size_t data_size)
| バイナリでのハッシュを出力をする
int WINAPI | dkcSecureHashCalculateStringDigest (UINT hash_option, char *digest_dest, size_t destsize, const BYTE *data, size_t data_size)
| 文字列の出力をする
uint8 | dkcHash8 (uint8 *pd, size_t cycle)
uint16 | dkcHash16 (uint8 *pd, size_t cycle)
uint32 | dkcHash24 (uint8 *pd, size_t cycle)

## 説明

lots of Hash Algorithm

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

## マクロ定義

#define check_ | (
|  | ) | dkcmNOT_ASSERT(sizeof(void *) != sizeof(DKC_SHA1 *));

| dkcHash.c の 124 行で定義されています。 参照元 dkcSHODigest(), dkcSHODigestStr(), dkcSHOFinal(), と dkcSHOLoad().

## 型定義

typedef void(WINAPI * DKC_SHO_HASH_INIT_F_TYPE)(DKC_SECURE_HASH_OBJECT *)

| dkcHash.c の 126 行で定義されています。

## 関数

static DKC_INLINE void check_init | ( |  | ) | `[static]`

| dkcHash.c の 120 行で定義されています。 参照先 dkcmFORCE_NOT_ASSERT. 参照元 dkcAllocSHO().
    00120                                    {
    00121     dkcmFORCE_NOT_ASSERT(sizeof(void *) != sizeof(DKC_SHA1 *));
    00122 }

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

| dkcHash.c の 129 行で定義されています。 参照先 check_init(), dkcAllocate(), dkcFreeSHO(), dkcSHO_MD2Init(), dkcSHO_MD4Init(), dkcSHO_MD5Init(), dkcSHO_SHA1Init(), dkcSHO_SHA256Init(), dkcSHO_SHA384Init(), dkcSHO_SHA512Init(), dkc_SecureHashObject::mObj, dkc_SecureHashObject::mOption, と NULL. 参照元 dkcAllocHMAC(), と shc().
    00130 {
    00131     DKC_SECURE_HASH_OBJECT *p;
    00132     DKC_SHO_HASH_INIT_F_TYPE init_func;
    00133
    00134     check_init();
    00135     p = dkcAllocate(sizeof(DKC_SECURE_HASH_OBJECT));
    00136     if(NULL==p){
    00137         return NULL;
    00138     }
    00139
    00140     {
    00141         switch(option)
    00142         {
    00143         case edkcSH_MD2:
    00144             init_func = dkcSHO_MD2Init;
    00145             break;
    00146         case edkcSH_MD4:
    00147             init_func = dkcSHO_MD4Init;
    00148             break;
    00149         case edkcSH_MD5:
    00150             init_func = dkcSHO_MD5Init;
    00151             break;
    00152         case edkcSH_SHA1:
    00153             init_func = dkcSHO_SHA1Init;
    00154             break;
    00155         case edkcSH_SHA256:
    00156             init_func = dkcSHO_SHA256Init;
    00157             break;
    00158         case edkcSH_SHA384:
    00159             init_func = dkcSHO_SHA384Init;
    00160             break;
    00161         case edkcSH_SHA512:
    00162             init_func = dkcSHO_SHA512Init;
    00163             break;
    00164         default:
    00165             goto Error;
    00166         }
    00167     }
    00168
    00169     //各ハッシュに応じた初期化
    00170     init_func(p);
    00171     if(NULL==p->mObj){
    00172         goto Error;
    00173     }
    00174     p->mOption = option;
    00175     //dkcAllocate()はmemset(0)
    00176     //p->mInited = 0;
    00177
    00178
    00179     return p;
    00180 Error:
    00181     dkcFreeSHO(&p);
    00182     return NULL;
    00183 }

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

| dkcHash.c の 185 行で定義されています。 参照先 DKC_MD4, dkcFree(), dkcFreeMD2(), dkcFreeMD4(), dkcFreeMD5(), dkcFreeSHA1(), dkcFreeSHA256(), dkcFreeSHA384(), dkcFreeSHA512(), dkc_SecureHashObject::mObj, dkc_SecureHashObject::mOption, と NULL. 参照元 dkcAllocSHO(), dkcFreeHMAC(), と shc().
    00186 {
    00187     DKC_SECURE_HASH_OBJECT *p = *pp;
    00188     int option;
    00189     void **obj;
    00190
    00191     if(NULL==pp || NULL==p){
    00192         return edk_FAILED;
    00193     }
    00194     option = p->mOption;
    00195     obj = &(p->mObj);
    00196
    00197     switch(option)
    00198     {
    00199     case edkcSH_MD2:
    00200         dkcFreeMD2((DKC_MD2 **)obj);
    00201         break;
    00202     case edkcSH_MD4:
    00203         dkcFreeMD4((DKC_MD4 **)obj);
    00204         break;
    00205     case edkcSH_MD5:
    00206         dkcFreeMD5((DKC_MD5 **)obj);
    00207         break;
    00208     case edkcSH_SHA1:
    00209         dkcFreeSHA1((DKC_SHA1 **)obj);
    00210         break;
    00211     case edkcSH_SHA256:
    00212         dkcFreeSHA256((DKC_SHA256 **)obj);
    00213         break;
    00214     case edkcSH_SHA384:
    00215         dkcFreeSHA384((DKC_SHA384 **)obj);
    00216         break;
    00217     case edkcSH_SHA512:
    00218         dkcFreeSHA512((DKC_SHA512 **)obj);
    00219         break;
    00220     //default:
    00221
    00222
    00223     }//eos
    00224
    00225     return dkcFree(pp);
    00226 }

uint16 dkcHash16 | ( | uint8 * | pd,
|  | size_t | cycle
| ) |

| dkcHash.c の 331 行で定義されています。 参照先 dkcdUNSIGNED_16BIT_PRIME_NUM, uint16, と uint32.
    00331                                         {
    00332     uint32 v = 0;
    00333     size_t i;
    00334     for(i=0;i<cycle;i++){
    00335         v = (pd[i] << 3) + v;
    00336     }
    00337     return (uint16)((v % dkcdUNSIGNED_16BIT_PRIME_NUM) & 0xFFFF);
    00338 }

uint32 dkcHash24 | ( | uint8 * | pd,
|  | size_t | cycle
| ) |

| dkcHash.c の 340 行で定義されています。 参照先 dkcdUNSIGNED_16BIT_PRIME_NUM, と uint32.
    00340                                         {
    00341     uint32 v = 0;
    00342     size_t i;
    00343     for(i=0;i<cycle;i++){
    00344         v ^= (pd[i] << 3) + v;
    00345     }
    00346     return (v % dkcdUNSIGNED_16BIT_PRIME_NUM) & 0xFFFFFF;
    00347 }

uint8 dkcHash8 | ( | uint8 * | pd,
|  | size_t | cycle
| ) |

| dkcHash.c の 322 行で定義されています。 参照先 dkcdUNSIGNED_8BIT_PRIME_NUM, uint32, と uint8.
    00322                                       {
    00323     uint32 v = 0;
    00324     size_t i;
    00325     for(i=0;i<cycle;i++){
    00326         v ^= (pd[i] << 3) + v;
    00327     }
    00328     return (uint8)((v % dkcdUNSIGNED_8BIT_PRIME_NUM) & 0xFF);
    00329 }

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 の 302 行で定義されています。 参照先 shc(), と TRUE. 参照元 dkcAllocHC256NoLimitKeyLength(), dkcAllocSNOW2NoLimitKeyLength(), dkcCalculateInitializeVector(), dkcHMACInit(), と dkcSNOW2GetInitializeVector().
    00305      {
    00306
    00307     return shc(hash_option,digest_dest,destsize,data,data_size,TRUE);
    00308 }

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

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

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

| dkcHash.c の 12 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocMD2(), dkcMD2Digest(), dkcMD2DigestStr(), dkcMD2Final(), dkcMD2Init(), dkcMD2Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, MD2_BIN_BUFFER_SIZE, MD2_STR_BUFFER_SIZE, と dkc_SecureHashObject::mObj. 参照元 dkcAllocSHO().
    00012                                                      {
    00013
    00014     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcMD2Init;
    00015     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcMD2Load;
    00016     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcMD2Final;
    00017     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcMD2DigestStr;
    00018     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcMD2Digest;
    00019
    00020     p->digest_string_size = MD2_STR_BUFFER_SIZE;
    00021     p->digest_binary_size = MD2_BIN_BUFFER_SIZE;
    00022
    00023     p->mObj = dkcAllocMD2();
    00024
    00025
    00026 }

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

| dkcHash.c の 28 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocMD4(), dkcMD4Digest(), dkcMD4DigestStr(), dkcMD4Final(), dkcMD4Init(), dkcMD4Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, MD4_BIN_BUFFER_SIZE, MD4_STR_BUFFER_SIZE, と dkc_SecureHashObject::mObj. 参照元 dkcAllocSHO().
    00028                                                      {
    00029
    00030     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcMD4Init;
    00031     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcMD4Load;
    00032     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcMD4Final;
    00033     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcMD4DigestStr;
    00034     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcMD4Digest;
    00035
    00036     p->digest_string_size = MD4_STR_BUFFER_SIZE;
    00037     p->digest_binary_size = MD4_BIN_BUFFER_SIZE;
    00038
    00039     p->mObj = dkcAllocMD4();
    00040
    00041
    00042 }

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

| dkcHash.c の 44 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocMD5(), dkcMD5Digest(), dkcMD5DigestStr(), dkcMD5Final(), dkcMD5Init(), dkcMD5Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, MD5_BIN_BUFFER_SIZE, MD5_STR_BUFFER_SIZE, と dkc_SecureHashObject::mObj. 参照元 dkcAllocSHO().
    00044                                                      {
    00045
    00046
    00047     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Init;
    00048     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Load;
    00049     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Final;
    00050     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcMD5DigestStr;
    00051     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Digest;
    00052
    00053     p->digest_string_size = MD5_STR_BUFFER_SIZE;
    00054     p->digest_binary_size = MD5_BIN_BUFFER_SIZE;
    00055
    00056     p->mObj = dkcAllocMD5();
    00057 }

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

| dkcHash.c の 60 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocSHA1(), dkcSHA1Digest(), dkcSHA1DigestStr(), dkcSHA1Final(), dkcSHA1Init(), dkcSHA1Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, dkc_SecureHashObject::mObj, SHA1_BIN_BUFFER_SIZE, と SHA1_STR_BUFFER_SIZE. 参照元 dkcAllocSHO().
    00060                                                       {
    00061
    00062     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Init;
    00063     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Load;
    00064     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Final;
    00065     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1DigestStr;
    00066     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Digest;
    00067
    00068     p->digest_string_size = SHA1_STR_BUFFER_SIZE;
    00069     p->digest_binary_size = SHA1_BIN_BUFFER_SIZE;
    00070
    00071     p->mObj = dkcAllocSHA1();
    00072 }

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

| dkcHash.c の 75 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocSHA256(), dkcSHA256Digest(), dkcSHA256DigestStr(), dkcSHA256Final(), dkcSHA256Init(), dkcSHA256Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, dkc_SecureHashObject::mObj, SHA256_BIN_BUFFER_SIZE, と SHA256_STR_BUFFER_SIZE. 参照元 dkcAllocSHO().
    00075                                                         {
    00076
    00077     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Init;
    00078     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Load;
    00079     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Final;
    00080     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256DigestStr;
    00081     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Digest;
    00082
    00083     p->digest_string_size = SHA256_STR_BUFFER_SIZE;
    00084     p->digest_binary_size = SHA256_BIN_BUFFER_SIZE;
    00085
    00086     p->mObj = dkcAllocSHA256();
    00087 }

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

| dkcHash.c の 90 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocSHA384(), dkcSHA384Digest(), dkcSHA384DigestStr(), dkcSHA384Final(), dkcSHA384Init(), dkcSHA384Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, dkc_SecureHashObject::mObj, SHA384_BIN_BUFFER_SIZE, と SHA384_STR_BUFFER_SIZE. 参照元 dkcAllocSHO().
    00090                                                         {
    00091
    00092     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Init;
    00093     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Load;
    00094     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Final;
    00095     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384DigestStr;
    00096     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Digest;
    00097
    00098     p->digest_string_size = SHA384_STR_BUFFER_SIZE;
    00099     p->digest_binary_size = SHA384_BIN_BUFFER_SIZE;
    00100
    00101     p->mObj = dkcAllocSHA384();
    00102 }

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

| これによるHMACの生成を奨励する。 dkcHash.c の 106 行で定義されています。 参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, dkcAllocSHA512(), dkcSHA512Digest(), dkcSHA512DigestStr(), dkcSHA512Final(), dkcSHA512Init(), dkcSHA512Load(), dkc_SecureHashObject::Final, dkc_SecureHashObject::Init, dkc_SecureHashObject::Load, dkc_SecureHashObject::mObj, SHA512_BIN_BUFFER_SIZE, と SHA512_STR_BUFFER_SIZE. 参照元 dkcAllocSHO().
    00106                                                         {
    00107
    00108     p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Init;
    00109     p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Load;
    00110     p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Final;
    00111     p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512DigestStr;
    00112     p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Digest;
    00113
    00114     p->digest_string_size = SHA512_STR_BUFFER_SIZE;
    00115     p->digest_binary_size = SHA512_BIN_BUFFER_SIZE;
    00116
    00117     p->mObj = dkcAllocSHA512();
    00118
    00119 }

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

| dkcHash.c の 262 行で定義されています。 参照先 check_, dkc_SecureHashObject::Digest, と dkc_SecureHashObject::mObj. 参照元 dkcHMACDigest(), dkcHMACFinal(), と shc().
    00263 {
    00264     DKC_SHO_DIGEST_F_TYPE digest = (DKC_SHO_DIGEST_F_TYPE)p->Digest;
    00265     check_();
    00266     return digest(p->mObj,buff,size);
    00267 }

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

| dkcHash.c の 254 行で定義されています。 参照先 check_, dkc_SecureHashObject::DigestStr, と dkc_SecureHashObject::mObj. 参照元 dkcHMACDigestStr(), dkcHMACFinal(), と shc().
    00255 {
    00256     DKC_SHO_DIGESTSTR_F_TYPE digeststr = (DKC_SHO_DIGESTSTR_F_TYPE)p->DigestStr;
    00257     check_();
    00258     return digeststr(p->mObj,buff,size);
    00259 }

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

| dkcHash.c の 248 行で定義されています。 参照先 check_, dkc_SecureHashObject::Final, と dkc_SecureHashObject::mObj. 参照元 dkcHMACFinal(), と shc().
    00248                                                   {
    00249     DKC_SHO_FINAL_F_TYPE final = (DKC_SHO_FINAL_F_TYPE)p->Final;
    00250     check_();
    00251     final(p->mObj);
    00252 }

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

| dkcHash.c の 228 行で定義されています。 参照先 dkc_SecureHashObject::Init, dkc_SecureHashObject::mInited, dkc_SecureHashObject::mObj, と TRUE. 参照元 dkcHMACFinal(), dkcHMACInit(), と dkcSHOLoad().
    00229 {
    00230     DKC_SHO_INIT_F_TYPE init = (DKC_SHO_INIT_F_TYPE)p->Init;
    00231     init(p->mObj);
    00232
    00233     p->mInited = TRUE;
    00234 }

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

| dkcHash.c の 236 行で定義されています。 参照先 check_, dkcSHOInit(), FALSE, dkc_SecureHashObject::Load, dkc_SecureHashObject::mInited, と dkc_SecureHashObject::mObj. 参照元 dkcHMACFinal(), dkcHMACKeyInner(), dkcHMACLoad(), と shc().
    00237 {
    00238     DKC_SHO_LOAD_F_TYPE load = (DKC_SHO_LOAD_F_TYPE)p->Load;
    00239     check_();
    00240     if(FALSE == p->mInited){
    00241         dkcSHOInit(p);
    00242     }
    00243     load(p->mObj,pBuffer,dwSize);
    00244 }

static DKC_INLINE int shc | ( | UINT | hash_option,
|  | void * | digest_dest,
|  | size_t | destsize,
|  | const BYTE * | data,
|  | size_t | data_size,
|  | dkctBOOL | isBinary
| ) | `[static]`

| dkcHash.c の 272 行で定義されています。 参照先 dkcAllocSHO(), dkcFreeSHO(), dkcSHODigest(), dkcSHODigestStr(), dkcSHOFinal(), dkcSHOLoad(), と NULL. 参照元 dkcSecureHashCalculateBinaryDigest(), と dkcSecureHashCalculateStringDigest().
    00276 {
    00277     int r = edk_FAILED;
    00278     DKC_SECURE_HASH_OBJECT *p = dkcAllocSHO(hash_option);
    00279     if(NULL==p){
    00280         goto Error;
    00281     }
    00282
    00283     dkcSHOLoad(p,data,data_size);
    00284
    00285     dkcSHOFinal(p);
    00286
    00287     if(isBinary){
    00288         r = dkcSHODigest(p,digest_dest,destsize);
    00289     }else{//false
    00290         r = dkcSHODigestStr(p,digest_dest,destsize);
    00291     }
    00292     if(DKUTIL_FAILED(r)){
    00293         goto Error;
    00294     }
    00295     r = edk_SUCCEEDED;
    00296
    00297 Error:
    00298     dkcFreeSHO(&p);
    00299     return r;
    00300 }