#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 の 398 行で定義されています。 参照先 CheckMMX(), DKC_SHA512, dkcAllocate(), dkcSHA512Init(), dkc_SHA512::m_bMMX, と NULL.
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(), edk_FAILED, と NULL.
00533 {
00534 if(NULL==p){
00535 return edk_FAILED;
00536 }
00537 return dkcFree((void **)p);
00538 }
|
|
||||||||||||||||
|
バイナリのMessage Digestを取得する。
dkcSHA512.c の 509 行で定義されています。 参照先 BYTE, DKC_SHA512, edk_BufferOverFlow, edk_LogicError, edk_SUCCEEDED, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, と SHA512_BIN_BUFFER_SIZE.
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, edk_BufferOverFlow, edk_LogicError, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, SHA512_HASH, と SHA512_STR_BUFFER_SIZE. 参照元 dkcSHA512FinalDigestStr().
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().
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().
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().
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 }
|
1.3.6