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

# dkcRijndael.h

Rijndael Algorithm Wrapper [詳細]

`#include "dkcOSIndependent.h"`
`#include "dkcMemoryStream.h"`

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

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

ソースコードを見る。

## 構成
struct | dkc_RijnDael
## マクロ定義
#define | dkcRijndaelEncodeStringKey(a, b, c) dkcRijndaelStringKey(a,b,c,edkcRijndaelEncrypt)
#define | dkcRijndaelEDecodeStringKey(a, b, c) dkcRijndaelStringKey(a,b,c,edkcRijndaelDecrypt)
## 型定義
typedef dkc_RijnDael | DKC_RIJNDAEL
## 列挙型
enum | edk_Rijndael { edkcBAD_KEY_DIR = -1, edkcBAD_KEY_MAT = -2, edkcBAD_KEY_INSTANCE = -3, edkcBAD_CIPHER_MODE = -4, edkcBAD_CIPHER_STATE = -5, edkcBAD_BLOCK_LENGTH = -6, edkcBAD_CIPHER_INSTANCE = -7, edkcBAD_DATA = -8, edkcBAD_OTHER = -9, edkcRijndaelEncrypt = 0, edkcRijndaelDecrypt = 1, edkcRijndael_ECB = 1, edkcRijndael_CBC = 2, edkcRijndael_CFB1 = 3 }
## 関数
DKC_EXTERN DKC_RIJNDAEL *WINAPI | dkcAllocRijndael ()
DKC_EXTERN DKC_RIJNDAEL *WINAPI | dkcAllocRijndaelEncrypt (const BYTE *key, size_t keysize)
DKC_EXTERN DKC_RIJNDAEL *WINAPI | dkcAllocRijndaelDecrypt (const BYTE *key, size_t keysize)
DKC_EXTERN int WINAPI | dkcFreeRijndael (DKC_RIJNDAEL **)
DKC_EXTERN int WINAPI | dkcRijndaelBlockEncrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI | dkcRijndaelBlockDecrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI | dkcRijndaelPadEncrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI | dkcRijndaelPadDecrypt (DKC_RIJNDAEL *p, BYTE *dest, int dsize, const BYTE *src, int ssize)
DKC_EXTERN int WINAPI | dkcRijndaelStringKey (DKC_RIJNDAEL *p, char *dest_and_material, int size, BYTE option)
DKC_EXTERN BOOL WINAPI | dkcRijndaelErrorMessage (int result, char *buff, size_t size)

## 説明

Rijndael Algorithm Wrapper

作者:
  wrapped by d金魚

覚え書き:
  http://fp.gladman.plus.com/cryptography_technology/index.htm からDLできるRijndaelライブラリを使う場合（dkcRijndael側では未対応） dkcdBRIAN_GLADMAN_RIJNDAEL

デフォルトでrijndael-api-fstおよびrijndael-alg-fstを使用する。

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

## マクロ定義

#define dkcRijndaelEDecodeStringKey | ( | a,
|  | b,
|  | c |  | ) | dkcRijndaelStringKey(a,b,c,edkcRijndaelDecrypt)

| dkcRijndael.h の 101 行で定義されています。

#define dkcRijndaelEncodeStringKey | ( | a,
|  | b,
|  | c |  | ) | dkcRijndaelStringKey(a,b,c,edkcRijndaelEncrypt)

| dkcRijndael.h の 99 行で定義されています。

## 型定義

typedef struct dkc_RijnDael DKC_RIJNDAEL

## 列挙型

enum edk_Rijndael

  | 列挙型の値:
  edkcBAD_KEY_DIR | Key direction is invalid, e.g., unknown value
  edkcBAD_KEY_MAT | Key material not of correct length
  edkcBAD_KEY_INSTANCE | Key passed is not valid
  edkcBAD_CIPHER_MODE | Params struct passed to cipherInit invalid
  edkcBAD_CIPHER_STATE | Cipher in wrong state (e.g., not initialized)
  edkcBAD_BLOCK_LENGTH |
  edkcBAD_CIPHER_INSTANCE |
  edkcBAD_DATA | Data contents are invalid, e.g., invalid padding
  edkcBAD_OTHER | Unknown error
  edkcRijndaelEncrypt | 暗号化するとき〜〜
  edkcRijndaelDecrypt | 復号化するとき〜〜
  edkcRijndael_ECB | Are we ciphering in ECB mode?
  edkcRijndael_CBC | Are we ciphering in CBC mode?
  edkcRijndael_CFB1 | Are we ciphering in 1-bit CFB mode?
