/* mycipher.h * EVP 関数による暗号化・復号のサンプル */ #ifndef _MYCIPHER_H_ #define _MYCIPHER_H_ #ifndef _APR_BUCKETS_H_ #include "apr_buckets.h" #endif #ifndef HEADER_ENVELOPE_H #include #endif #ifndef _MYBB_H_ #include "mybb.h" #endif /* 暗号化に使用するバッファサイズ(バイト長) * 128bits = 16bytes, 192bits = 24bytes, 256bits = 32bytes の公倍数にしてみる */ #define ENCDEC_BUFF_SIZE 1536 /* * mycipher.c の初期化 * メインスレッドで最初に実行しておく */ void init_mycipher(); /* * ストリームを暗号化・復号する関数(Bucket Brigade ストリーム版) * 返り値: * 0 失敗 * 1 成功 */ int kencdec_from_bb_to_bb( char *cipher_alg /* IN:暗号アルゴリズム。OpenSSL の指定に基づく。暗号名+"-"+鍵長+"-"+暗号モード */ , unsigned char *keyData /* IN:暗号鍵のオクテット列 */ , int keyLen /* IN:暗号鍵の長さ(オクテット長) */ , unsigned char *ivData /* IN:初期化ベクトルのオクテット列 */ , int ivLen /* IN:初期化ベクトルの長さ(オクテット長) */ , int num_in /* IN:暗号対象データのサイズ */ , apr_bucket_brigade *bbIn /* IN:入力ストリーム */ , apr_bucket_brigade *bbOut/* OUT:出力ストリーム */ , int type /* IN:処理タイプ。1:暗号化、0:復号 */ ); /* * ストリームの暗号化(マクロ) */ #define kencrypt_from_bb_to_bb(ca,kd,kl,ivd,ivl,ni,bi,bo) \ kencdec_from_bb_to_bb((ca),(kd),(kl),(ivd),(ivl),(ni),(bi),(bo),(1)) /* * ストリームの復号(マクロ */ #define kdecrypt_from_bb_to_bb(ca,kd,kl,ivd,ivl,ni,bi,bo) \ kencdec_from_bb_to_bb((ca),(kd),(kl),(ivd),(ivl),(ni),(bi),(bo),(0)) #endif /* _MYCIPHER_H_ */