/**
 * @file base64_codec.h
 * @brief Base64 编解码工具 (RFC 4648)
 */

#ifndef __BASE64_CODEC_H__
#define __BASE64_CODEC_H__

#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 标准 RFC 4648 base64 编码
 *
 * out 至少需要 ((in_len + 2) / 3) * 4 + 1 字节空间。
 *
 * @return 写入字符数（不含 '\0'）；<0 表示缓冲不足
 */
int base64_codec_encode(const uint8_t *in, size_t in_len,
                        char *out, size_t out_cap);

/**
 * @brief 标准 RFC 4648 base64 解码
 *
 * 要求 in_len 为 4 的倍数；允许末尾 '=' 填充。
 * out 至少需要 (in_len/4)*3 字节空间。
 *
 * @return 写入字节数；<0 表示输入非法或缓冲不足
 */
int base64_codec_decode(const char *in, size_t in_len,
                        uint8_t *out, size_t out_cap);

#ifdef __cplusplus
}
#endif

#endif /* __BASE64_CODEC_H__ */
