]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/include/mbedtls/base64.h
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / include / mbedtls / base64.h
1 /**\r
2  * \file base64.h\r
3  *\r
4  * \brief RFC 1521 base64 encoding/decoding\r
5  */\r
6 /*\r
7  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved\r
8  *  SPDX-License-Identifier: Apache-2.0\r
9  *\r
10  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
11  *  not use this file except in compliance with the License.\r
12  *  You may obtain a copy of the License at\r
13  *\r
14  *  http://www.apache.org/licenses/LICENSE-2.0\r
15  *\r
16  *  Unless required by applicable law or agreed to in writing, software\r
17  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
18  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
19  *  See the License for the specific language governing permissions and\r
20  *  limitations under the License.\r
21  *\r
22  *  This file is part of mbed TLS (https://tls.mbed.org)\r
23  */\r
24 #ifndef MBEDTLS_BASE64_H\r
25 #define MBEDTLS_BASE64_H\r
26 \r
27 #if !defined(MBEDTLS_CONFIG_FILE)\r
28 #include "config.h"\r
29 #else\r
30 #include MBEDTLS_CONFIG_FILE\r
31 #endif\r
32 \r
33 #include <stddef.h>\r
34 \r
35 #define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL               -0x002A  /**< Output buffer too small. */\r
36 #define MBEDTLS_ERR_BASE64_INVALID_CHARACTER              -0x002C  /**< Invalid character in input. */\r
37 \r
38 #ifdef __cplusplus\r
39 extern "C" {\r
40 #endif\r
41 \r
42 /**\r
43  * \brief          Encode a buffer into base64 format\r
44  *\r
45  * \param dst      destination buffer\r
46  * \param dlen     size of the destination buffer\r
47  * \param olen     number of bytes written\r
48  * \param src      source buffer\r
49  * \param slen     amount of data to be encoded\r
50  *\r
51  * \return         0 if successful, or MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL.\r
52  *                 *olen is always updated to reflect the amount\r
53  *                 of data that has (or would have) been written.\r
54  *                 If that length cannot be represented, then no data is\r
55  *                 written to the buffer and *olen is set to the maximum\r
56  *                 length representable as a size_t.\r
57  *\r
58  * \note           Call this function with dlen = 0 to obtain the\r
59  *                 required buffer size in *olen\r
60  */\r
61 int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen,\r
62                    const unsigned char *src, size_t slen );\r
63 \r
64 /**\r
65  * \brief          Decode a base64-formatted buffer\r
66  *\r
67  * \param dst      destination buffer (can be NULL for checking size)\r
68  * \param dlen     size of the destination buffer\r
69  * \param olen     number of bytes written\r
70  * \param src      source buffer\r
71  * \param slen     amount of data to be decoded\r
72  *\r
73  * \return         0 if successful, MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL, or\r
74  *                 MBEDTLS_ERR_BASE64_INVALID_CHARACTER if the input data is\r
75  *                 not correct. *olen is always updated to reflect the amount\r
76  *                 of data that has (or would have) been written.\r
77  *\r
78  * \note           Call this function with *dst = NULL or dlen = 0 to obtain\r
79  *                 the required buffer size in *olen\r
80  */\r
81 int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen,\r
82                    const unsigned char *src, size_t slen );\r
83 \r
84 #if defined(MBEDTLS_SELF_TEST)\r
85 /**\r
86  * \brief          Checkup routine\r
87  *\r
88  * \return         0 if successful, or 1 if the test failed\r
89  */\r
90 int mbedtls_base64_self_test( int verbose );\r
91 \r
92 #endif /* MBEDTLS_SELF_TEST */\r
93 \r
94 #ifdef __cplusplus\r
95 }\r
96 #endif\r
97 \r
98 #endif /* base64.h */\r