#include "dkcOSIndependent.h"
dkcSHA512.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_SHA512 |
マクロ定義 | |
#define | SHA512_HASH 8 |
#define | SHA512_BLOCK 16 |
#define | SHA512_WORK 80 |
#define | SHA512_BIN_BUFFER_SIZE (SHA512_HASH * 8) |
SHA512の生ハッシュ値(binary)に必要なバッファサイズ. | |
#define | SHA512_STR_BUFFER_SIZE (SHA512_HASH * 16 + 1) |
SHA512のハッシュ文字列に必要なバッファサイズ. | |
型定義 | |
typedef dkc_SHA512 | DKC_SHA512 |
関数 | |
DKC_EXTERN DKC_SHA512 *WINAPI | dkcAllocSHA512 () |
DKC_EXTERN void WINAPI | dkcSHA512Init (DKC_SHA512 *) |
dkcAllocSHA512()から取得した領域を初期化する。 | |
DKC_EXTERN void WINAPI | dkcSHA512Load (DKC_SHA512 *p, const BYTE *pBuffer, DWORD dwSize) |
DKC_EXTERN void WINAPI | dkcSHA512Final (DKC_SHA512 *p) |
DKC_EXTERN int WINAPI | dkcSHA512DigestStr (DKC_SHA512 *p, char *buff, size_t size) |
文字列のMessage Digestを取得する。 | |
DKC_EXTERN int WINAPI | dkcSHA512Digest (DKC_SHA512 *p, BYTE *buff, size_t size) |
バイナリのMessage Digestを取得する。 | |
DKC_EXTERN int WINAPI | dkcSHA512FinalDigestStr (DKC_SHA512 *p, char *buff, size_t size) |
DKC_EXTERN int WINAPI | dkcSHA512FinalDigest (DKC_SHA512 *p, BYTE *buff, size_t size) |
DKC_EXTERN int WINAPI | dkcFreeSHA512 (DKC_SHA512 **p) |
dkcSHA512.h で定義されています。
|
SHA512の生ハッシュ値(binary)に必要なバッファサイズ.
dkcSHA512.h の 21 行で定義されています。 参照元 dkcSHA512Digest(), と dkcSHO_SHA512Init(). |
|
dkcSHA512.h の 16 行で定義されています。 参照元 Default_Generate(). |
|
dkcSHA512.h の 15 行で定義されています。 参照元 Default_Generate(), dkcSHA512DigestStr(), と dkcSHA512Init(). |
|
SHA512のハッシュ文字列に必要なバッファサイズ.
dkcSHA512.h の 23 行で定義されています。 |
|
dkcSHA512.h の 17 行で定義されています。 参照元 Default_Generate(). |
|
|
dkcSHA512.c の 398 行で定義されています。 参照先 CheckMMX(), DKC_SHA512, dkcAllocate(), dkcSHA512Init(), dkc_SHA512::m_bMMX, と NULL. 参照元 dkcSHO_SHA512Init().
00398 { 00399 DKC_SHA512 *p = dkcAllocate(sizeof(DKC_SHA512)); 00400 if(NULL==p){ 00401 return NULL; 00402 } 00403 p->m_bMMX = CheckMMX(); 00404 dkcSHA512Init(p); 00405 return p; 00406 } |
|
dkcSHA512.c の 533 行で定義されています。 参照先 DKC_SHA512, dkcFree(), と NULL. 参照元 dkcFreeSHO().
|
|
バイナリのMessage Digestを取得する。
dkcSHA512.c の 509 行で定義されています。 参照先 BYTE, DKC_SHA512, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, と SHA512_BIN_BUFFER_SIZE. 参照元 dkcSHA512FinalDigest(), と dkcSHO_SHA512Init().
00509 { 00510 //if(sizeof(QWORD) * SHA512_HASH > size){ 00511 size_t i; 00512 if(SHA512_BIN_BUFFER_SIZE > size){ 00513 return edk_BufferOverFlow; 00514 } 00515 if(FALSE==p->mFinalized){ 00516 //まだFinalやってないっつーの 00517 return edk_LogicError; 00518 } 00519 for(i = 0; i < SHA512_BIN_BUFFER_SIZE; ++i){ 00520 buff[i] = (BYTE)(p->m_qwH[i >> 3] >> (8 * (~i & 7))); 00521 } 00522 return edk_SUCCEEDED; 00523 //return dkc_memcpy(buff,size,(const void *)p->m_qwH,sizeof(p->m_qwH)); 00524 } |
|
文字列のMessage Digestを取得する。
dkcSHA512.c の 477 行で定義されています。 参照先 DKC_SHA512, dkc_strcpy(), DWORD, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, SHA512_HASH, と SHA512_STR_BUFFER_SIZE. 参照元 dkcSHA512FinalDigestStr(), と dkcSHO_SHA512Init().
00477 { 00478 //char s[SHA512_HASH * 16 + 1]; 00479 char s[ SHA512_STR_BUFFER_SIZE ]; 00480 int i; 00481 00482 s[SHA512_HASH * 16 ] = '\0'; 00483 //if(size <= sizeof(s)){ 00484 if(SHA512_STR_BUFFER_SIZE > size){ 00485 return edk_BufferOverFlow; 00486 } 00487 if(FALSE==p->mFinalized){ 00488 //まだFinalやってないっつーの 00489 return edk_LogicError; 00490 } 00491 00492 for(i = 0; i < SHA512_HASH; i++){ 00493 sprintf(s + i * 16, "%08x", (DWORD)(p->m_qwH[i] >> 32)); 00494 sprintf(s + i * 16 + 8, "%08x", (DWORD)(p->m_qwH[i] & 0x00000000ffffffff)); 00495 } 00496 //std::string strDigest = s; 00497 //return strDigest; 00498 return dkc_strcpy(buff,size,s,strlen(s)); 00499 } |
|
dkcSHA512.c の 456 行で定義されています。 参照先 BYTE, DKC_SHA512, dkcSHA512Load(), dkc_SHA512::m_nNumChr, dkc_SHA512::m_qwHNumBits, dkc_SHA512::m_qwLNumBits, dkc_SHA512::mFinalized, QWORD, ReverseEndianQWORD(), SHA512_BUFFER_SIZE, と TRUE. 参照元 dkcSHA384Final(), dkcSHA512FinalDigest(), dkcSHA512FinalDigestStr(), と dkcSHO_SHA512Init().
00456 { 00457 00458 BYTE cZero = 0x00; 00459 BYTE cOne = 0x80; 00460 QWORD qwHNumBits; 00461 QWORD qwLNumBits; 00462 if(p->mFinalized){ 00463 return; 00464 } 00465 qwHNumBits = ReverseEndianQWORD(p->m_qwHNumBits); 00466 qwLNumBits = ReverseEndianQWORD(p->m_qwLNumBits); 00467 00468 dkcSHA512Load(p,&cOne, 1); 00469 while(p->m_nNumChr != SHA512_BUFFER_SIZE - 16) dkcSHA512Load(p,&cZero, 1); 00470 00471 dkcSHA512Load(p,(BYTE *)&qwHNumBits, 8); 00472 dkcSHA512Load(p,(BYTE *)&qwLNumBits, 8); 00473 00474 p->mFinalized = TRUE; 00475 } |
|
dkcSHA512.c の 527 行で定義されています。 参照先 BYTE, DKC_SHA512, dkcSHA512Digest(), と dkcSHA512Final().
00527 { 00528 dkcSHA512Final(p); 00529 return dkcSHA512Digest(p,buff,size); 00530 } |
|
dkcSHA512.c の 502 行で定義されています。 参照先 DKC_SHA512, dkcSHA512DigestStr(), と dkcSHA512Final().
00502 { 00503 dkcSHA512Final(p); 00504 return dkcSHA512DigestStr(p,buff,size); 00505 } |
|
dkcAllocSHA512()から取得した領域を初期化する。
dkcSHA512.c の 408 行で定義されています。 参照先 c_qwInitH, DKC_SHA512, FALSE, dkc_SHA512::m_nNumChr, dkc_SHA512::m_qwH, dkc_SHA512::m_qwHNumBits, dkc_SHA512::m_qwLNumBits, dkc_SHA512::mFinalized, と SHA512_HASH. 参照元 dkcAllocSHA512(), と dkcSHO_SHA512Init().
00408 { 00409 int i; 00410 for(i = 0; i < SHA512_HASH; i++){ 00411 p->m_qwH[i] = c_qwInitH[i]; 00412 } 00413 p->m_qwLNumBits = 0; 00414 p->m_qwHNumBits = 0; 00415 p->m_nNumChr = 0; 00416 p->mFinalized = FALSE; 00417 } |
|
dkcSHA512.c の 419 行で定義されています。 参照先 BYTE, DKC_SHA512, DWORD, Generate(), dkc_SHA512::m_aBlock, dkc_SHA512::m_nNumChr, dkc_SHA512::m_qwHNumBits, dkc_SHA512::m_qwLNumBits, dkc_SHA512::mFinalized, QWORD, と SHA512_BUFFER_SIZE. 参照元 dkcSHA384Load(), dkcSHA512Final(), と dkcSHO_SHA512Init().
00419 { 00420 QWORD qwSize; 00421 QWORD qwLNumBits; 00422 BYTE *pBlock; 00423 DWORD dwReadSize; 00424 00425 if(dwSize == 0) return; 00426 if(p->mFinalized){ 00427 return; 00428 } 00429 00430 qwSize = dwSize; 00431 qwLNumBits = (p->m_qwLNumBits + (qwSize << 3)); 00432 if(qwLNumBits < p->m_qwLNumBits) p->m_qwHNumBits++; 00433 // p->m_qwHNumBits += qwSize >> 61; 00434 p->m_qwLNumBits = qwLNumBits; 00435 00436 pBlock = (BYTE *)p->m_aBlock; 00437 while(dwSize){ 00438 //dwReadSize = (dwSize < SHA512_BUFFER_SIZE - p->m_nNumChr) ? 00439 dwReadSize = (dwSize < SHA512_BUFFER_SIZE - (DWORD)p->m_nNumChr) ? 00440 dwSize : 00441 (SHA512_BUFFER_SIZE - p->m_nNumChr); 00442 00443 memcpy(pBlock + p->m_nNumChr, pBuffer, dwReadSize); 00444 00445 p->m_nNumChr += dwReadSize; 00446 pBuffer += dwReadSize; 00447 dwSize -= dwReadSize; 00448 00449 if(p->m_nNumChr == SHA512_BUFFER_SIZE){ 00450 Generate(p); 00451 p->m_nNumChr = 0; 00452 } 00453 } 00454 } |