#include "dkcRijndael.h"
#include "dkcOSIndependent.h"
#include "rijndael-api-fst.h"
dkcRijndael.cのインクルード依存関係図
マクロ定義 | |
#define | GETBYTE(x, y) (unsigned int)byte((x)>>(8*(y))) |
this version of the macro is fastest on Pentium 3 and Pentium 4 with MSVC 6 SP5 w/ Processor Pack | |
#define | RDEM_SC(a) dkc_strcpy(buff,size,a,strlen(b)) |
型定義 | |
typedef int(* | RIJNDAEL_CALLBACK_PROCESS )(cipherInstance *, keyInstance *, BYTE *, int, BYTE *) |
関数 | |
DKC_RIJNDAEL *WINAPI | dkcAllocRijndael () |
DKC_RIJNDAEL *WINAPI | dkcAllocRijndaelEncrypt (const BYTE *key, size_t keysize) |
DKC_RIJNDAEL *WINAPI | dkcAllocRijndaelDecrypt (const BYTE *key, size_t keysize) |
static | ProcessCall (RIJNDAEL_CALLBACK_PROCESS proc, DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize) |
int WINAPI | dkcRijndaelBlockEncrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize) |
int WINAPI | dkcRijndaelBlockDecrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize) |
int WINAPI | dkcRijndaelPadEncrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize) |
int WINAPI | dkcRijndaelPadDecrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize) |
BOOL WINAPI | dkcRijndaelErrorMessage (int result, char *buff, size_t size) |
int WINAPI | dkcFreeRijndael (DKC_RIJNDAEL **p) |
int WINAPI | dkcRijndaelStringKey (DKC_RIJNDAEL *p, char *dest_and_material, int size, BYTE option) |
オリジナルのコードおよび改変されたコード(のライセンス)はパブリックドメインです。 The original code and all modification are in the public domain.
これ(以下)はオリジナルの紹介(表記)していたコメント(文章)です。 this is the original introductory comment:
rijndael.cpp - modified by Chris Morgan <cmorgan@wpi.edu> and Wei Dai from Paulo Baretto's Rijndael implementation The original code and all modifications are in the public domain.
This is the original introductory comment:
version 3.0 (December 2000)
Optimised ANSI C code for the Rijndael cipher (now AES)
author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> author Paulo Barreto <paulo.barreto@terra.com.br>
This code is hereby placed in the public domain.
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
dkcRijndael.c で定義されています。
|
this version of the macro is fastest on Pentium 3 and Pentium 4 with MSVC 6 SP5 w/ Processor Pack
dkcRijndael.c の 48 行で定義されています。 |
|
|
|
dkcRijndael.c の 102 行で定義されています。 |
|
dkcRijndael.c の 59 行で定義されています。 参照先 dkcAllocate(), dkcFree(), dkc_RijnDael::mKey, dkc_RijnDael::mRijndael, と NULL. 00059 { 00060 DKC_RIJNDAEL *p = dkcAllocate(sizeof(DKC_RIJNDAEL)); 00061 if(NULL==p){ 00062 return NULL; 00063 } 00064 00065 p->mKey = dkcAllocate(sizeof(keyInstance)); 00066 if(NULL==p->mKey){ 00067 goto Error; 00068 } 00069 00070 p->mRijndael = dkcAllocate(sizeof(cipherInstance)); 00071 if(NULL==p->mRijndael){ 00072 goto Error; 00073 } 00074 return p; 00075 Error: 00076 dkcFree(&p->mRijndael); 00077 dkcFree(&p->mKey); 00078 dkcFree(&p); 00079 return NULL; 00080 }
|
|
dkcRijndael.c の 93 行で定義されています。 参照先 dkcAllocate(), と NULL. 00093 { 00094 DKC_RIJNDAEL *p = dkcAllocate(sizeof(DKC_RIJNDAEL)); 00095 if(NULL==p){ 00096 return NULL; 00097 } 00098 00099 return p; 00100 00101 }
|
|
dkcRijndael.c の 82 行で定義されています。 参照先 dkcAllocate(), と NULL. 00083 { 00084 DKC_RIJNDAEL *p = dkcAllocate(sizeof(DKC_RIJNDAEL)); 00085 if(NULL==p){ 00086 return NULL; 00087 } 00088 00089 return p; 00090 }
|
|
dkcRijndael.c の 174 行で定義されています。 00174 { 00175 if(NULL==p){ 00176 return edk_FAILED; 00177 } 00178 return dkcFree((void **)p); 00179 }
|
|
dkcRijndael.c の 130 行で定義されています。 参照先 blockDecrypt(), と ProcessCall(). 00131 { 00132 return ProcessCall(blockDecrypt,p,dest,dsize,src,ssize); 00133 }
|
|
dkcRijndael.c の 125 行で定義されています。 参照先 blockEncrypt(), と ProcessCall(). 00126 { 00127 return ProcessCall(blockEncrypt,p,dest,dsize,src,ssize); 00128 }
|
|
dkcRijndael.c の 148 行で定義されています。 参照先 edkcBAD_BLOCK_LENGTH, edkcBAD_CIPHER_INSTANCE, edkcBAD_CIPHER_MODE, edkcBAD_CIPHER_STATE, edkcBAD_DATA, edkcBAD_KEY_DIR, edkcBAD_KEY_INSTANCE, edkcBAD_KEY_MAT, edkcBAD_OTHER, RDEM_SC, と TRUE. 00149 { 00150 #define RDEM_SC(a) dkc_strcpy(buff,size,a,strlen(b)) 00151 #if 0 00152 switch(result){ 00153 case edkcBAD_KEY_DIR:// Key direction is invalid, e.g., unknown value 00154 RDEM_SC("キーのdirectoinが不正");break; 00155 case edkcBAD_KEY_MAT:// Key material not of correct length 00156 RDEM_SC("キーの元データの長さが足りないかも");break; 00157 case edkcBAD_KEY_MAT:// Key passed is not valid 00158 RDEM_SC("キーのpassedが無効かも");break; 00159 case edkcBAD_KEY_INSTANCE:// Params struct passed to cipherInit invalid 00160 00161 edkcBAD_CIPHER_MODE = -4 , 00163 edkcBAD_CIPHER_STATE = -5 , 00164 edkcBAD_BLOCK_LENGTH = -6, 00165 edkcBAD_CIPHER_INSTANCE = -7, 00167 edkcBAD_DATA = -8 , 00169 edkcBAD_OTHER = -9, 00170 #endif 00171 return TRUE; 00172 }
|
|
dkcRijndael.c の 142 行で定義されています。 参照先 padDecrypt(), と ProcessCall(). 00144 { 00145 return ProcessCall(padDecrypt,p,dest,dsize,src,ssize); 00146 }
|
|
dkcRijndael.c の 135 行で定義されています。 参照先 padEncrypt(), と ProcessCall(). 00137 { 00138 return ProcessCall(padEncrypt,p,dest,dsize,src,ssize); 00139 }
|
|
dkcRijndael.c の 181 行で定義されています。 参照先 edkcBAD_OTHER, makeKey(), dkc_RijnDael::mKey, と NULL. 00184 { 00185 keyInstance *pk; 00186 if(NULL==p){ 00187 return edkcBAD_OTHER; 00188 } 00189 pk = (keyInstance *)p->mKey; 00190 return makeKey(pk,option,size,dest_and_material); 00191 }
|
|
dkcRijndael.c の 105 行で定義されています。 参照先 BYTE, edkcBAD_KEY_DIR, dkc_RijnDael::mKey, と dkc_RijnDael::mRijndael. 参照元 dkcRijndaelBlockDecrypt(), dkcRijndaelBlockEncrypt(), dkcRijndaelPadDecrypt(), と dkcRijndaelPadEncrypt(). 00107 { 00108 00109 int r; 00110 BYTE *tsrc = (BYTE *)src; 00111 00112 if(dsize < ssize){ 00113 return edk_BufferOverFlow; 00114 } 00115 00116 r = proc((cipherInstance *)p->mRijndael,(keyInstance *)p->mKey,tsrc,ssize,dest); 00117 00118 if(r > edkcBAD_KEY_DIR){ 00119 return edk_SUCCEEDED; 00120 } 00121 //error 00122 return r; 00123 }
|