#include "dkcArcfour.h"
#include "dkcStdio.h"
dkcArcfour.cのインクルード依存関係図
関数 | |
DKC_ARCFOUR_STATE *WINAPI | dkcAllocArcfour (const unsigned char *key, size_t keylen) |
DKC_EXTERN unsigned char WINAPI | dkcArcfourByte (DKC_ARCFOUR_STATE *p) |
DKC_INLINE void | dkcArcfourEncrypt_Base (DKC_ARCFOUR_STATE *p, unsigned char *dest, unsigned const char *src, size_t srcsize) |
int WINAPI | dkcArcfourEncrypt (DKC_ARCFOUR_STATE *p, unsigned char *dest, size_t destsize, const unsigned char *src, size_t srcsize) |
void WINAPI | dkcArcfourEncryptNoDest (DKC_ARCFOUR_STATE *p, unsigned char *dest_and_src, size_t dest_and_srcsize) |
int WINAPI | dkcFreeArcfour (DKC_ARCFOUR_STATE **p) |
dkcArcfour.c で定義されています。
|
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 = 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 の 80 行で定義されています。 参照先 DKC_ARCFOUR_STATE, DKC_INLINE, dkc_Arcfour_State::mi, dkc_Arcfour_State::mj, と dkc_Arcfour_State::msbox. 参照元 dkcArcfourEncrypt(), と dkcArcfourEncryptNoDest().
00082 { 00083 00084 size_t cc; 00085 unsigned char i,j; 00086 unsigned char *sb1 = p->msbox; 00087 unsigned char temp; 00088 00089 //calc 00090 i = (unsigned char )(p->mi); 00091 j = (unsigned char )(p->mj); 00092 00093 for(cc = 0;cc < srcsize;cc++){ 00094 //calc 00095 i = (unsigned char )(i+1); 00096 j = (unsigned char )(j + sb1[i]); 00097 00098 //swap 00099 00100 temp = sb1 [i]; 00101 sb1 [i] = sb1 [j]; 00102 sb1 [j] = temp; 00103 00104 00105 //SWAP_NUM_EX(sb1[i],sb1[j],unsigned char); 00106 00107 //calc 00108 dest[cc] = (unsigned char ) 00109 (src[cc] ^ (unsigned char )sb1[ 00110 (unsigned char )(sb1 [i] + sb1 [j]) 00111 ] 00112 ); 00113 } 00114 //refresh 00115 p->mi = i; 00116 p->mj = j; 00117 00118 } |
|
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(p); 00150 } |