Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

# basecode.h

    00001 #ifndef CRYPTOPP_BASECODE_H
    00002 #define CRYPTOPP_BASECODE_H
    00003
    00004 #include "filters.h"
    00005 #include "algparam.h"
    00006
    00007 NAMESPACE_BEGIN(CryptoPP)
    00008
    00009 class CRYPTOPP_DLL BaseN_Encoder : public Unflushable<Filter>
    00010 {
    00011 public:
    00012         BaseN_Encoder(BufferedTransformation *attachment=NULL)
    00013                 : Unflushable<Filter>(attachment) {}
    00014
    00015         BaseN_Encoder(const byte *alphabet, int log2base, BufferedTransformation *attachment=NULL, int padding=-1)
    00016                 : Unflushable<Filter>(attachment)
    00017         {
    00018                 IsolatedInitialize(MakeParameters("EncodingLookupArray", alphabet)
    00019                         ("Log2Base", log2base)
    00020                         ("Pad", padding != -1)
    00021                         ("PaddingByte", byte(padding)));
    00022         }
    00023
    00024         void IsolatedInitialize(const NameValuePairs &parameters);
    00025         unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking);
    00026
    00027 private:
    00028         const byte *m_alphabet;
    00029         int m_padding, m_bitsPerChar, m_outputBlockSize;
    00030         int m_bytePos, m_bitPos;
    00031         SecByteBlock m_outBuf;
    00032 };
    00033
    00034 class CRYPTOPP_DLL BaseN_Decoder : public Unflushable<Filter>
    00035 {
    00036 public:
    00037         BaseN_Decoder(BufferedTransformation *attachment=NULL)
    00038                 : Unflushable<Filter>(attachment) {}
    00039
    00040         BaseN_Decoder(const int *lookup, int log2base, BufferedTransformation *attachment=NULL)
    00041                 : Unflushable<Filter>(attachment)
    00042         {
    00043                 IsolatedInitialize(MakeParameters("DecodingLookupArray", lookup)("Log2Base", log2base));
    00044         }
    00045
    00046         void IsolatedInitialize(const NameValuePairs &parameters);
    00047         unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking);
    00048
    00049         static void InitializeDecodingLookupArray(int *lookup, const byte *alphabet, unsigned int log2base, bool caseInsensitive);
    00050
    00051 private:
    00052         const int *m_lookup;
    00053         int m_padding, m_bitsPerChar, m_outputBlockSize;
    00054         int m_bytePos, m_bitPos;
    00055         SecByteBlock m_outBuf;
    00056 };
    00057
    00058 class CRYPTOPP_DLL Grouper : public Bufferless<Filter>
    00059 {
    00060 public:
    00061         Grouper(BufferedTransformation *attachment=NULL)
    00062                 : Bufferless<Filter>(attachment) {}
    00063
    00064         Grouper(int groupSize, const std::string &seperator, const std::string &terminator, BufferedTransformation *attachment=NULL)
    00065                 : Bufferless<Filter>(attachment)
    00066         {
    00067                 IsolatedInitialize(MakeParameters("GroupSize", groupSize)
    00068                         ("Seperator", ConstByteArrayParameter(seperator))
    00069                         ("Terminator", ConstByteArrayParameter(terminator)));
    00070         }
    00071
    00072         void IsolatedInitialize(const NameValuePairs &parameters);
    00073         unsigned int Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking);
    00074
    00075 private:
    00076         SecByteBlock m_seperator, m_terminator;
    00077         unsigned int m_groupSize, m_counter;
    00078 };
    00079
    00080 NAMESPACE_END
    00081
    00082 #endif