文件
PazeSSH/include/paze/encoding.h
T

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