Dependencies: DMSupport DMemWin
embedded/Base64.h
- Committer:
- destinyXfate
- Date:
- 2016-06-02
- Revision:
- 0:08606a13a816
File content as of revision 0:08606a13a816:
/* * Base64.h * * Created on: 2016/2/24 * Author: D10307009 */ #ifndef BASE64_H_ #define BASE64_H_ #include "mbed.h" /** Base64 encoder and decoder * * This class provided both encoding and decoding functions. These functions * perform dynamic memory allocations to create space for the translated * response. It is up to the calling function to free the space when * done with the translation. * * This code was derived from code found online that did not have any * copyright or reference to its work. * * @code * Base64 n; * * size_t encodedLen; * char *encoded = n.Encode("This is the message", 20, &encodedLen); * printf("Encoded message is {%s}\r\n", encoded); * @endcode */ class Base64 { public: /** Constructor * */ Base64(); /** Destructor * * This will release memory that may have been allocated (when the Decode * function was called). */ ~Base64(); /** Encodes a string of information of a defined length * * The encoded information is considered a binary stream, therefore a length is provided * which is used to compute the amount of memory to allocate for the conversion. * * @note The Decode method does not know how you are using it - if it is for text, * it will not apply any null termination, unless that was part of the input. * * @param data is a pointer to the input binary stream. * @param input_length is the number of bytes to process. * @param output_length is a pointer to a size_t value into which is written the * number of bytes in the output. * * @returns a pointer to the allocated block of memory holding the converted results. * @returns NULL if something went very wrong. */ char *Encode(const char *data, size_t input_length, size_t *output_length); int Encode(FILE *base, FILE *source); /** Decodes a base64 encoded stream back into the original information. * * The information to decode is considered a base64 encoded stream. A length is * provided which is used to compute the amount of memory to allocate for the conversion. * * @note The Decode method does not know how you are using it - if it is for text, * it will not apply any null termination, unless that was part of the input. * * @param data is a pointer to the encoded data to decode. * @param input_length is the number of bytes to process. * @param output_length is a pointer to a size_t value into which is written the * number of bytes in the output. * * @returns a pointer to the allocated block of memory holding the converted results. * @returns NULL if something went very wrong. */ char *Decode(const char *data, size_t input_length, size_t *output_length); private: void build_decoding_table(); char *decoding_table; }; #endif /* BASE64_H_ */