项目简介
libecc 是一个用于实现椭圆曲线密码学(Elliptic Curve Cryptography, ECC)的开源库。它支持多种椭圆曲线和哈希函数,提供多种签名算法(如ECDSA、ECKCDSA等)。以代码可读性和可移植性为核心设计目标,适用于嵌入式系统和资源受限的环境,其核心代码不依赖外部库,甚至不依赖标准C库,保证了在不同平台上的可移植性。
项目的主要特性和功能
- 支持多种签名算法:包括ECDSA、ECKCDSA、ECGDSA、ECRDSA、ECOSDSA、ECFSDSA。
- 支持众多椭圆曲线:如SECP224R1、SECP256R1、SECP384R1等多种曲线。
- 支持多种哈希函数:涵盖SHA - 2(224、256、384、512)和SHA - 3(224、256、384、512)。
- 无外部依赖:不依赖任何外部库,可在不同平台上移植。
- 可扩展性:能通过脚本轻松添加自定义椭圆曲线,支持扩展新的哈希函数和签名算法。
- 性能与内存优化:在大多数平台表现良好,内存占用低,适合嵌入式设备。
- 盲签名支持:启用盲签名技术,可抵御侧信道攻击。
安装使用步骤
假设用户已经下载了本项目的源码文件,以下是编译和使用的步骤:
1. 编译静态库和自测试程序
在项目根目录下执行命令:
bash
$ make
编译完成后,生成的静态库和二进制文件将存放在 build/
目录下。
2. 运行自测试程序
编译完成后,运行自测试程序验证库的功能:
bash
$ ./build/ec_self_tests
自测试程序将执行已知测试向量验证、随机签名/验证测试、性能测试。
3. 使用 ec_utils
工具
生成密钥对
bash
$ ./build/ec_utils gen_keys BRAINPOOLP512R1 ECKCDSA mykeypair
生成私钥和公钥文件,分别为 mykeypair_private_key.bin
和 mykeypair_public_key.bin
。
签名文件
bash
$ ./build/ec_utils sign BRAINPOOLP512R1 ECKCDSA SHA3_512 myfile mykeypair_private_key.bin sig.bin
使用私钥对文件 myfile
签名,结果保存到 sig.bin
中。
验证签名
bash
$ ./build/ec_utils verify BRAINPOOLP512R1 ECKCDSA SHA3_512 myfile mykeypair_public_key.bin sig.bin
使用公钥验证文件签名并输出结果。
4. 编译用户示例
bash
$ cd src/examples
$ make
编译完成后,在 src/examples/
目录下找到生成的示例程序。
5. 配置库
修改 src/lib_ecc_config.h
文件配置库的功能,可启用或禁用特定的曲线、哈希函数和签名算法。例如,禁用FRP256V1曲线:
c
/* #define WITH_CURVE_FRP256V1 */
6. 扩展库
使用以下命令添加新的曲线:
bash
$ python scripts/expand_libecc.py --name="mynewcurve" --ECfile=brainpoolP320r1.der --add-test-vectors=1
生成新的曲线定义文件并添加到库中。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】