00001 #ifndef N2NC_SECURITYBLOWFISH_H 00002 #define N2NC_SECURITYBLOWFISH_H 00003 00004 #include "nixsys.h" 00005 00006 namespace n2nc { 00007 namespace security { 00008 00012 class BlowFish{ 00013 public: 00014 struct key_t{ u_char key[16]; u_char iv[8] ;}; 00015 00016 BlowFish(key_t *key); 00017 00018 int encrypt(void* inbuf, void* outbuf, size_t inlen); 00019 int decrypt(void* inbuf, void* outbuf, size_t inlen); 00020 int reinit(); 00021 int loadKey(key_t *key); 00022 00023 static int keyRand(key_t *key); 00024 ~BlowFish(); 00025 00026 key_t nullkey ; 00027 private: 00028 00029 EVP_CIPHER_CTX m_ctx; 00030 EVP_CIPHER_CTX m_ctx_e; 00031 EVP_CIPHER_CTX m_ctx_d; 00032 unsigned char m_key[16]; 00033 unsigned char m_iv[8]; 00034 00035 }; 00036 00037 } 00038 } 00039 00040 #endif