#include "dkcOSIndependent.h"
dkcArcfour.hのインクルード依存関係図

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

構成 | |
| struct | dkc_Arcfour_State |
| arcfour algprithm state (RC4互換のアルゴリズム [詳細] | |
マクロ定義 | |
| #define | dkcArcfourDecrypt(p, dest, destsize, src, srcsize) dkcArcfourEncrypt(p,dest,destsize,src,srcsize) |
| #define | dkcArcfourDecryptNoDest(p, dest_and_src, dest_and_srcsize) dkcArcfourEncryptNoDest(p,dest_and_src,dest_and_srcsize) |
型定義 | |
| typedef dkc_Arcfour_State | DKC_ARCFOUR_STATE |
| arcfour algprithm state (RC4互換のアルゴリズム | |
関数 | |
| DKC_EXTERN DKC_ARCFOUR_STATE *WINAPI | dkcAllocArcfour (const unsigned char *key, size_t keylen) |
| DKC_EXTERN int WINAPI | dkcFreeArcfour (DKC_ARCFOUR_STATE **p) |
| DKC_EXTERN unsigned char WINAPI | dkcArcfourByte (DKC_ARCFOUR_STATE *p) |
| DKC_EXTERN int WINAPI | dkcArcfourEncrypt (DKC_ARCFOUR_STATE *p, unsigned char *dest, size_t destsize, const unsigned char *src, size_t srcsize) |
| DKC_EXTERN void WINAPI | dkcArcfourEncryptNoDest (DKC_ARCFOUR_STATE *p, unsigned char *dest_and_src, size_t dest_and_srcsize) |
dkcArcfour.h で定義されています。
|
|
dkcArcfour.h の 58 行で定義されています。 |
|
|
dkcArcfour.h の 61 行で定義されています。 |
|
|
arcfour algprithm state (RC4互換のアルゴリズム
参照元 dkcAllocArcfour(), dkcArcfourByte(), dkcArcfourEncrypt(), dkcArcfourEncrypt_Base(), dkcArcfourEncryptNoDest(), と dkcFreeArcfour(). |
|
||||||||||||
|
dkcArcfour.c の 13 行で定義されています。 参照先 DKC_ARCFOUR_STATE, dkcAllocate(), dkc_Arcfour_State::msbox, と NULL.
00015 {
00016
00017 int i,j;
00018 unsigned char temp;
00019 unsigned char *sb1,sb2[256];
00020 DKC_ARCFOUR_STATE *p;
00021
00022 memset(sb2,0,sizeof(sb2));
00023 //allocate state struct
00024 p = (DKC_ARCFOUR_STATE *)dkcAllocate(sizeof(DKC_ARCFOUR_STATE));
00025 if(NULL==p){
00026 return NULL;
00027 }
00028 sb1 = p->msbox;
00029
00030 //initialize
00031 for(i=0;i<256;i++){
00032 sb1[i] = (unsigned char)i;
00033 //嗅ぎ回られないように(なんか、意味あるのか?ないナァ?
00034 //p->msbox2[i] = key [i % keylen];
00035 }
00036 j=i=0;
00037
00038 for(;j<256;j++){
00039 sb2[j] = key [j % keylen];
00040 }
00041
00042
00043 for(i=0;i<256;i++){
00044 //j = (j + sb1 [i] + sb2 [i]) % 256;
00045 j = (j + sb1[i] + sb2[i]) & 0xff;
00046 temp = sb1 [i];
00047 sb1 [i] = sb1 [j];
00048 sb1 [j] = temp;
00049 /*sb1[i] = sb1[j] - sb1[i] ;
00050 sb1[j] -= sb1[i] ;
00051 sb1[i] += sb1[j] ;*/
00052 //SWAP_NUM(sb1[i],sb1[j]);
00053 }
00054 return p;
00055 }
|
|
|
dkcArcfour.c の 57 行で定義されています。 参照先 DKC_ARCFOUR_STATE, DKC_EXTERN, dkc_Arcfour_State::mi, dkc_Arcfour_State::mj, と dkc_Arcfour_State::msbox.
00057 {
00058 unsigned char i,j,temp;
00059 unsigned char *sb1 = p->msbox;
00060
00061 //calc
00062 i = (unsigned char )(p->mi+1);// % 256;
00063 j = (unsigned char )(p->mj + sb1[i]);// % 256;
00064
00065 //swap
00066 temp = sb1 [i];
00067 sb1 [i] = sb1 [j];
00068 sb1 [j] = temp;
00069
00070 //SWAP_NUM(sb1[i],sb1[j]);
00071 //refresh
00072 p->mi = i;
00073 p->mj = j;
00074 //calc
00075 i = (unsigned char )(sb1 [i] + sb1 [j]);// % 256;
00076 j = (unsigned char )sb1[i];
00077 return j;
00078 }
|
|
||||||||||||||||||||||||
|
dkcArcfour.c の 120 行で定義されています。 参照先 DKC_ARCFOUR_STATE, dkcArcfourEncrypt_Base(), edk_BufferOverFlow, と edk_SUCCEEDED.
00123 {
00124 //size_t i=0;
00125 if(destsize < srcsize){
00126 return edk_BufferOverFlow;
00127 }
00128 dkcArcfourEncrypt_Base(p,dest,src,srcsize);
00129
00130 /*for(i = 0;i < srcsize;i++){
00131 dest[i] = (unsigned char )(src[i] ^ dkcArcfourByte(p) );
00132 }*/
00133
00134 return edk_SUCCEEDED;
00135 }
|
|
||||||||||||||||
|
dkcArcfour.c の 139 行で定義されています。 参照先 DKC_ARCFOUR_STATE, と dkcArcfourEncrypt_Base().
00141 {
00142 dkcArcfourEncrypt_Base(p,dest_and_src,dest_and_src,dest_and_srcsize);
00143 }
|
|
|
dkcArcfour.c の 145 行で定義されています。 参照先 DKC_ARCFOUR_STATE, dkcFree(), edk_FAILED, と NULL.
00145 {
00146 if(NULL==p){
00147 return edk_FAILED;
00148 }
00149 return dkcFree((void **)p);
00150 }
|
1.3.6