项目简介
本项目是一个经过优化的C语言库,主要用于在secp256k1曲线上进行ECDSA签名、验证以及秘密/公钥操作。虽主要为比特币系统开发,但具有广泛适用性,致力于成为公开可用的高质量加密操作库。
项目的主要特性和功能
- 核心功能:支持secp256k1 ECDSA签名、验证和密钥生成。
- 密钥操作:可对秘密/公钥进行加法和乘法调整。
- 数据处理:能对秘密密钥、公钥、签名进行序列化和解析。
- 安全特性:采用常量时间、常量内存访问进行签名和公钥生成,实现去随机化ECDSA。
- 性能优势:实现高效,适合嵌入式系统。
- 可选模块:包含公钥恢复、ECDH密钥交换以及根据BIP - 340的Schnorr签名(实验性)。
安装使用步骤
编译安装
libsecp256k1使用autotools进行构建,按以下步骤操作:
bash
$ ./autogen.sh
$ ./configure
$ make
$ make check # 运行测试套件
$ sudo make install # 可选
测试覆盖
若要创建测试覆盖报告,需使用GCC并按以下步骤操作:
bash
$ ./configure --enable-coverage
$ make check
推荐使用gcovr
生成报告,它包含分支覆盖报告:
bash
$ gcovr --exclude 'src/bench*' --print-summary
若要创建带有彩色和注释源代码的HTML报告:
bash
$ mkdir -p coverage
$ gcovr --exclude 'src/bench*' --html --html-details -o coverage/coverage.html
基准测试
如果配置时使用--enable-benchmark
(默认配置),构建后根目录将有用于基准测试libsecp256k1函数的二进制文件。
打印基准测试结果到命令行:
bash
$ ./bench_name
创建基准测试结果的CSV文件:
bash
$ ./bench_name | sed '2d;s/ \{1,\}//g' > bench_name.csv
漏洞报告
有关漏洞报告请参阅SECURITY.md。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】