Azure IoT / azure_c_shared_utility

Dependents:   STM32F746_iothub_client_sample_mqtt f767zi_mqtt iothub_client_sample_amqp iothub_client_sample_http ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers base64.h Source File

base64.h

Go to the documentation of this file.
00001 // Copyright (c) Microsoft. All rights reserved.
00002 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
00003 
00004 /** @file base64.h
00005 *    @brief Prototypes for functions related to encoding/decoding
00006 *    a @c buffer using standard base64 encoding.
00007 */
00008 
00009 #ifndef BASE64_H
00010 #define BASE64_H
00011 
00012 #include "azure_c_shared_utility/strings.h"
00013 #include "azure_c_shared_utility/buffer_.h"
00014 
00015 #ifdef __cplusplus
00016 #include <cstddef>
00017 extern "C" {
00018 #else
00019 #include <stddef.h>
00020 #endif
00021 
00022 #include "azure_c_shared_utility/umock_c_prod.h"
00023 
00024 
00025 /**
00026  * @brief    Base64 encodes a buffer and returns the resulting string.
00027  *
00028  * @param    input    The buffer that needs to be base64 encoded.
00029  *
00030  *             Base64_Encoder takes as a parameter a pointer to a BUFFER. If @p input is @c NULL then
00031  *             @c Base64_Encoder returns @c NULL. The size of the BUFFER pointed to by @p input may
00032  *             be zero. If when allocating memory to produce the encoding a failure occurs, then @c
00033  *             Base64_Encoder returns @c NULL. Otherwise
00034  *             @c Base64_Encoder returns a pointer to a STRING. That string contains the
00035  *             base 64 encoding of the @p input. This encoding of @p input will not contain embedded
00036  *             line feeds.
00037  *
00038  * @return    A @c STRING_HANDLE containing the base64 encoding of @p input.
00039  */
00040 MOCKABLE_FUNCTION(, STRING_HANDLE, Base64_Encoder, BUFFER_HANDLE, input);
00041 
00042 /**
00043  * @brief    Base64 encodes the buffer pointed to by @p source and returns the resulting string.
00044  *
00045  * @param    source    The buffer that needs to be base64 encoded.
00046  * @param    size      The size.
00047  *
00048  *             This function produces a @c STRING_HANDLE containing the base64 encoding of the
00049  *             buffer pointed to by @p source, having the size as given by
00050  *             @p size. If @p source is @c NULL then @c Base64_Encode_Bytes returns @c NULL
00051  *             If @p source is not @c NULL and @p size is zero, then @c Base64_Encode_Bytes produces
00052  *             an empty @c STRING_HANDLE. Otherwise, @c Base64_Encode_Bytes produces a
00053  *             @c STRING_HANDLE containing the Base64 representation of the buffer. In case of
00054  *             any errors, @c Base64_Encode_Bytes returns @c NULL.].
00055  *
00056  * @return    @c NULL in case an error occurs or a @c STRING_HANDLE containing the base64 encoding
00057  *             of @p input.
00058  *
00059  */
00060 MOCKABLE_FUNCTION(, STRING_HANDLE, Base64_Encode_Bytes, const unsigned char*, source, size_t, size);
00061 
00062 /**
00063  * @brief    Base64 decodes the buffer pointed to by @p source and returns the resulting buffer.
00064  *
00065  * @param    source    A base64 encoded string buffer.
00066  *
00067  *           This function decodes the string pointed at by @p source using base64 decoding and
00068  *             returns the resulting buffer. If @p source is @c NULL then
00069  *             @c Base64_Decoder returns NULL. If the string pointed to by @p source is zero
00070  *             length then the handle returned refers to a zero length buffer. If there is any
00071  *             memory allocation failure during the decode or if the source string has an invalid
00072  *             length for a base 64 encoded string then @c Base64_Decoder returns @c NULL.
00073  *
00074  * @return    A @c BUFFER_HANDLE pointing to a buffer containing the result of base64 decoding @p
00075  *             source.
00076  */
00077 MOCKABLE_FUNCTION(, BUFFER_HANDLE, Base64_Decoder, const char*, source);
00078 
00079 #ifdef __cplusplus
00080 }
00081 #endif
00082 
00083 #endif /* BASE64_H */