diff options
author | lloyd <[email protected]> | 2008-09-28 22:14:54 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2008-09-28 22:14:54 +0000 |
commit | 31204986023619c385d378e79a6511bb81ef7b78 (patch) | |
tree | ce272a6585dc070f750f6875b0450d53145b935d /src/codec/hex/hex.h | |
parent | 42c0fe76ab6d9625d0e51c68b8dd187322c991bd (diff) |
Move almost all of the ASN.1, BER, and DER codec related code into new
module asn1
Move hex and base64 codecs into new codecs directory. Also move zlib and
bzip2 to codecs from compress.
Diffstat (limited to 'src/codec/hex/hex.h')
-rw-r--r-- | src/codec/hex/hex.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/codec/hex/hex.h b/src/codec/hex/hex.h new file mode 100644 index 000000000..0ecddb588 --- /dev/null +++ b/src/codec/hex/hex.h @@ -0,0 +1,64 @@ +/************************************************* +* Hex Encoder/Decoder Header File * +* (C) 1999-2007 Jack Lloyd * +*************************************************/ + +#ifndef BOTAN_HEX_H__ +#define BOTAN_HEX_H__ + +#include <botan/filter.h> +#include <botan/enums.h> + +namespace Botan { + +/************************************************* +* Hex Encoder * +*************************************************/ +class BOTAN_DLL Hex_Encoder : public Filter + { + public: + enum Case { Uppercase, Lowercase }; + static void encode(byte, byte[2], Case = Uppercase); + + void write(const byte[], u32bit); + void end_msg(); + + Hex_Encoder(Case); + Hex_Encoder(bool = false, u32bit = 72, Case = Uppercase); + private: + void encode_and_send(const byte[], u32bit); + static const byte BIN_TO_HEX_UPPER[16]; + static const byte BIN_TO_HEX_LOWER[16]; + + const Case casing; + const u32bit line_length; + SecureVector<byte> in, out; + u32bit position, counter; + }; + +/************************************************* +* Hex Decoder * +*************************************************/ +class BOTAN_DLL Hex_Decoder : public Filter + { + public: + static byte decode(const byte[2]); + static bool is_valid(byte); + + void write(const byte[], u32bit); + void end_msg(); + + Hex_Decoder(Decoder_Checking = NONE); + private: + void decode_and_send(const byte[], u32bit); + void handle_bad_char(byte); + static const byte HEX_TO_BIN[256]; + + const Decoder_Checking checking; + SecureVector<byte> in, out; + u32bit position; + }; + +} + +#endif |