Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

Committer:
XinZhangMS
Date:
Thu Aug 23 06:52:14 2018 +0000
Revision:
0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XinZhangMS 0:f7f1f0d76dd6 1 // Copyright (c) Microsoft. All rights reserved.
XinZhangMS 0:f7f1f0d76dd6 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
XinZhangMS 0:f7f1f0d76dd6 3
XinZhangMS 0:f7f1f0d76dd6 4 /** @file base64.h
XinZhangMS 0:f7f1f0d76dd6 5 * @brief Prototypes for functions related to encoding/decoding
XinZhangMS 0:f7f1f0d76dd6 6 * a @c buffer using standard base64 encoding.
XinZhangMS 0:f7f1f0d76dd6 7 */
XinZhangMS 0:f7f1f0d76dd6 8
XinZhangMS 0:f7f1f0d76dd6 9 #ifndef BASE64_H
XinZhangMS 0:f7f1f0d76dd6 10 #define BASE64_H
XinZhangMS 0:f7f1f0d76dd6 11
XinZhangMS 0:f7f1f0d76dd6 12 #include "azure_c_shared_utility/strings.h"
XinZhangMS 0:f7f1f0d76dd6 13 #include "azure_c_shared_utility/buffer_.h"
XinZhangMS 0:f7f1f0d76dd6 14
XinZhangMS 0:f7f1f0d76dd6 15 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 16 #include <cstddef>
XinZhangMS 0:f7f1f0d76dd6 17 extern "C" {
XinZhangMS 0:f7f1f0d76dd6 18 #else
XinZhangMS 0:f7f1f0d76dd6 19 #include <stddef.h>
XinZhangMS 0:f7f1f0d76dd6 20 #endif
XinZhangMS 0:f7f1f0d76dd6 21
XinZhangMS 0:f7f1f0d76dd6 22 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 23
XinZhangMS 0:f7f1f0d76dd6 24
XinZhangMS 0:f7f1f0d76dd6 25 /**
XinZhangMS 0:f7f1f0d76dd6 26 * @brief Base64 encodes a buffer and returns the resulting string.
XinZhangMS 0:f7f1f0d76dd6 27 *
XinZhangMS 0:f7f1f0d76dd6 28 * @param input The buffer that needs to be base64 encoded.
XinZhangMS 0:f7f1f0d76dd6 29 *
XinZhangMS 0:f7f1f0d76dd6 30 * Base64_Encoder takes as a parameter a pointer to a BUFFER. If @p input is @c NULL then
XinZhangMS 0:f7f1f0d76dd6 31 * @c Base64_Encoder returns @c NULL. The size of the BUFFER pointed to by @p input may
XinZhangMS 0:f7f1f0d76dd6 32 * be zero. If when allocating memory to produce the encoding a failure occurs, then @c
XinZhangMS 0:f7f1f0d76dd6 33 * Base64_Encoder returns @c NULL. Otherwise
XinZhangMS 0:f7f1f0d76dd6 34 * @c Base64_Encoder returns a pointer to a STRING. That string contains the
XinZhangMS 0:f7f1f0d76dd6 35 * base 64 encoding of the @p input. This encoding of @p input will not contain embedded
XinZhangMS 0:f7f1f0d76dd6 36 * line feeds.
XinZhangMS 0:f7f1f0d76dd6 37 *
XinZhangMS 0:f7f1f0d76dd6 38 * @return A @c STRING_HANDLE containing the base64 encoding of @p input.
XinZhangMS 0:f7f1f0d76dd6 39 */
XinZhangMS 0:f7f1f0d76dd6 40 MOCKABLE_FUNCTION(, STRING_HANDLE, Base64_Encoder, BUFFER_HANDLE, input);
XinZhangMS 0:f7f1f0d76dd6 41
XinZhangMS 0:f7f1f0d76dd6 42 /**
XinZhangMS 0:f7f1f0d76dd6 43 * @brief Base64 encodes the buffer pointed to by @p source and returns the resulting string.
XinZhangMS 0:f7f1f0d76dd6 44 *
XinZhangMS 0:f7f1f0d76dd6 45 * @param source The buffer that needs to be base64 encoded.
XinZhangMS 0:f7f1f0d76dd6 46 * @param size The size.
XinZhangMS 0:f7f1f0d76dd6 47 *
XinZhangMS 0:f7f1f0d76dd6 48 * This function produces a @c STRING_HANDLE containing the base64 encoding of the
XinZhangMS 0:f7f1f0d76dd6 49 * buffer pointed to by @p source, having the size as given by
XinZhangMS 0:f7f1f0d76dd6 50 * @p size. If @p source is @c NULL then @c Base64_Encode_Bytes returns @c NULL
XinZhangMS 0:f7f1f0d76dd6 51 * If @p source is not @c NULL and @p size is zero, then @c Base64_Encode_Bytes produces
XinZhangMS 0:f7f1f0d76dd6 52 * an empty @c STRING_HANDLE. Otherwise, @c Base64_Encode_Bytes produces a
XinZhangMS 0:f7f1f0d76dd6 53 * @c STRING_HANDLE containing the Base64 representation of the buffer. In case of
XinZhangMS 0:f7f1f0d76dd6 54 * any errors, @c Base64_Encode_Bytes returns @c NULL.].
XinZhangMS 0:f7f1f0d76dd6 55 *
XinZhangMS 0:f7f1f0d76dd6 56 * @return @c NULL in case an error occurs or a @c STRING_HANDLE containing the base64 encoding
XinZhangMS 0:f7f1f0d76dd6 57 * of @p input.
XinZhangMS 0:f7f1f0d76dd6 58 *
XinZhangMS 0:f7f1f0d76dd6 59 */
XinZhangMS 0:f7f1f0d76dd6 60 MOCKABLE_FUNCTION(, STRING_HANDLE, Base64_Encode_Bytes, const unsigned char*, source, size_t, size);
XinZhangMS 0:f7f1f0d76dd6 61
XinZhangMS 0:f7f1f0d76dd6 62 /**
XinZhangMS 0:f7f1f0d76dd6 63 * @brief Base64 decodes the buffer pointed to by @p source and returns the resulting buffer.
XinZhangMS 0:f7f1f0d76dd6 64 *
XinZhangMS 0:f7f1f0d76dd6 65 * @param source A base64 encoded string buffer.
XinZhangMS 0:f7f1f0d76dd6 66 *
XinZhangMS 0:f7f1f0d76dd6 67 * This function decodes the string pointed at by @p source using base64 decoding and
XinZhangMS 0:f7f1f0d76dd6 68 * returns the resulting buffer. If @p source is @c NULL then
XinZhangMS 0:f7f1f0d76dd6 69 * @c Base64_Decoder returns NULL. If the string pointed to by @p source is zero
XinZhangMS 0:f7f1f0d76dd6 70 * length then the handle returned refers to a zero length buffer. If there is any
XinZhangMS 0:f7f1f0d76dd6 71 * memory allocation failure during the decode or if the source string has an invalid
XinZhangMS 0:f7f1f0d76dd6 72 * length for a base 64 encoded string then @c Base64_Decoder returns @c NULL.
XinZhangMS 0:f7f1f0d76dd6 73 *
XinZhangMS 0:f7f1f0d76dd6 74 * @return A @c BUFFER_HANDLE pointing to a buffer containing the result of base64 decoding @p
XinZhangMS 0:f7f1f0d76dd6 75 * source.
XinZhangMS 0:f7f1f0d76dd6 76 */
XinZhangMS 0:f7f1f0d76dd6 77 MOCKABLE_FUNCTION(, BUFFER_HANDLE, Base64_Decoder, const char*, source);
XinZhangMS 0:f7f1f0d76dd6 78
XinZhangMS 0:f7f1f0d76dd6 79 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 80 }
XinZhangMS 0:f7f1f0d76dd6 81 #endif
XinZhangMS 0:f7f1f0d76dd6 82
XinZhangMS 0:f7f1f0d76dd6 83 #endif /* BASE64_H */