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

# dkcSHA384.h

SHA 384 [詳細]

`#include "dkcOSIndependent.h"`
`#include "dkcSHA512.h"`

dkcSHA384.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

## マクロ定義
#define | SHA384_HASH SHA512_HASH
#define | SHA384_BLOCK SHA512_BLOCK
#define | SHA384_WORK SHA512_WORK
#define | SHA384_BIN_BUFFER_SIZE (SHA384_HASH * 6)
| SHA1の生ハッシュ値(binary)に必要なバッファサイズ
#define | SHA384_STR_BUFFER_SIZE (SHA384_HASH * 12 + 1)
| SHA1のハッシュ値文字列に必要なバッファサイズ
## 型定義
typedef DKC_SHA512 | DKC_SHA384
## 関数
DKC_EXTERN DKC_SHA384 *WINAPI | dkcAllocSHA384 ()
DKC_EXTERN void WINAPI | dkcSHA384Init (DKC_SHA384 *)
DKC_EXTERN void WINAPI | dkcSHA384Load (DKC_SHA384 *p, const BYTE *pBuffer, DWORD dwSize)
DKC_EXTERN void WINAPI | dkcSHA384Final (DKC_SHA384 *p)
DKC_EXTERN int WINAPI | dkcSHA384DigestStr (DKC_SHA384 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI | dkcSHA384Digest (DKC_SHA384 *p, BYTE *buff, size_t size)
| binaryハッシュ値 版
DKC_EXTERN int WINAPI | dkcSHA384FinalDigestStr (DKC_SHA384 *p, char *buff, size_t size)
DKC_EXTERN int WINAPI | dkcSHA384FinalDigest (DKC_SHA384 *p, BYTE *buff, size_t size)
| binaryハッシュ値 版
DKC_EXTERN int WINAPI | dkcFreeSHA384 (DKC_SHA384 **p)

## 説明

SHA 384

作者:
  d金魚

dkcSHA384.h で定義されています。

## マクロ定義

#define SHA384_BIN_BUFFER_SIZE (SHA384_HASH * 6)

| SHA1の生ハッシュ値(binary)に必要なバッファサイズ dkcSHA384.h の 20 行で定義されています。 参照元 dkcSHA384Digest(), dkcSHA384DigestStr(), と dkcSHO_SHA384Init().

#define SHA384_BLOCK SHA512_BLOCK

| dkcSHA384.h の 13 行で定義されています。

#define SHA384_HASH SHA512_HASH

| dkcSHA384.h の 12 行で定義されています。

#define SHA384_STR_BUFFER_SIZE (SHA384_HASH * 12 + 1)

| SHA1のハッシュ値文字列に必要なバッファサイズ dkcSHA384.h の 22 行で定義されています。 参照元 dkcSHA384DigestStr(), と dkcSHO_SHA384Init().

#define SHA384_WORK SHA512_WORK

| dkcSHA384.h の 14 行で定義されています。

## 型定義

typedef DKC_SHA512 DKC_SHA384

| dkcSHA384.h の 25 行で定義されています。

## 関数

DKC_EXTERN DKC_SHA384* WINAPI dkcAllocSHA384 | ( |  | ) |

| 戻り値: DKC_SHA384構造体への確保したメモリ領域 覚え書き: すでにdkcSHA384Init()は呼ばれています。 dkcSHA384.c の 13 行で定義されています。 参照先 dkcAllocate(), dkcSHA384Init(), と NULL. 参照元 dkcSHO_SHA384Init().
    00013                                    {
    00014     DKC_SHA384 *p = dkcAllocate(sizeof(DKC_SHA384));
    00015     if(NULL==p){
    00016         return NULL;
    00017     }
    00018     dkcSHA384Init(p);
    00019     return p;
    00020 }

DKC_EXTERN int WINAPI dkcFreeSHA384 | ( | DKC_SHA384 ** | p | ) |

  | 引数:
  | p[in][out] | dkcAllocSHA384()で取得したポインタへのポインタ
戻り値: 上手く開放できたらedk_SUCCEEDED dkcSHA384.c の 143 行で定義されています。 参照先 dkcFree(), と NULL. 参照元 dkcFreeSHO().
    00143                                         {
    00144     if(NULL==p){
    00145         return edk_FAILED;
    00146     }
    00147     return dkcFree((void **)p);
    00148 }

DKC_EXTERN int WINAPI dkcSHA384Digest | ( | DKC_SHA384 * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| binaryハッシュ値 版 参照: dkcSHA384DigestStr() dkcSHA384.c の 110 行で定義されています。 参照先 BYTE, FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, と SHA384_BIN_BUFFER_SIZE. 参照元 dkcSHA384FinalDigest(), と dkcSHO_SHA384Init().
    00110                                                                 {
    00111     ULONG i = 0;
    00112     //DWORD *dwp = (DWORD *)buff;
    00113     //char s[SHA384_STR_BUFFER_SIZE];
    00114     //s[SHA384_STR_BUFFER_SIZE]='\0';
    00115
    00116     if(SHA384_BIN_BUFFER_SIZE > size){
    00117         return edk_BufferOverFlow;
    00118     }
    00119     if(FALSE==p->mFinalized){
    00120         //まだFinalやってないっつーの
    00121         return edk_LogicError;
    00122     }
    00123     /*
    00124     for( i = 0; i < SHA_HASH; i++){
    00125         sprintf(s + i * 8, "%08x", p->m_dwH[i]);
    00126         dwp[i] = atoi(s + i * 8);
    00127     }*/
    00128     for(i = 0; i < SHA384_BIN_BUFFER_SIZE; ++i){
    00129         //buff[i] = (BYTE)(p->m_dwH[i >> 2] >> (8 * (~i & 3)));
    00130         buff[i] = (BYTE)(p->m_qwH[i >> 3] >> (8 * (~i & 7)));
    00131     }
    00132     return edk_SUCCEEDED;
    00133     //ナにバカやってんだ私。
    00134     //return dkc_memcpy(buff,size,(const void *)p->m_dwH,sizeof(p->m_dwH));
    00135 }

DKC_EXTERN int WINAPI dkcSHA384DigestStr | ( | DKC_SHA384 * | p,
|  | char * | buff,
|  | size_t | size
| ) |

  | 引数:
  | p[in][out] | dkcAllocSHA384()で取得したポインタ
  | buff[out] | 書き込むバッファへのポインタ
  | size[in] | buffのサイズ
戻り値: 成功したらedk_SUCCEEDEDが返る dkcSHA384.c の 68 行で定義されています。 参照先 BYTE, dkc_strcpy(), FALSE, dkc_SHA512::m_qwH, dkc_SHA512::mFinalized, SHA384_BIN_BUFFER_SIZE, と SHA384_STR_BUFFER_SIZE. 参照元 dkcSHA384FinalDigestStr(), と dkcSHO_SHA384Init().
    00068                                                                    {
    00069
    00070     //char s[SHA_HASH * 8 + 1];
    00071     char s[SHA384_STR_BUFFER_SIZE];
    00072     //BYTE *tb;
    00073     int i;
    00074     //s[SHA_HASH * 8]='\0';
    00075     s[SHA384_STR_BUFFER_SIZE]='\0';
    00076
    00077     if(SHA384_STR_BUFFER_SIZE > size){
    00078         return edk_BufferOverFlow;
    00079     }
    00080     if(FALSE==p->mFinalized){
    00081         //まだFinalやってないっつーの
    00082         return edk_LogicError;
    00083     }
    00084
    00085     /*for( i = 0; i < SHA384_HASH; i++){
    00086         sprintf(s + i * 12,     "%06x", (DWORD)(p->m_qwH[i] >> 32));
    00087         sprintf(s + i * 12 + 6, "%06x", (DWORD)(p->m_qwH[i] & 0x00000000ffffffff));
    00088     }*/
    00089     //tb = (BYTE *)p->m_qwH;
    00090     for( i=0;i<SHA384_BIN_BUFFER_SIZE;i++){
    00091         //sprintf(&s[SHA384_HASH * i],"%0x",p->m_qwH[i]);
    00092
    00093         //sprintf(s + i * 12,     "%0x", (DWORD)(p->m_qwH[i] >> 32));
    00094         //sprintf(s + i * 12 + 6, "%0x", (DWORD)(p->m_qwH[i] & 0x00000000ffffffff));
    00095         sprintf(s + i * 2,     "%02x",  (BYTE)(p->m_qwH[i >> 3] >> (8 * (~i & 7))));
    00096         //sprintf(s + i * 16 + 8, "%08x", (DWORD)(p->m_qwH[i] & 0x00000000ffffffff));
    00097     }
    00098
    00099     //std::string strDigest = s;
    00100     //return strDigest;
    00101     return dkc_strcpy(buff,size,s,strlen(s));
    00102 }

DKC_EXTERN void WINAPI dkcSHA384Final | ( | DKC_SHA384 * | p | ) |

  | 引数:
  | p[in][out] | dkcAllocSHA384()で取得したポインタ
覚え書き: dkcSHA384FinalDigest()を使用する事を奨励します。 dkcSHA384.c の 43 行で定義されています。 参照先 dkcSHA512Final(). 参照元 dkcSHA384FinalDigest(), dkcSHA384FinalDigestStr(), と dkcSHO_SHA384Init().
    00043                                          {
    00044     dkcSHA512Final(p);
    00045     /*BYTE cZero = 0x00;
    00046     BYTE cOne  = 0x80;
    00047     DWORD dwHNumBits;
    00048     DWORD dwLNumBits;
    00049     if(p->mFinalized){
    00050         return ;
    00051     }
    00052
    00053     dwHNumBits = ReverseEndian(p->m_dwHNumBits);
    00054     dwLNumBits = ReverseEndian(p->m_dwLNumBits);
    00055
    00056     dkcSHA384Load(p,&cOne, 1);
    00057     while(p->m_nNumChr != SHA_BUFFER_SIZE - 8) dkcSHA384Load(p,&cZero, 1);
    00058
    00059     dkcSHA384Load(p,(BYTE *)&dwHNumBits, 4);
    00060     dkcSHA384Load(p,(BYTE *)&dwLNumBits, 4);
    00061
    00062     //ファイナル処理した。
    00063     p->mFinalized = TRUE;
    00064     */
    00065
    00066 }

DKC_EXTERN int WINAPI dkcSHA384FinalDigest | ( | DKC_SHA384 * | p,
|  | BYTE * | buff,
|  | size_t | size
| ) |

| binaryハッシュ値 版 参照: dkcSHA384FinalDigestStr() dkcSHA384.c の 138 行で定義されています。 参照先 dkcSHA384Digest(), と dkcSHA384Final().
    00138                                                                      {
    00139     dkcSHA384Final(p);
    00140     return dkcSHA384Digest(p,buff,size);
    00141 }

DKC_EXTERN int WINAPI dkcSHA384FinalDigestStr | ( | DKC_SHA384 * | p,
|  | char * | buff,
|  | size_t | size
| ) |

| 参照: 引数、戻り値についてはdkcSHA384Digest()と同じです。 覚え書き: dkcSHA384Final()とdkcSHA384Digest()を使用するより、この関数の使用を奨励します。 dkcSHA384.c の 105 行で定義されています。 参照先 dkcSHA384DigestStr(), と dkcSHA384Final().
    00105                                                                         {
    00106     dkcSHA384Final(p);
    00107     return dkcSHA384DigestStr(p,buff,size);
    00108 }

DKC_EXTERN void WINAPI dkcSHA384Init | ( | DKC_SHA384 * |  | ) |

| 戻り値: dkcAllocSHA384()から取得した領域を初期化する。 dkcSHA384.c の 22 行で定義されています。 参照先 FALSE, dkc_SHA512::m_nNumChr, dkc_SHA512::m_qwH, dkc_SHA512::m_qwHNumBits, dkc_SHA512::m_qwLNumBits, と dkc_SHA512::mFinalized. 参照元 dkcAllocSHA384(), と dkcSHO_SHA384Init().
    00022                                         {
    00023
    00024     p->m_qwH[0] = 0xcbbb9d5dc1059ed8;
    00025   p->m_qwH[1] = 0x629a292a367cd507;
    00026   p->m_qwH[2] = 0x9159015a3070dd17;
    00027   p->m_qwH[3] = 0x152fecd8f70e5939;
    00028   p->m_qwH[4] = 0x67332667ffc00b31;
    00029   p->m_qwH[5] = 0x8eb44a8768581511;
    00030   p->m_qwH[6] = 0xdb0c2e0d64f98fa7;
    00031   p->m_qwH[7] = 0x47b5481dbefa4fa4;
    00032     p->m_qwLNumBits = 0;
    00033     p->m_qwHNumBits = 0;
    00034     p->m_nNumChr = 0;
    00035
    00036     p->mFinalized = FALSE;
    00037 }

DKC_EXTERN void WINAPI dkcSHA384Load | ( | DKC_SHA384 * | p,
|  | const BYTE * | pBuffer,
|  | DWORD | dwSize
| ) |

  | 引数:
  | p[in][out] | dkcAllocSHA384()で取得したポインタ
  | pBuffer[in] | 読み取るバッファへのポインタ
  | dwSize[in] | バッファにアクセスしてOKなサイズ
dkcSHA384.c の 39 行で定義されています。 参照先 dkcSHA512Load(). 参照元 dkcSHO_SHA384Init().
    00039                                                                          {
    00040     dkcSHA512Load(p,pBuffer,dwSize);
    00041 }