dkutil_cインターフェイス草案

http://d.hatena.ne.jp/kmt-t/20060623#1151080616
より
別の言語でのお話だったがAPIの規則にちょっと感銘を受ける。
という事で、実はdkutil_cのインターフェイス
http://d.hatena.ne.jp/studiokingyo/20060610#p1
にて変えるよと宣言していたのでちょっとだけ発表しようと思う。


Block cipher interface


@code
///出力に必要なバッファのバイト値
uint32 WINAPI dkc<Cipher algorithm name>GetOutputLength (uint32 lInputLong);

///1ブロックを暗号化する。ブロック単位のバッファ数でない場合はエラー
int WINAPI dkc<Cipher algorithm name>Block<Encrypt/Decrypt>(<Block cipher object> *,
uint8 *dest,const uint8 *src
);
///ブロック形式+指定した暗号モード(CBC,OFB等)で暗号化
int WINAPI dkc<Cipher algorithm name><Encrypt/Decrypt>(<Block cipher object> *,
uint8 *dest,size_t destsize,
const uint8 *src,size_t srcsize);
///オブジェクト内のバッファ領域に暗号化しそこなったデータを貯めておくバージョン
int WINAPI dkc<Cipher algorithm name>Pad<Encrypt/Decrypt>(<Block cipher object> *,
uint8 *dest,size_t destsize,
const uint8 *src,size_t srcsize,size_t *ProcessedSize);
///オブジェクト内のバッファ領域に溜まっているデータを吐き出す
int WINAPI dkc<Cipher algorithm name>Final(<Block cipher object> *,
uint8 *dest,size_t destsize,BOOL isDecryption,size_t *rest_val);
///ブロック長に関係なく一括で処理する
int WINAPI dkc<Cipher algorithm name>FinalPad<Encrypt/Decrypt> ( <Block cipher object> *,
uint8 * pOutput,size_t DestSize,
const uint8 * pInput, size_t lSize);

@endcode

Secure hash interface


@code
///オブジェクト初期化
void WINAPI dkc<Algorithm name>Init(<Secure hash object> *);
///オブジェクトに計算対象のデータを通す
void WINAPI dkc<Algorithm name>Load(<Secure hash object> *,const BYTE *pBuffer,DWORD dwSize);
///最後の計算をする
void WINAPI dkc<Algorithm name>Final(<Secure hash object> *);
///最後の計算をした後の値を文字列で取得
int WINAPI dkc<Algorithm name>DigestStr(<Secure hash object> *,char *buff,size_t size);
///最後の計算をした後の値をバイナリで取得
int WINAPI dkc<Algorithm name>Digest(<Secure hash object> *,BYTE *buff,size_t size);
///最後の計算をして値を文字列で取得
int WINAPI dkc<Algorithm name>FinalDigestStr(<Secure hash object> *,char *buff,size_t size);
///最後の計算をして値をバイナリで取得
int WINAPI dkc<Algorithm name>FinalDigest(<Secure hash object> *,BYTE *buff,size_t size);

@endcode