dkcRijndael.h の 39 行で定義されています。
    00039                  {
    00041     edkcBAD_KEY_DIR    =      -1 ,
    00043     edkcBAD_KEY_MAT     =     -2 ,
    00045     edkcBAD_KEY_INSTANCE =    -3 ,
    00047     edkcBAD_CIPHER_MODE =     -4 ,
    00049     edkcBAD_CIPHER_STATE =    -5 ,
    00050     edkcBAD_BLOCK_LENGTH  =   -6,
    00051     edkcBAD_CIPHER_INSTANCE = -7,
    00053     edkcBAD_DATA        =     -8 ,
    00055     edkcBAD_OTHER       =     -9,
    00057     edkcRijndaelEncrypt = 0,
    00059     edkcRijndaelDecrypt = 1,
    00061     edkcRijndael_ECB = 1,
    00063     edkcRijndael_CBC = 2,
    00065     edkcRijndael_CFB1 = 3,
    00066 };

## 関数

DKC_EXTERN DKC_RIJNDAEL* WINAPI dkcAllocRijndael | ( |  | ) |

| 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 }

DKC_EXTERN DKC_RIJNDAEL* WINAPI dkcAllocRijndaelDecrypt | ( | const BYTE * | key,
|  | size_t | keysize
| ) |

| 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 }

DKC_EXTERN DKC_RIJNDAEL* WINAPI dkcAllocRijndaelEncrypt | ( | const BYTE * | key,
|  | size_t | keysize
| ) |

| 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 }

DKC_EXTERN int WINAPI dkcFreeRijndael | ( | DKC_RIJNDAEL ** |  | ) |

| dkcRijndael.c の 174 行で定義されています。 参照先 dkcFree(), と NULL.
    00174                                             {
    00175     if(NULL==p){
    00176         return edk_FAILED;
    00177     }
    00178     return dkcFree((void **)p);
    00179 }

DKC_EXTERN int WINAPI dkcRijndaelBlockDecrypt | ( | DKC_RIJNDAEL * | p,
|  | BYTE * | dest,
|  | int | dsize,
|  | const BYTE * | src,
|  | int | ssize
| ) |

| dkcRijndael.c の 130 行で定義されています。 参照先 blockDecrypt(), と ProcessCall().
    00131                                                                                                                     {
    00132     return ProcessCall(blockDecrypt,p,dest,dsize,src,ssize);
    00133 }

DKC_EXTERN int WINAPI dkcRijndaelBlockEncrypt | ( | DKC_RIJNDAEL * | p,
|  | BYTE * | dest,
|  | int | dsize,
|  | const BYTE * | src,
|  | int | ssize
| ) |

| dkcRijndael.c の 125 行で定義されています。 参照先 blockEncrypt(), と ProcessCall().
    00126                                                                                                            {
    00127     return ProcessCall(blockEncrypt,p,dest,dsize,src,ssize);
    00128 }

DKC_EXTERN BOOL WINAPI dkcRijndaelErrorMessage | ( | int | result,
|  | char * | buff,
|  | size_t | size
| ) |

| TODO: まだ未実装な為、実装する事 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 }

DKC_EXTERN int WINAPI dkcRijndaelPadDecrypt | ( | DKC_RIJNDAEL * | p,
|  | BYTE * | dest,
|  | int | dsize,
|  | const BYTE * | src,
|  | int | ssize
| ) |

| dkcRijndael.c の 142 行で定義されています。 参照先 padDecrypt(), と ProcessCall().
    00144 {
    00145     return ProcessCall(padDecrypt,p,dest,dsize,src,ssize);
    00146 }

DKC_EXTERN int WINAPI dkcRijndaelPadEncrypt | ( | DKC_RIJNDAEL * | p,
|  | BYTE * | dest,
|  | int | dsize,
|  | const BYTE * | src,
|  | int | ssize
| ) |

| dkcRijndael.c の 135 行で定義されています。 参照先 padEncrypt(), と ProcessCall().
    00137 {
    00138     return ProcessCall(padEncrypt,p,dest,dsize,src,ssize);
    00139 }

DKC_EXTERN int WINAPI dkcRijndaelStringKey | ( | DKC_RIJNDAEL * | p,
|  | char * | dest_and_material,
|  | int | size,
|  | BYTE | option
| ) |

| 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 }