#include "dkcOSIndependent.h"
dkcHC256.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_HC256 |
マクロ定義 | |
#define | dkcdHC256_KEY_SIZE 32 |
#define | dkcdHC256_IV_SIZE 32 |
#define | dkcHC256_Byte(p) dkcHC256Process(p); |
#define | dkcHC256DecryptDOE(a, b, c, d, e) dkcHC256EncryptDOE(a,b,c,d,e) |
#define | dkcHC256DecryptNoDestDOE(a, b, c) dkcHC256EncryptNoDestDOE(a,b,c) |
型定義 | |
typedef dkc_HC256 | DKC_HC256 |
関数 | |
DKC_EXTERN DKC_HC256 *WINAPI | dkcAllocHC256 (BYTE *key, size_t size, uint32 *iv, size_t ivsize) |
keyのサイズは32byte ivも32byte | |
DKC_EXTERN DKC_HC256 * | dkcAllocHC256Const (const BYTE *key, size_t size, const uint32 *iv, size_t ivsize) |
DKC_EXTERN int WINAPI | dkcFreeHC256 (DKC_HC256 **) |
DKC_EXTERN uint8 WINAPI | dkcHC256Process (DKC_HC256 *p) |
DKC_EXTERN int WINAPI | dkcHC256EncryptDOE (DKC_HC256 *p, uint8 *dest, size_t dsize, const uint8 *src, size_t ssize) |
DKC_EXTERN int WINAPI | dkcHC256EncryptNoDestDOE (DKC_HC256 *p, uint8 *inout, size_t size) |
この処理バイトを分割していく |
DOE : Dependent On Endian / エンディアンに依存する
dkcHC256.h で定義されています。
|
dkcHC256.h の 25 行で定義されています。 |
|
dkcHC256.h の 24 行で定義されています。 参照元 dkcAllocHC256(). |
|
dkcHC256.h の 58 行で定義されています。 |
|
dkcHC256.h の 65 行で定義されています。 |
|
dkcHC256.h の 68 行で定義されています。 |
|
|
|
keyのサイズは32byte ivも32byte
dkcHC256.c の 309 行で定義されています。 参照先 dkcAllocate(), dkcdHC256_IV_SIZE, dkcdHC256_KEY_SIZE, initialization(), NULL, store(), と uint32. 参照元 dkcAllocHC256Const(), と dkcAllocHC256NoLimitKeyLength(). 00309 { 00310 DKC_HC256 *p; 00311 //uint32 iv[8]; 00312 //size_t limit = sizeof(uint32) * 8; 00313 //if(size != limit || ivsize != limit){ 00314 if(size != dkcdHC256_KEY_SIZE || ivsize != dkcdHC256_IV_SIZE){ 00315 return NULL; 00316 } 00317 00318 p = dkcAllocate(sizeof(DKC_HC256)); 00319 if(NULL==p){ 00320 return NULL; 00321 } 00322 //DKUTIL_MEMZERO(iv,sizeof(iv)); 00323 initialization(p,(uint32 *)key,iv); 00324 store(p); 00325 //p->store_size = 64; 00326 return p; 00327 }
|
|
|
|
dkcHC256.c の 346 行で定義されています。 参照先 dkcFree(). 00346 { 00347 return dkcFree(p); 00348 }
|
|
dkcHC256.c の 376 行で定義されています。 参照先 dkcHC256EncryptNoDestDOE(). 00377 { 00378 if(ssize > dsize){ 00379 return edk_ArgumentException; 00380 } 00381 if(dest != src){ 00382 memcpy(dest,src,ssize); 00383 } 00384 return dkcHC256EncryptNoDestDOE(p,dest,ssize); 00385 00386 }
|
|
この処理バイトを分割していく
dkcHC256.c の 425 行で定義されています。 参照先 dkcHC256EncryptNoDestDOE(), dkcmASSERT, dkcmNOT_ASSERT, encode_byte(), NULL, store(), dkc_HC256::store_size, dkc_HC256::u_store, と uint8. 参照元 dkcHC256EncryptDOE(), と dkcHC256EncryptNoDestDOE(). 00426 { 00427 00428 size_t i = 0; 00429 int r = edk_FAILED; 00430 size_t count,rest; 00431 uint64 *io64 = NULL; 00432 00433 r = encode_byte(p,inout,size,&rest); 00434 switch(r){ 00435 case edk_SUCCEEDED: 00436 return r; 00437 case edk_NoValueToProcess: 00438 break; 00439 default: 00440 dkcmNOT_ASSERT(DKUTIL_FAILED(r)); 00441 } 00442 size = size - rest; 00443 inout += rest; 00444 if(rest == size) return edk_SUCCEEDED; 00445 //if(size <= 0) return edk_SUCCEEDED; 00446 00447 count = size / 64; 00448 rest = size % 64;//最適化に任せよう(笑) 00449 00450 if(64!=p->store_size){ 00451 dkcmASSERT(p->store_size ==0); 00452 r = store(p); 00453 dkcmNOT_ASSERT(DKUTIL_FAILED(r)); 00454 } 00455 io64 = (uint64 *)inout; 00456 for(i=0;i<count;i++){ 00457 //64bit単位も良いかも? 00458 io64[0] ^= p->u_store.a64[0]; 00459 io64[1] ^= p->u_store.a64[1]; 00460 io64[2] ^= p->u_store.a64[2]; 00461 io64[3] ^= p->u_store.a64[3]; 00462 io64[4] ^= p->u_store.a64[4]; 00463 io64[5] ^= p->u_store.a64[5]; 00464 io64[6] ^= p->u_store.a64[6]; 00465 io64[7] ^= p->u_store.a64[7]; 00466 00467 io64+=8; 00468 p->store_size = 0; 00469 store(p); 00470 } 00471 inout =(uint8*)io64; 00472 return dkcHC256EncryptNoDestDOE(p,inout,rest); 00473 00474 }
|
|
dkcHC256.c の 365 行で定義されています。 参照先 dkcmNOT_ASSERT, hc256_byte(), store(), と dkc_HC256::store_size. 00365 { 00366 int r = 0; 00367 //DKC_4BYTE_LITTLE_ENDIAN_BASE a; 00368 if(p->store_size <= 0){ 00369 r = store(p); 00370 dkcmNOT_ASSERT(DKUTIL_FAILED(r)); 00371 } 00372 return hc256_byte(p); 00373 00374 }
|