文件
JGZYES 3e8a5442fa 实现 TLS 1.3 PSK 会话恢复,构建输出移至 bin/ 并新增 standalone/psftp 命令
TLS 1.3 PSK 会话恢复: NewSessionTicket 签发/解析、ticket+binder 校验、selected_identity 回选、恢复握手免证书(pazessl -sess_in/-sess_out 端到端验证); 构建脚本输出 bin/ 并支持独立命令与 psftp; 修复 SFTP 二进制传输与 copy_id -P; 补充 tests/ 调试与 verify_tls
2026-08-13 19:30:07 +08:00

32 行
1.2 KiB
C

/* dbg_ecdsa.c —— ECDSA sign/verify 单元定位 */
#include "paze/ecdsa.h"
#include "paze/bignum.h"
#include <stdio.h>
#include <string.h>
int main(void) {
paze_ecdsa_priv_t priv;
/* 用 gen 得到随机 d */
if (paze_ecdsa_gen(&priv) != PAZE_OK) { printf("gen failed\n"); return 1; }
paze_ecdsa_pub_t pub;
paze_ecdsa_pub_from_priv(&pub, priv.d);
uint8_t msg[32];
memset(msg, 0x42, 32);
uint8_t sig[128]; size_t siglen = sizeof(sig);
paze_status_t st = paze_ecdsa_sign(&priv, PAZE_RSA_HASH_SHA256, msg, 32, sig, &siglen);
printf("sign st=%d siglen=%zu\n", st, siglen);
printf("sig hex: "); for (size_t i = 0; i < siglen; i++) printf("%02x", sig[i]); printf("\n");
if (st != PAZE_OK) return 1;
paze_bn_t r, s;
st = paze_ecdsa_sig_from_der(&r, &s, sig, siglen);
printf("sig_from_der st=%d\n", st);
st = paze_ecdsa_verify(&pub, PAZE_RSA_HASH_SHA256, msg, 32, sig, siglen);
printf("verify st=%d (0=OK)\n", st);
/* 篡改消息应失败 */
msg[0] ^= 1;
st = paze_ecdsa_verify(&pub, PAZE_RSA_HASH_SHA256, msg, 32, sig, siglen);
printf("verify tampered st=%d (期望非0)\n", st);
return 0;
}