# test_ed25519 **Repository Path**: inno-chip-lab/test_ed25519 ## Basic Information - **Project Name**: test_ed25519 - **Description**: 验证ed25519 非对称加密算法的工程,使用国民技术N32 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-18 - **Last Updated**: 2026-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ed25519 生成与嵌入式验签 ## 1. Python 侧:生成密钥、签名与打包输出 脚本位置:`test/ed25519_tool.py` 安装依赖: ```bash py -m pip install cryptography ``` 在项目根目录执行(推荐): ```bash cd d:\加密测试\tlv_n32 py test/ed25519_tool.py gen --out-dir test/out --message "i am alive" ``` 输出目录 `test/out/` 内会生成: - `public_key.raw` / `private_key.raw`(32字节原始key) - `signature.bin` / `signature.hex`(64字节签名) - `bundle.txt`(方便拷贝到C代码) `bundle.txt` 格式示例: ``` PUBLIC_KEY_RAW_HEX=... PRIVATE_KEY_RAW_HEX=... MESSAGE_HEX=... MESSAGE_UTF8=... (可选) SIGNATURE_HEX=... ``` 注意:嵌入式验签只需要 `PUBLIC_KEY_RAW_HEX`、`MESSAGE_HEX`、`SIGNATURE_HEX`。私钥不要放到单片机里。 ## 2. 嵌入式侧:粘贴到C数组并验签 需要替换的数组位置: - `app/main.c` 中的 [main.c:L63-L74](file:///d:/%E5%8A%A0%E5%AF%86%E6%B5%8B%E8%AF%95/tlv_n32/app/main.c#L63-L74) 拷贝规则: - `PUBLIC_KEY_RAW_HEX`(64个hex字符)→ `uint8_t public_key[32] = {...};` - `SIGNATURE_HEX`(128个hex字符)→ `uint8_t signature[64] = {...};` - `MESSAGE_HEX`(长度不固定)→ `uint8_t message[N] = {...};`,并把 `message_len` 传 `sizeof(message)` 把 HEX 转成 C 数组的方式: - 每两个hex字符为一个字节,例如 `69 20 61 ...` - 写成 `0x69, 0x20, 0x61, ...` 示例(MESSAGE_UTF8 为 `i am alive`): ```c uint8_t message[10] = {0x69, 0x20, 0x61, 0x6D, 0x20, 0x61, 0x6C, 0x69, 0x76, 0x65}; ``` 验签调用示例: ```c ed25519_verify(signature, public_key, message, sizeof(message)); ```