littlebot
Published on 2025-04-10 / 4 Visits
0

【源码】基于C语言的secp256k1曲线密码学库

项目简介

本项目是优化后的C语言库libsecp256k1,用于在secp256k1曲线上开展ECDSA签名、秘密/公钥操作等密码学运算。目标是成为secp256k1曲线上最高质量的公开密码学库,虽最初为比特币系统开发,但也适用于其他类似场景。

项目的主要特性和功能

  1. 基础功能:支持secp256k1 ECDSA签名、验证与密钥生成,能对秘密/公钥进行加性和乘性调整,可对秘密密钥、公钥、签名进行序列化和解析。
  2. 性能优势:采用恒定时间和恒定内存访问进行签名和公钥生成,运算高效,适用于嵌入式系统。
  3. 随机化处理:支持通过RFC6979或调用者提供的函数进行去随机化ECDSA。
  4. 可选模块:提供公钥恢复、ECDH密钥交换、根据BIP - 340的Schnorr签名等可选模块。

安装使用步骤

编译安装

  1. 运行./autogen.sh脚本。
  2. 执行./configure进行配置,若编译可选模块,需添加额外标志,如--enable-module-schnorrsig,可运行./configure --help查看完整标志列表。
  3. 执行make进行编译。
  4. 运行make check执行测试套件。
  5. (可选)执行sudo make install进行安装。

使用示例

使用示例可在examples目录中找到,编译示例需使用--enable-examples进行配置: - ECDSA示例:examples/ecdsa.c - Schnorr签名示例:examples/schnorr.c,编译此示例还需配置--enable-module-schnorrsig。 - 推导共享密钥(ECDH)示例:examples/ecdh.c,编译此示例还需配置--enable-module-ecdh

测试覆盖

若要创建测试覆盖报告,需使用--enable-coverage进行配置(需使用GCC): 1. 执行./configure --enable-coverage。 2. 运行make check。 3. 推荐使用gcovr生成报告,可执行gcovr --exclude 'src/bench*' --print-summary。 4. 若要生成带有颜色和注释源代码的HTML报告,可执行mkdir -p coveragegcovr --exclude 'src/bench*' --html --html-details -o coverage/coverage.html

基准测试

若使用--enable-benchmark进行配置(默认开启),构建后根目录将存在用于对libsecp256k1函数进行基准测试的二进制文件: - 若要将基准测试结果打印到命令行,可执行./bench_name。 - 若要创建基准测试结果的CSV文件,可执行./bench_name | sed '2d;s/ \{1,\}//g' > bench_name.csv

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】