Line data Source code
1 0 : /*
2 : * RFC 1521 base64 encoding/decoding
3 : *
4 : * Copyright (C) 2018, Nordic Semiconductor ASA
5 : * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
6 : * SPDX-License-Identifier: Apache-2.0
7 : *
8 : * Licensed under the Apache License, Version 2.0 (the "License"); you may
9 : * not use this file except in compliance with the License.
10 : * You may obtain a copy of the License at
11 : *
12 : * http://www.apache.org/licenses/LICENSE-2.0
13 : *
14 : * Unless required by applicable law or agreed to in writing, software
15 : * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 : * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 : * See the License for the specific language governing permissions and
18 : * limitations under the License.
19 : *
20 : * Adapted for Zephyr by Carles Cufi (carles.cufi@nordicsemi.no)
21 : * - Removed mbedtls_ prefixes
22 : * - Reworked coding style
23 : */
24 : #ifndef ZEPHYR_INCLUDE_SYS_BASE64_H_
25 : #define ZEPHYR_INCLUDE_SYS_BASE64_H_
26 :
27 : #include <stddef.h>
28 : #include <zephyr/types.h>
29 :
30 : #ifdef __cplusplus
31 : extern "C" {
32 : #endif
33 :
34 : /**
35 : * @file
36 : *
37 : * @defgroup base64 Base64
38 : * @brief Base64 encoding/decoding functions
39 : * @ingroup utilities
40 : * @{
41 : */
42 :
43 : /**
44 : * @brief Encode a buffer into base64 format
45 : *
46 : * @param dst destination buffer
47 : * @param dlen size of the destination buffer
48 : * @param olen number of bytes written
49 : * @param src source buffer
50 : * @param slen amount of data to be encoded
51 : *
52 : * @return 0 if successful, or -ENOMEM if the buffer is too small.
53 : * *olen is always updated to reflect the amount
54 : * of data that has (or would have) been written.
55 : * If that length cannot be represented, then no data is
56 : * written to the buffer and *olen is set to the maximum
57 : * length representable as a size_t.
58 : *
59 : * @note Call this function with dlen = 0 to obtain the
60 : * required buffer size in *olen
61 : */
62 1 : int base64_encode(uint8_t *dst, size_t dlen, size_t *olen, const uint8_t *src,
63 : size_t slen);
64 :
65 : /**
66 : * @brief Decode a base64-formatted buffer
67 : *
68 : * @param dst destination buffer (can be NULL for checking size)
69 : * @param dlen size of the destination buffer
70 : * @param olen number of bytes written
71 : * @param src source buffer
72 : * @param slen amount of data to be decoded
73 : *
74 : * @return 0 if successful, -ENOMEM, or -EINVAL if the input data is
75 : * not correct. *olen is always updated to reflect the amount
76 : * of data that has (or would have) been written.
77 : *
78 : * @note Call this function with *dst = NULL or dlen = 0 to obtain
79 : * the required buffer size in *olen
80 : */
81 1 : int base64_decode(uint8_t *dst, size_t dlen, size_t *olen, const uint8_t *src,
82 : size_t slen);
83 :
84 : /**
85 : * @}
86 : */
87 :
88 : #ifdef __cplusplus
89 : }
90 : #endif
91 :
92 : #endif /* ZEPHYR_INCLUDE_SYS_BASE64_H_ */
|