针对曲线 secp256k1 的 EC 运算优化的 C 库
libsecp256k1 ======================== 这是一款高性能、高可靠性的 C 库,用于在 secp256k1 椭圆曲线上进行数字签名和其他密码学原语。 该库旨在成为 secp256k1 椭圆曲线上公开可用的最高质量的密码学库。 然而,其开发的主要重点是用于 Bitcoin 系统,与 Bitcoin 不同的用法可能没有经过充分的测试、验证,或其接口设计不够完善。 正确使用该库需要注意和考虑它是否适合您应用程序的用途。
特性: * secp256k1 ECDSA 签名/验证和密钥生成。 * 秘密/公开密钥的加法和乘法调整。 * 秘密密钥、公开密钥和签名的序列化/解析。 * 常数时间、常数内存访问的签名和公开密钥生成。 * 衍生化 ECDSA (通过 RFC6979 或通过调用方提供的函数)。 * 非常高效的实现。 * 适用于嵌入式系统。 * 没有运行时依赖。 * 可选模块,用于公开密钥恢复。 * 可选模块,用于 ECDH 密钥交换。 * 可选模块,用于根据 BIP-340 实现 Schnorr 签名。 * 可选模块,用于根据 BIP-324 实现 ElligatorSwift 密钥交换。 * 可选模块,用于根据 BIP-327 实现 MuSig2 Schnorr 多签名。 * 可选模块,用于根据 BIP-352 实现 Silent Payments 发送和接收。
实现细节 ------------------------ * 一般 * 无运行时堆分配。 * 广泛的测试基础设施。 * 结构化,以便于审查和分析。 * 旨在能够移植到任何具有 C89 编译器和 uint64_t 支持的系统。 * 不使用浮点类型。 * 仅暴露高级接口,以尽量减少 API 面积并提高应用程序安全性(“难以不安全地使用”)。 * 字段操作 * 优化了对曲线字段大小(2^256 - 0x1000)的算术运算。
暂无开放 Issues,或尚未同步最近议题。