#ifndef INCLUDED_BOBCAT_ISYMCRYPTSTREAMBUF_
#define INCLUDED_BOBCAT_ISYMCRYPTSTREAMBUF_

#include <bobcat/symcryptstreambufbase>
#include <bobcat/fbb>

namespace FBB
{

template <CryptType>
class ISymCryptStreambuf;

template <>
class ISymCryptStreambuf<ENCRYPT>: public IUO::SymCryptStreambufBase
{
    public:
        ISymCryptStreambuf(                                     // 1.ff
                   std::istream &in,        char const *type,
                   std::string const &key,  std::string const &iv,
                   size_t bufSize = 100,    size_t filterBufSize = 1000, 
                   ENGINE *engine = 0
        );
};

template <>
class ISymCryptStreambuf<DECRYPT>: public IUO::SymCryptStreambufBase
{
    public:
        ISymCryptStreambuf(                                     // 2.ff
                    std::istream &in,       char const *type,
                    std::string const &key, std::string const &iv,
                    size_t bufSize = 100,   size_t filterBufSize = 1000,
                    ENGINE *engine = 0
        );
};

#include "isymcryptstreambuf1.f"
#include "isymcryptstreambuf2.f"

} // FBB        
#endif






