diff options
Diffstat (limited to 'src/uscxml/util/Base64.h')
-rw-r--r-- | src/uscxml/util/Base64.h | 64 |
1 files changed, 55 insertions, 9 deletions
diff --git a/src/uscxml/util/Base64.h b/src/uscxml/util/Base64.h index 0102046..3bd4c6c 100644 --- a/src/uscxml/util/Base64.h +++ b/src/uscxml/util/Base64.h @@ -1,15 +1,61 @@ -// taken from http://www.adp-gmbh.ch/cpp/common/base64.html -#ifndef BASE64_H_5FKG12HF -#define BASE64_H_5FKG12HF +/* +cdecode.h - c header for a base64 decoding algorithm -#include <string> -#include "uscxml/Common.h" +This is part of the libb64 project, and has been placed in the public domain. +For details, see http://sourceforge.net/projects/libb64 +*/ -namespace uscxml { +#ifndef BASE64_H_MMR5NHB7 +#define BASE64_H_MMR5NHB7 -USCXML_API std::string base64_encode(char const* , unsigned int len); -USCXML_API std::string base64_decode(std::string const& s); +#ifdef __cplusplus +extern "C" { +#endif +/// DECODE + +typedef enum +{ + step_a, step_b, step_c, step_d +} base64_decodestep; + +typedef struct +{ + base64_decodestep step; + char plainchar; +} base64_decodestate; + +void base64_init_decodestate(base64_decodestate* state_in); + +int base64_decode_value(char value_in); + +int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in); + +/// ENDCODE + +typedef enum +{ + step_A, step_B, step_C +} base64_encodestep; + +typedef struct +{ + base64_encodestep step; + char result; + int stepcount; +} base64_encodestate; + +void base64_init_encodestate(base64_encodestate* state_in); + +char base64_encode_value(char value_in); + +int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in); + +int base64_encode_blockend(char* code_out, base64_encodestate* state_in); + +#ifdef __cplusplus } +#endif + -#endif /* end of include guard: BASE64_H_5FKG12HF */ +#endif /* end of include guard: BASE64_H_MMR5NHB7 */ |