#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(). |
|
|
dkcSHA512.h の 16 行で定義されています。 参照元 Default_Generate(). |
|
|
dkcSHA512.h の 15 行で定義されています。 参照元 Default_Generate(), dkcSHA512DigestStr(), と dkcSHA512Init(). |
|
|
SHA512のハッシュ文字列に必要なバッファサイズ.
dkcSHA512.h の 23 行で定義されています。 参照元 dkcSHA512DigestStr(). |
|
|
dkcSHA512.h の 17 行で定義されています。 参照元 Default_Generate(). |
|
|
|
dkcSHA512.c の 397 行で定義されています。 参照先 CheckMMX(), DKC_SHA512, dkcAllocate(), dkcSHA512Init(), dkc_SHA512::m_bMMX, と NULL.
00397 {
00398 DKC_SHA512 *p = dkcAllocate(sizeof(DKC_SHA512));
00399 if(NULL==p){
00400 return NULL;
00401 }
00402 p->m_bMMX = CheckMMX();
00403 dkcSHA512Init(p);
00404 return p;
00405 }
|
|
|
dkcSHA512.c の 532 行で定義されています。 参照先 DKC_SHA512, dkcFree(), edk_FAILED, と NULL.
00532 {
00533 if(NULL==p){
00534 return edk_FAILED;
00535 }
00536 return dkcFree(p);
00537 }
|
|
||||||||||||||||
|
バイナリのMessage Digestを取得する。
dkcSHA512.c の 508 行で定義されています。 参照先 BYTE, DKC_SHA512, edk_BufferOverFlow, edk_LogicError, edk_SUCCEEDED, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, と SHA512_BIN_BUFFER_SIZE.
00508 {
00509 //if(sizeof(QWORD) * SHA512_HASH > size){
00510 size_t i;
00511 if(SHA512_BIN_BUFFER_SIZE > size){
00512 return edk_BufferOverFlow;
00513 }
00514 if(FALSE==p->mFinalized){
00515 //まだFinalやってないっつーの
00516 return edk_LogicError;
00517 }
00518 for(i = 0; i < SHA512_BIN_BUFFER_SIZE; ++i){
00519 buff[i] = (BYTE)(p->m_qwH[i >> 3] >> (8 * (~i & 7)));
00520 }
00521 return edk_SUCCEEDED;
00522 //return dkc_memcpy(buff,size,(const void *)p->m_qwH,sizeof(p->m_qwH));
00523 }
|
|
||||||||||||||||
|
文字列のMessage Digestを取得する。
dkcSHA512.c の 476 行で定義されています。 参照先 DKC_SHA512, dkc_strcpy(), DWORD, edk_BufferOverFlow, edk_LogicError, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, SHA512_HASH, と SHA512_STR_BUFFER_SIZE. 参照元 dkcSHA512FinalDigestStr().
00476 {
00477 //char s[SHA512_HASH * 16 + 1];
00478 char s[ SHA512_STR_BUFFER_SIZE ];
00479 int i;
00480
00481 s[SHA512_HASH * 16 ] = '\0';
00482 //if(size <= sizeof(s)){
00483 if(SHA512_STR_BUFFER_SIZE > size){
00484 return edk_BufferOverFlow;
00485 }
00486 if(FALSE==p->mFinalized){
00487 //まだFinalやってないっつーの
00488 return edk_LogicError;
00489 }
00490
00491 for(i = 0; i < SHA512_HASH; i++){
00492 sprintf(s + i * 16, "%08x", (DWORD)(p->m_qwH[i] >> 32));
00493 sprintf(s + i * 16 + 8, "%08x", (DWORD)(p->m_qwH[i] & 0x00000000ffffffff));
00494 }
00495 //std::string strDigest = s;
00496 //return strDigest;
00497 return dkc_strcpy(buff,size,s,strlen(s));
00498 }
|
|
|
dkcSHA512.c の 455 行で定義されています。 参照先 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().
00455 {
00456
00457 BYTE cZero = 0x00;
00458 BYTE cOne = 0x80;
00459 QWORD qwHNumBits;
00460 QWORD qwLNumBits;
00461 if(p->mFinalized){
00462 return;
00463 }
00464 qwHNumBits = ReverseEndianQWORD(p->m_qwHNumBits);
00465 qwLNumBits = ReverseEndianQWORD(p->m_qwLNumBits);
00466
00467 dkcSHA512Load(p,&cOne, 1);
00468 while(p->m_nNumChr != SHA512_BUFFER_SIZE - 16) dkcSHA512Load(p,&cZero, 1);
00469
00470 dkcSHA512Load(p,(BYTE *)&qwHNumBits, 8);
00471 dkcSHA512Load(p,(BYTE *)&qwLNumBits, 8);
00472
00473 p->mFinalized = TRUE;
00474 }
|
|
||||||||||||||||
|
dkcSHA512.c の 526 行で定義されています。 参照先 BYTE, DKC_SHA512, dkcSHA512Digest(), と dkcSHA512Final().
00526 {
00527 dkcSHA512Final(p);
00528 return dkcSHA512Digest(p,buff,size);
00529 }
|
|
||||||||||||||||
|
dkcSHA512.c の 501 行で定義されています。 参照先 DKC_SHA512, dkcSHA512DigestStr(), と dkcSHA512Final().
00501 {
00502 dkcSHA512Final(p);
00503 return dkcSHA512DigestStr(p,buff,size);
00504 }
|
|
|
dkcAllocSHA512()から取得した領域を初期化する。
dkcSHA512.c の 407 行で定義されています。 参照先 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().
00407 {
00408 int i;
00409 for(i = 0; i < SHA512_HASH; i++){
00410 p->m_qwH[i] = c_qwInitH[i];
00411 }
00412 p->m_qwLNumBits = 0;
00413 p->m_qwHNumBits = 0;
00414 p->m_nNumChr = 0;
00415 p->mFinalized = FALSE;
00416 }
|
|
||||||||||||||||
|
dkcSHA512.c の 418 行で定義されています。 参照先 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().
00418 {
00419 QWORD qwSize;
00420 QWORD qwLNumBits;
00421 BYTE *pBlock;
00422 DWORD dwReadSize;
00423
00424 if(dwSize == 0) return;
00425 if(p->mFinalized){
00426 return;
00427 }
00428
00429 qwSize = dwSize;
00430 qwLNumBits = (p->m_qwLNumBits + (qwSize << 3));
00431 if(qwLNumBits < p->m_qwLNumBits) p->m_qwHNumBits++;
00432 // p->m_qwHNumBits += qwSize >> 61;
00433 p->m_qwLNumBits = qwLNumBits;
00434
00435 pBlock = (BYTE *)p->m_aBlock;
00436 while(dwSize){
00437 //dwReadSize = (dwSize < SHA512_BUFFER_SIZE - p->m_nNumChr) ?
00438 dwReadSize = (dwSize < SHA512_BUFFER_SIZE - (DWORD)p->m_nNumChr) ?
00439 dwSize :
00440 (SHA512_BUFFER_SIZE - p->m_nNumChr);
00441
00442 memcpy(pBlock + p->m_nNumChr, pBuffer, dwReadSize);
00443
00444 p->m_nNumChr += dwReadSize;
00445 pBuffer += dwReadSize;
00446 dwSize -= dwReadSize;
00447
00448 if(p->m_nNumChr == SHA512_BUFFER_SIZE){
00449 Generate(p);
00450 p->m_nNumChr = 0;
00451 }
00452 }
00453 }
|
1.3.6