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

dkcSHA384.c

SHA 384. [詳細]

#include "dkcSHA384.h"
#include "dkcStdio.h"

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

Include dependency graph

ソースコードを見る。

マクロ定義

#define DKUTIL_C_SHA384_C

関数

DKC_SHA384 *WINAPI dkcAllocSHA384 ()
void WINAPI dkcSHA384Init (DKC_SHA384 *p)
 dkcAllocSHA384()から取得した領域を初期化する。

void WINAPI dkcSHA384Load (DKC_SHA384 *p, const BYTE *pBuffer, DWORD dwSize)
void WINAPI dkcSHA384Final (DKC_SHA384 *p)
int WINAPI dkcSHA384DigestStr (DKC_SHA384 *p, char *buff, size_t size)
int WINAPI dkcSHA384FinalDigestStr (DKC_SHA384 *p, char *buff, size_t size)
int WINAPI dkcSHA384Digest (DKC_SHA384 *p, BYTE *buff, size_t size)
 binaryハッシュ値 版 dkcSHA384DigestStr()

int WINAPI dkcSHA384FinalDigest (DKC_SHA384 *p, BYTE *buff, size_t size)
 binaryハッシュ値 版 dkcSHA384FinalDigestStr()

int WINAPI dkcFreeSHA384 (DKC_SHA384 **p)


説明

SHA 384.

作者:
d金魚

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


マクロ定義

#define DKUTIL_C_SHA384_C
 

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


関数

DKC_SHA384* WINAPI dkcAllocSHA384  ) 
 

戻り値:
DKC_SHA384構造体への確保したメモリ領域
覚え書き:
すでにdkcSHA384Init()は呼ばれています。

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

参照先 DKC_SHA384, 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 }

int WINAPI dkcFreeSHA384 DKC_SHA384 **  p  ) 
 

引数:
p[in][out] dkcAllocSHA384()で取得したポインタへのポインタ
戻り値:
上手く開放できたらedk_SUCCEEDED

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

参照先 DKC_SHA384, dkcFree(), と NULL.

参照元 dkcFreeSHO().

00143                                         {
00144     if(NULL==p){
00145         return edk_FAILED;
00146     }
00147     return dkcFree((void **)p);
00148 }

int WINAPI dkcSHA384Digest DKC_SHA384 p,
BYTE buff,
size_t  size
 

binaryハッシュ値 版 dkcSHA384DigestStr()

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

参照先 BYTE, DKC_SHA384, 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 }

int WINAPI dkcSHA384DigestStr DKC_SHA384 p,
char *  buff,
size_t  size
 

引数:
p[in][out] dkcAllocSHA384()で取得したポインタ
buff[out] 書き込むバッファへのポインタ
size[in] buffのサイズ
戻り値:
成功したらedk_SUCCEEDEDが返る

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

参照先 BYTE, DKC_SHA384, 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 }

void WINAPI dkcSHA384Final DKC_SHA384 p  ) 
 

引数:
p[in][out] dkcAllocSHA384()で取得したポインタ
覚え書き:
dkcSHA384FinalDigest()を使用する事を奨励します。

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

参照先 DKC_SHA384, と 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 }

int WINAPI dkcSHA384FinalDigest DKC_SHA384 p,
BYTE buff,
size_t  size
 

binaryハッシュ値 版 dkcSHA384FinalDigestStr()

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

参照先 BYTE, DKC_SHA384, dkcSHA384Digest(), と dkcSHA384Final().

00138                                                                      {
00139     dkcSHA384Final(p);
00140     return dkcSHA384Digest(p,buff,size);
00141 }

int WINAPI dkcSHA384FinalDigestStr DKC_SHA384 p,
char *  buff,
size_t  size
 

参照:
引数、戻り値についてはdkcSHA384Digest()と同じです。
覚え書き:
dkcSHA384Final()とdkcSHA384Digest()を使用するより、この関数の使用を奨励します。

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

参照先 DKC_SHA384, dkcSHA384DigestStr(), と dkcSHA384Final().

00105                                                                         {
00106     dkcSHA384Final(p);
00107     return dkcSHA384DigestStr(p,buff,size);
00108 }

void WINAPI dkcSHA384Init DKC_SHA384 p  ) 
 

dkcAllocSHA384()から取得した領域を初期化する。

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

参照先 DKC_SHA384, 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 }

void WINAPI dkcSHA384Load DKC_SHA384 p,
const BYTE pBuffer,
DWORD  dwSize
 

引数:
p[in][out] dkcAllocSHA384()で取得したポインタ
pBuffer[in] 読み取るバッファへのポインタ
dwSize[in] バッファにアクセスしてOKなサイズ

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

参照先 BYTE, DKC_SHA384, と dkcSHA512Load().

参照元 dkcSHO_SHA384Init().

00039                                                                          {
00040     dkcSHA512Load(p,pBuffer,dwSize);
00041 }


dkutil_cに対してTue Feb 22 02:02:59 2005に生成されました。 doxygen 1.3.6