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

dkcHC256.h

HC256 cipher Algorithm. [詳細]

#include "dkcOSIndependent.h"

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

Include dependency graph

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

Included by dependency graph

ソースコードを見る。

構成

struct  dkc_HC256

マクロ定義

#define dkcHC256DecryptBlock512DOE(p, dest, dsize, src, ssize)   dkcHC256EncryptBlock512DOE(p,dest,dsize,src,ssize)
#define dkcHC256DecryptBlock512NoDestDOE(p, dest, size)   dkcHC256EncryptBlock512NoDestDOE(p,dest,size)

型定義

typedef dkc_HC256 DKC_HC256

関数

DKC_EXTERN DKC_HC256 *WINAPI dkcAllocHC256 (BYTE *key, size_t size)
DKC_EXTERN int WINAPI dkcFreeHC256 (DKC_HC256 **)
DKC_EXTERN uint32 dkcHC256Process (DKC_HC256 *, uint32 u)
DKC_EXTERN int WINAPI dkcHC256EncryptDOE (DKC_HC256 *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI dkcHC256DecryptDOE (DKC_HC256 *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI dkcHC256EncryptBlock512DOE (DKC_HC256 *p, BYTE *dest, size_t dsize, const BYTE *src, size_t ssize)
DKC_EXTERN int WINAPI dkcHC256EncryptBlock512NoDestDOE (DKC_HC256 *p, BYTE *dest, size_t size)
DKC_EXTERN int WINAPI dkcHC256Encrypt (DKC_HC256 *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI dkcHC256Decrypt (DKC_HC256 *p, BYTE *dest, int dsize, const BYTE *src, int ssize)


説明

HC256 cipher Algorithm.

作者:
Hongjun Wu in 2003. convert by d金魚
から:
original 2003 / converted in 2004/12/20
覚え書き:
参考資料: http://d.hatena.ne.jp/studiokingyo/20041216#p4 http://www.i2r.a-star.edu.sg/icsd/staff/hongjun/hc/

略語解説

DOE : Dependent On Endian / エンディアンに依存する

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


マクロ定義

#define dkcHC256DecryptBlock512DOE p,
dest,
dsize,
src,
ssize   )     dkcHC256EncryptBlock512DOE(p,dest,dsize,src,ssize)
 

dkcHC256.h55 行で定義されています。

#define dkcHC256DecryptBlock512NoDestDOE p,
dest,
size   )     dkcHC256EncryptBlock512NoDestDOE(p,dest,size)
 

dkcHC256.h59 行で定義されています。


型定義

typedef struct dkc_HC256 DKC_HC256
 

参照元 dkcAllocHC256(), dkcFreeHC256(), dkcHC256EncryptBlock512DOE(), dkcHC256EncryptBlock512NoDestDOE(), dkcHC256Process(), encrypt(), initialization(), step_A(), と step_B().


関数

DKC_EXTERN DKC_HC256* WINAPI dkcAllocHC256 BYTE key,
size_t  size
 

dkcHC256.c192 行で定義されています。

参照先 BYTE, DKC_HC256, dkcAllocate(), initialization(), と NULL.

00192                                                                  {
00193     DKC_HC256 *p;
00194     uint32 iv[8];
00195     if(size != sizeof(uint32) * 8){
00196         return NULL;
00197     }
00198     
00199     p = dkcAllocate(sizeof(DKC_HC256));
00200     if(NULL==p){
00201         return NULL;
00202     }
00203     DKUTIL_MEMZERO(iv,sizeof(iv));
00204     initialization(p,(uint32 *)key,iv);
00205     return p;
00206 }

DKC_EXTERN int WINAPI dkcFreeHC256 DKC_HC256 **   ) 
 

dkcHC256.c210 行で定義されています。

参照先 DKC_HC256, と dkcFree().

00210                                                  {
00211     return dkcFree(p);
00212 }

DKC_EXTERN int WINAPI dkcHC256Decrypt DKC_HC256 p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

DKC_EXTERN int WINAPI dkcHC256DecryptDOE DKC_HC256 p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

DKC_EXTERN int WINAPI dkcHC256Encrypt DKC_HC256 p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

DKC_EXTERN int WINAPI dkcHC256EncryptBlock512DOE DKC_HC256 p,
BYTE dest,
size_t  dsize,
const BYTE src,
size_t  ssize
 

dkcHC256.c329 行で定義されています。

参照先 BYTE, DKC_HC256, dkcHC256EncryptBlock512NoDestDOE(), dkcmNOT_ASSERT, と NULL.

00330 {   
00331     dkcmNOT_ASSERT(NULL==p || NULL==dest || NULL==src);
00332     if(ssize != 512 || dsize < 512){
00333         return edk_ArgumentException;
00334     }
00335     memcpy(dest,src,ssize);
00336     return dkcHC256EncryptBlock512NoDestDOE(p,dest,ssize);
00337 }

DKC_EXTERN int WINAPI dkcHC256EncryptBlock512NoDestDOE DKC_HC256 p,
BYTE dest,
size_t  size
 

dkcHC256.c320 行で定義されています。

参照先 BYTE, DKC_HC256, dkcmNOT_ASSERT, encrypt(), と NULL.

参照元 dkcHC256EncryptBlock512DOE().

00320                                                                                            {
00321     dkcmNOT_ASSERT(NULL==p || NULL==dest);
00322     if(size != 512){
00323         return edk_ArgumentException;
00324     }
00325     encrypt(p,(uint32 *)dest);
00326     return edk_SUCCEEDED;
00327 }

DKC_EXTERN int WINAPI dkcHC256EncryptDOE DKC_HC256 p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

DKC_EXTERN uint32 dkcHC256Process DKC_HC256 ,
uint32  u
 

dkcHC256.c216 行で定義されています。

参照先 dkc_HC256::counter2048, DKC_HC256, g1(), g2(), h1(), h2(), dkc_HC256::P, と dkc_HC256::Q.

00217 {
00218     unsigned long i,i3, i10, i12, i1023;
00219     unsigned long output;
00220 
00221     i   = p->counter2048 & 0x3ff;
00222     i3  = (i - 3) & 0x3ff;
00223     i10 = (i - 10) & 0x3ff;
00224     i12 = (i - 12) & 0x3ff;
00225     i1023 = (i - 1023) & 0x3ff;
00226 
00227     if (p->counter2048 < 1024) {
00228         p->P[i] = p->P[i] + p->P[i10] + g1(p->Q,p->P[i3],p->P[i1023]);
00229         output = h1(p->Q,p->P[i12]) ^ p->P[i];
00230     }
00231     else {
00232         p->Q[i] = p->Q[i] + p->Q[i10] + g2(p->P,p->Q[i3],p->Q[i1023]);
00233         output = h2(p->P,p->Q[i12]) ^ p->Q[i];
00234 
00235     }
00236     p->counter2048 = (p->counter2048+1) & 0x7ff;
00237     return (output);
00238 }


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