29 行
1.1 KiB
C
29 行
1.1 KiB
C
#ifndef PAZE_ENCODING_H
|
|
#define PAZE_ENCODING_H
|
|
#include "paze/paze_types.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ---- base64 ---- */
|
|
/* 编码:out 需至少 (n+2)/3*4 + 1 字节(含结尾 \0)。返回写入字节数(不含\0)。 */
|
|
size_t paze_base64_encode(const uint8_t *in, size_t n, char *out);
|
|
/* 解码:out 需至少 n*3/4 字节。返回写入字节数,出错返回 (size_t)-1。允许忽略 \n/\r/空格 */
|
|
size_t paze_base64_decode(const char *in, size_t n, uint8_t *out);
|
|
|
|
/* ---- hex ---- */
|
|
size_t paze_hex_encode(const uint8_t *in, size_t n, char *out /* 2n+1 */);
|
|
size_t paze_hex_decode(const char *in, size_t n, uint8_t *out /* n/2 */);
|
|
|
|
/* ---- PEM ---- */
|
|
/* 从 PEM 文本中抽取指定 label(如 "CERTIFICATE"/"PRIVATE KEY")的第一段。
|
|
* 返回 malloc 的 DER 字节(调用者负责 free),*out_len 为长度;找不到返回 NULL。 */
|
|
uint8_t *paze_pem_decode(const char *text, const char *label, size_t *out_len);
|
|
/* 编码为 PEM 文本,out 需足够大;每 64 字节换行。返回写入字符数(不含结尾\0)。 */
|
|
size_t paze_pem_encode(const char *label, const uint8_t *der, size_t n, char *out);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|