Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
c-utility/inc/azure_c_shared_utility/base64.h@0:f7f1f0d76dd6, 2018-08-23 (annotated)
- 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?
| User | Revision | Line number | New 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 */ |