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

dkcRijndael.c

Rijndael Algorithm Wrapper. [詳細]

#include "dkcRijndael.h"
#include "dkcOSIndependent.h"
#include "rijndael-api-fst.h"

dkcRijndael.cのインクルード依存関係図

Include dependency graph

ソースコードを見る。

マクロ定義

#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)
 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)


説明

Rijndael Algorithm Wrapper.

覚え書き:
dkcRijndael.cppはd金魚によって改変されました。 dkcRijndael.cpp - modified by d.Kingyo

オリジナルのコードおよび改変されたコード(のライセンス)はパブリックドメインです。 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 で定義されています。


マクロ定義

#define GETBYTE x,
 )     (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

dkcRijndael.c48 行で定義されています。

#define RDEM_SC  )     dkc_strcpy(buff,size,a,strlen(b))
 

参照元 dkcRijndaelErrorMessage().


型定義

typedef int(* RIJNDAEL_CALLBACK_PROCESS)(cipherInstance *, keyInstance *, BYTE *, int , BYTE *)
 

dkcRijndael.c102 行で定義されています。

参照元 ProcessCall().


関数

DKC_RIJNDAEL* WINAPI dkcAllocRijndael  ) 
 

dkcRijndael.c59 行で定義されています。

参照先 DKC_RIJNDAEL, 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 }

DKC_RIJNDAEL* WINAPI dkcAllocRijndaelDecrypt const BYTE key,
size_t  keysize
 

dkcRijndael.c93 行で定義されています。

参照先 BYTE, DKC_RIJNDAEL, 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 }

DKC_RIJNDAEL* WINAPI dkcAllocRijndaelEncrypt const BYTE key,
size_t  keysize
 

dkcRijndael.c82 行で定義されています。

参照先 BYTE, DKC_RIJNDAEL, dkcAllocate(), と NULL.

00083 {
00084     DKC_RIJNDAEL *p = dkcAllocate(sizeof(DKC_RIJNDAEL));
00085     if(NULL==p){
00086         return NULL;
00087     }
00088 
00089     return p;
00090 }

int WINAPI dkcFreeRijndael DKC_RIJNDAEL **  p  ) 
 

dkcRijndael.c174 行で定義されています。

参照先 DKC_RIJNDAEL, dkcFree(), と NULL.

00174                                             {
00175     if(NULL==p){
00176         return edk_FAILED;
00177     }
00178     return dkcFree((void **)p);
00179 }

int WINAPI dkcRijndaelBlockDecrypt DKC_RIJNDAEL p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

dkcRijndael.c130 行で定義されています。

参照先 blockDecrypt(), DKC_RIJNDAEL, と ProcessCall().

00131                                                                                                                     {
00132     return ProcessCall(blockDecrypt,p,dest,dsize,src,ssize);
00133 }

int WINAPI dkcRijndaelBlockEncrypt DKC_RIJNDAEL p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

dkcRijndael.c125 行で定義されています。

参照先 blockEncrypt(), DKC_RIJNDAEL, と ProcessCall().

00126                                                                                                            {
00127     return ProcessCall(blockEncrypt,p,dest,dsize,src,ssize);
00128 }

BOOL WINAPI dkcRijndaelErrorMessage int  result,
char *  buff,
size_t  size
 

TODO:
まだ未実装な為、実装する事

dkcRijndael.c148 行で定義されています。

参照先 BOOL, 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 }

int WINAPI dkcRijndaelPadDecrypt DKC_RIJNDAEL p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

dkcRijndael.c142 行で定義されています。

参照先 DKC_RIJNDAEL, padDecrypt(), と ProcessCall().

00144 {
00145     return ProcessCall(padDecrypt,p,dest,dsize,src,ssize);
00146 }

int WINAPI dkcRijndaelPadEncrypt DKC_RIJNDAEL p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
 

dkcRijndael.c135 行で定義されています。

参照先 DKC_RIJNDAEL, padEncrypt(), と ProcessCall().

00137 {
00138     return ProcessCall(padEncrypt,p,dest,dsize,src,ssize);
00139 }

int WINAPI dkcRijndaelStringKey DKC_RIJNDAEL p,
char *  dest_and_material,
int  size,
BYTE  option
 

dkcRijndael.c181 行で定義されています。

参照先 DKC_RIJNDAEL, 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 }

ProcessCall RIJNDAEL_CALLBACK_PROCESS  proc,
DKC_RIJNDAEL p,
BYTE dest,
int  dsize,
const BYTE src,
int  ssize
[static]
 

dkcRijndael.c105 行で定義されています。

参照先 BYTE, DKC_RIJNDAEL, edkcBAD_KEY_DIR, dkc_RijnDael::mKey, dkc_RijnDael::mRijndael, と RIJNDAEL_CALLBACK_PROCESS.

参照元 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 }


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