littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于C语言的secp256k1椭圆曲线加密库

项目简介

本项目是一个经过优化的C语言库,主要用于在secp256k1曲线上进行ECDSA签名、验证以及秘密/公钥操作。虽主要为比特币系统开发,但具有广泛适用性,致力于成为公开可用的高质量加密操作库。

项目的主要特性和功能

  1. 核心功能:支持secp256k1 ECDSA签名、验证和密钥生成。
  2. 密钥操作:可对秘密/公钥进行加法和乘法调整。
  3. 数据处理:能对秘密密钥、公钥、签名进行序列化和解析。
  4. 安全特性:采用常量时间、常量内存访问进行签名和公钥生成,实现去随机化ECDSA。
  5. 性能优势:实现高效,适合嵌入式系统。
  6. 可选模块:包含公钥恢复、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】