API参考
载入中...
搜索中...
未找到
bsl_base64_internal.h
1
/*
2
* This file is part of the openHiTLS project.
3
*
4
* openHiTLS is licensed under the Mulan PSL v2.
5
* You can use this software according to the terms and conditions of the Mulan PSL v2.
6
* You may obtain a copy of Mulan PSL v2 at:
7
*
8
* http://license.coscl.org.cn/MulanPSL2
9
*
10
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
11
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
12
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
13
* See the Mulan PSL v2 for more details.
14
*/
15
16
#ifndef BSL_BASE64_INTERNAL_H
17
#define BSL_BASE64_INTERNAL_H
18
19
#include "hitls_build.h"
20
#ifdef HITLS_BSL_BASE64
21
22
#include "bsl_base64.h"
23
24
#ifdef __cplusplus
25
extern
"C"
{
26
#endif
27
28
struct
BASE64_ControlBlock {
29
/* size of the unencoded block in the current buffer */
30
uint32_t num;
31
/*
32
* Size of the block for internal encoding and decoding.
33
* The size of the coding block is set to 48, and the size of the decoding block is set to 64.
34
*/
35
uint32_t length;
36
/* see BSL_BASE64_FLAGS*, for example: BSL_BASE64_FLAGS_NO_NEWLINE, means process without '\n' */
37
uint32_t flags;
38
uint32_t paddingCnt;
39
/* codec buffer */
40
uint8_t buf[HITLS_BASE64_CTX_BUF_LENGTH];
41
};
42
43
#define BASE64_ENCODE_BYTES 3
// encode 3 bytes at a time
44
#define BASE64_DECODE_BYTES 4
// decode 4 bytes at a time
45
#define BASE64_BLOCK_SIZE 1024
46
#define BASE64_PAD_MAX 2
47
#define BASE64_DECODE_BLOCKSIZE 64
48
#define BASE64_CTX_BUF_SIZE HITLS_BASE64_ENCODE_LENGTH(BASE64_BLOCK_SIZE) + 10
49
#define BSL_BASE64_ENC_ENOUGH_LEN(len) (((len) + 2) / 3 * 4 + 1)
50
#define BSL_BASE64_DEC_ENOUGH_LEN(len) (((len) + 3) / 4 * 3)
51
60
int32_t BSL_Base64GetNum(BSL_Base64Ctx *ctx, uint32_t *num);
61
62
#ifdef __cplusplus
63
}
64
#endif
/* __cplusplus */
65
#endif
/* HITLS_BSL_BASE64 */
66
#endif
/* conditional include */
bsl
base64
include
bsl_base64_internal.h
制作者
1.15.0