#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_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の生成を奨励する。 | |
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) |
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) |
文字列の出力をする その他引数等は dkcSecureHashCalculateBinaryDigest() | |
uint8 | dkcHash8 (uint8 *pd, size_t cycle) |
uint16 | dkcHash16 (uint8 *pd, size_t cycle) |
uint32 | dkcHash24 (uint8 *pd, size_t cycle) |
dkcHash.c で定義されています。
|
参照元 dkcSHODigest(), dkcSHODigestStr(), dkcSHOFinal(), と dkcSHOLoad(). |
|
参照元 dkcAllocSHO(). |
|
参照先 DKC_SHA1, と dkcmFORCE_NOT_ASSERT. 参照元 dkcAllocSHO().
00088 { 00089 dkcmFORCE_NOT_ASSERT(sizeof(void *) != sizeof(DKC_SHA1 *)); 00090 } |
|
参照先 check_init(), DKC_SECURE_HASH_OBJECT, DKC_SHO_HASH_INIT_F_TYPE, 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 } |
|
参照先 DKC_MD5, DKC_SECURE_HASH_OBJECT, DKC_SHA1, DKC_SHA256, DKC_SHA384, DKC_SHA512, 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 } |
|
参照先 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 } |
|
参照先 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 } |
|
参照先 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 } |
|
バイナリでのハッシュを出力をする
参照元 dkcHMACInit().
00261 { 00262 00263 return shc(hash_option,digest_dest,destsize,data,data_size,TRUE); 00264 } |
|
文字列の出力をする その他引数等は dkcSecureHashCalculateBinaryDigest()
参照元 dkcHMACInit().
00270 { 00271 00272 return shc(hash_option,digest_dest,destsize,data,data_size,FALSE); 00273 } |
|
参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, DKC_SECURE_HASH_OBJECT, DKC_WINAPI_PROC_F_TYPE, 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().
00012 { 00013 00014 00015 p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Init; 00016 p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Load; 00017 p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Final; 00018 p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcMD5DigestStr; 00019 p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcMD5Digest; 00020 00021 p->digest_string_size = MD5_STR_BUFFER_SIZE; 00022 p->digest_binary_size = MD5_BIN_BUFFER_SIZE; 00023 00024 p->mObj = dkcAllocMD5(); 00025 } |
|
参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, DKC_SECURE_HASH_OBJECT, DKC_WINAPI_PROC_F_TYPE, 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().
00028 { 00029 00030 p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Init; 00031 p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Load; 00032 p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Final; 00033 p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1DigestStr; 00034 p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA1Digest; 00035 00036 p->digest_string_size = SHA1_STR_BUFFER_SIZE; 00037 p->digest_binary_size = SHA1_BIN_BUFFER_SIZE; 00038 00039 p->mObj = dkcAllocSHA1(); 00040 } |
|
参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, DKC_SECURE_HASH_OBJECT, DKC_WINAPI_PROC_F_TYPE, 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().
00043 { 00044 00045 p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Init; 00046 p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Load; 00047 p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Final; 00048 p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256DigestStr; 00049 p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA256Digest; 00050 00051 p->digest_string_size = SHA256_STR_BUFFER_SIZE; 00052 p->digest_binary_size = SHA256_BIN_BUFFER_SIZE; 00053 00054 p->mObj = dkcAllocSHA256(); 00055 } |
|
参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, DKC_SECURE_HASH_OBJECT, DKC_WINAPI_PROC_F_TYPE, 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().
00058 { 00059 00060 p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Init; 00061 p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Load; 00062 p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Final; 00063 p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384DigestStr; 00064 p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA384Digest; 00065 00066 p->digest_string_size = SHA384_STR_BUFFER_SIZE; 00067 p->digest_binary_size = SHA384_BIN_BUFFER_SIZE; 00068 00069 p->mObj = dkcAllocSHA384(); 00070 } |
|
これによるHMACの生成を奨励する。
参照先 dkc_SecureHashObject::Digest, dkc_SecureHashObject::digest_binary_size, dkc_SecureHashObject::digest_string_size, dkc_SecureHashObject::DigestStr, DKC_SECURE_HASH_OBJECT, DKC_WINAPI_PROC_F_TYPE, 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().
00074 { 00075 00076 p->Init = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Init; 00077 p->Load = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Load; 00078 p->Final = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Final; 00079 p->DigestStr = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512DigestStr; 00080 p->Digest = (DKC_WINAPI_PROC_F_TYPE)dkcSHA512Digest; 00081 00082 p->digest_string_size = SHA512_STR_BUFFER_SIZE; 00083 p->digest_binary_size = SHA512_BIN_BUFFER_SIZE; 00084 00085 p->mObj = dkcAllocSHA512(); 00086 00087 } |
|
参照先 BYTE, check_, dkc_SecureHashObject::Digest, DKC_SECURE_HASH_OBJECT, DKC_SHO_DIGEST_F_TYPE, と 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 } |
|
参照先 check_, dkc_SecureHashObject::DigestStr, DKC_SECURE_HASH_OBJECT, DKC_SHO_DIGESTSTR_F_TYPE, と 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 } |
|
参照先 check_, DKC_SECURE_HASH_OBJECT, DKC_SHO_FINAL_F_TYPE, 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 } |
|
参照先 DKC_SECURE_HASH_OBJECT, DKC_SHO_INIT_F_TYPE, 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 } |
|
参照先 BYTE, check_, DKC_SECURE_HASH_OBJECT, DKC_SHO_LOAD_F_TYPE, 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 } |
|
参照先 BYTE, DKC_SECURE_HASH_OBJECT, dkcAllocSHO(), dkcFreeSHO(), dkcSHODigest(), dkcSHODigestStr(), dkcSHOFinal(), dkcSHOLoad(), dkctBOOL, と NULL. 参照元 dkcSecureHashCalculateBinaryDigest(), と dkcSecureHashCalculateStringDigest().
00232 { 00233 int r = edk_FAILED; 00234 DKC_SECURE_HASH_OBJECT *p = dkcAllocSHO(hash_option); 00235 if(NULL==p){ 00236 goto Error; 00237 } 00238 00239 dkcSHOLoad(p,data,data_size); 00240 00241 dkcSHOFinal(p); 00242 00243 if(isBinary){ 00244 r = dkcSHODigest(p,digest_dest,destsize); 00245 }else{//false 00246 r = dkcSHODigestStr(p,digest_dest,destsize); 00247 } 00248 if(DKUTIL_FAILED(r)){ 00249 goto Error; 00250 } 00251 r = edk_SUCCEEDED; 00252 00253 Error: 00254 dkcFreeSHO(&p); 00255 return r; 00256 } |