00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __i_blowfish_stream_hpp
00021 #define __i_blowfish_stream_hpp
00022
00023 #include <mynahsa/istreambase.hpp>
00024
00025 #include <openssl/blowfish.h>
00026
00027 #include <iostream>
00028
00029 #include <string>
00030
00031 namespace MynahSA {
00032 class IBlowfishStream : public IStreamBase {
00033 public:
00034
00040 IBlowfishStream(std::istream& is, const std::string& key);
00041
00046 IBlowfishStream(const IBlowfishStream& is);
00047
00049 virtual ~IBlowfishStream();
00050
00052 virtual IStreamBase& operator>>(char&);
00053
00055 virtual IStreamBase& operator>>(unsigned char&);
00056
00058 virtual IStreamBase& operator>>(short&);
00059
00061 virtual IStreamBase& operator>>(unsigned short&);
00062
00064 virtual IStreamBase& operator>>(bool&);
00065
00067 virtual IStreamBase& operator>>(int&);
00068
00070 virtual IStreamBase& operator>>(unsigned int&);
00071
00073 virtual IStreamBase& operator>>(long long&);
00074
00076 virtual IStreamBase& operator>>(unsigned long long&);
00077
00079 virtual IStreamBase& operator>>(double&);
00080
00082 virtual IStreamBase& operator>>(float&);
00083
00084
00086 virtual void get(char& c);
00087
00088
00089
00090 using IStreamBase::operator>>;
00091
00092 private:
00093
00097 void fillBuffer();
00098
00099
00101 std::istream& _is;
00102
00104 BF_KEY _bfKey;
00105
00106 unsigned int _buffPtr;
00107
00109 unsigned char _inBuffer[8];
00110
00112 unsigned char _outBuffer[8];
00113
00115 unsigned char _ivec[8];
00116
00117
00118 };
00119 };
00120
00121 #endif