25#define HITLS_BASE64_CTX_BUF_LENGTH 80
26#define HITLS_BASE64_CTX_LENGTH 48
29#define HITLS_BASE64_ENCODE_LENGTH(len) \
30 ((((len) + 2) / 3 * 4) + ((len) / HITLS_BASE64_CTX_LENGTH + 1) * 2 + HITLS_BASE64_CTX_BUF_LENGTH)
31#define HITLS_BASE64_DECODE_LENGTH(len) (((len) + 3) / 4 * 3 + HITLS_BASE64_CTX_BUF_LENGTH)
37#define BSL_BASE64_FLAGS_NO_NEWLINE 0x01
39typedef struct BASE64_ControlBlock BSL_Base64Ctx;
54int32_t BSL_BASE64_Encode(
const uint8_t *srcBuf,
const uint32_t srcBufLen,
char *dstBuf, uint32_t *dstBufLen);
68int32_t BSL_BASE64_Decode(
const char *srcBuf,
const uint32_t srcBufLen, uint8_t *dstBuf, uint32_t *dstBufLen);
77BSL_Base64Ctx *BSL_BASE64_CtxNew(
void);
86void BSL_BASE64_CtxFree(BSL_Base64Ctx *ctx);
95void BSL_BASE64_CtxClear(BSL_Base64Ctx *ctx);
104int32_t BSL_BASE64_EncodeInit(BSL_Base64Ctx *ctx);
118int32_t BSL_BASE64_EncodeUpdate(BSL_Base64Ctx *ctx,
const uint8_t *srcBuf, uint32_t srcBufLen,
119 char *dstBuf, uint32_t *dstBufLen);
129int32_t BSL_BASE64_EncodeFinal(BSL_Base64Ctx *ctx,
char *dstBuf, uint32_t *dstBufLen);
138int32_t BSL_BASE64_DecodeInit(BSL_Base64Ctx *ctx);
151int32_t BSL_BASE64_DecodeUpdate(BSL_Base64Ctx *ctx,
const char *srcBuf,
const uint32_t srcBufLen,
152 uint8_t *dstBuf, uint32_t *dstBufLen);
162int32_t BSL_BASE64_DecodeFinal(BSL_Base64Ctx *ctx, uint8_t *dstBuf, uint32_t *dstBufLen);
172int32_t BSL_BASE64_SetFlags(BSL_Base64Ctx *ctx, uint32_t flags);