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