6da27731b5180b3e4fe732b27eb605b720421230
- tls_handshake12.c: 完整 TLS 1.2 client/server 状态机(ECDHE-RSA/ECDSA/RSA AES-GCM + CHACHA20-POLY1305),支持 1.3 收到 1.2 ServerHello/ClientHello 后回退 - tls_record.c: 修正 TLS 1.2 AEAD-GCM 两处 RFC 偏差: AAD length 字段应为明文长度 ctlen(RFC 5246 6.2.3.3)原为 ct+16; GCMNonce = fixed_iv(4) || explicit_nonce(8)(RFC 5288 3)原顺序相反 - tls_handshake13.c: CV/Finished transcript 处理、1.3 套件记录版本修正、链式证书构造 - x509.c: AttributeTypeAndValue 补 SEQUENCE; validity 2050 年前用 UTCTime - apps/pazessl: s_client/s_server 增加 -tls1_2 - 新增 build.ps1、build/run_tls_test.ps1、build/run_openssl_interop.ps1 验证: 自测 4/4(1.2/1.3 双向 + 回退); OpenSSL 互操作 4/4(s_client/s_server 双向 1.2/1.3)
PazeSSL / PazeSSH
从零开始、仅依赖 libc 的 OpenSSL / OpenSSH 平替,纯 C 实现。
- PazeSSL —— TLS 1.2 / 1.3 协议栈 + 密码学原语库(替代 libcrypto + libssl)
- PazeSSH —— SSH-2 协议栈(替代 OpenSSH 客户端 / 守护端)
设计目标
- 零第三方依赖:不调用 OpenSSL、libsodium、GMP、mbedTLS……所有密码学算法自实现,仅用 ISO C17 libc + 平台系统调用获取熵。
- 单一可移植内核:加密原语跨 Windows / Linux / macOS 编译;平台相关代码仅限熵源与套接字。
- 结构清晰:
src/crypto原语层 →src/ssl/src/ssh协议层 →apps命令行。 - 常量时间 / 无密钥相关分支:密码学核心路径遵循抗时序攻击准则。
目录结构
include/paze/ 公共头文件
src/crypto/ 哈希/HMAC/AES/ChaCha20/Poly1305/AEAD/X25519/Ed25519/bignum/RSA/P-256/KDF/编码/ASN.1/X.509
src/ssl/ TLS 1.2 + 1.3 record/handshake/客户端/服务端
src/ssh/ SSH-2 transport/kex/auth/channel/客户端/守护端
src/util/ 内存/字节序/错误/日志
apps/pazessl/ 类 openssl 命令行
apps/ssh/ ssh 客户端
apps/sshd/ sshd 守护端
tests/ 已知答案(KAT)与协议自测
构建
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
仅需要支持 C17 的编译器与 libc。
状态
工程量巨大,按层推进。当前完成度见 STATUS.md。