Botan:现代 C++ 的加密和 TLS 库
Botan(日语中牡丹花的意思)是一个以宽松的简化版 BSD <https://botan.randombit.net/license.txt>
_许可证发布的 C++ 加密库。
Botan 的目标是成为 C++ 中最佳的加密选择,提供实现各种实用系统所需的工具,如 TLS 协议、X.509 证书、现代 AEAD 密码、PKCS#11 和 TPM 硬件支持、密码哈希以及后量子加密方案。库中包含一个 Python 绑定,还有其他几种语言绑定 <https://github.com/randombit/botan/wiki/Language-Bindings>
可用。该库还附带了一个功能丰富的命令行界面 <https://botan.randombit.net/handbook/cli.html>
。
有关包含功能的更多信息,请参阅文档 <https://botan.randombit.net/handbook>
_。
开发工作在 GitHub <https://github.com/randombit/botan>
__ 上协调,欢迎贡献。如果您需要帮助,请在 GitHub <https://github.com/randombit/botan/issues>
__ 上开启一个 issue。
如果您认为发现了安全问题,请查看安全页面 <https://botan.randombit.net/security.html>
_获取联系信息。
|ci_status| |nightly_ci_status| |coverage| |ossfuzz| |repo| |ossf| |cii|
.. |ci_status| image:: https://github.com/randombit/botan/actions/workflows/ci.yml/badge.svg?branch=master :target: https://github.com/randombit/botan/actions/workflows/ci.yml :alt: CI 状态
.. |nightly_ci_status| image:: https://github.com/randombit/botan/actions/workflows/nightly.yml/badge.svg?branch=master :target: https://github.com/randombit/botan/actions/workflows/nightly.yml :alt: 每晚 CI 状态
.. |coverage| image:: https://img.shields.io/coverallsCoverage/github/randombit/botan?branch=master :target: https://coveralls.io/github/randombit/botan :alt: 覆盖率报告
.. |ossfuzz| image:: https://oss-fuzz-build-logs.storage.googleapis.com/badges/botan.svg :target: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_botan/latest :alt: OSS-Fuzz 状态
.. |repo| image:: https://repology.org/badge/tiny-repos/botan.svg :target: https://repology.org/project/botan/versions :alt: 打包状态
.. |ossf| image:: https://api.securityscorecards.dev/projects/github.com/randombit/botan/badge :target: https://securityscorecards.dev/viewer/?uri=github.com/randombit/botan :alt: OSSF 评分卡
.. |cii| image:: https://bestpractices.coreinfrastructure.org/projects/531/badge :target: https://bestpractices.coreinfrastructure.org/projects/531 :alt: CII 最佳实践声明
发布 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Botan3 发布系列的最新版本是
3.5.0 <https://botan.randombit.net/releases/Botan-3.5.0.tar.xz>
_
(签名) <https://botan.randombit.net/releases/Botan-3.5.0.tar.xz.asc>
__,
发布于 2024-07-08。
Botan2 发布系列的最新版本是
2.19.5 <https://botan.randombit.net/releases/Botan-2.19.5.tar.xz>
_
(签名) <https://botan.randombit.net/releases/Botan-2.19.5.tar.xz.asc>
__,
发布于 2024-07-08。请注意,Botan2 目前计划在 2024 年底结束生命周期。
所有发布版本都使用 PGP 密钥 <https://botan.randombit.net/pgpkey.txt>
_ 签名。
查看发布说明 <https://botan.randombit.net/news.html>
了解新功能。Botan 也可以通过大多数
发行版 <https://github.com/randombit/botan/wiki/Distros>
获得,如 Fedora、Debian、Arch 和 Homebrew。
包含内容 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
传输层安全 (TLS) 协议
- TLS v1.2/v1.3 和 DTLS v1.2
- 支持的扩展包括会话票据、SNI、ALPN、OCSP 装订、先加密后 MAC 的 CBC 和扩展主密钥
- 支持使用证书或预共享密钥 (PSK) 进行身份验证
- 支持使用现代 AEAD 模式以及传统 CBC 密码套件进行记录加密
- TLS 1.3 支持使用 Kyber 和 FrodoKEM 进行后量子密钥交换
公钥基础设施
- X.509v3 证书和 CRL 创建与处理
- PKIX 证书路径验证,包括名称约束
- OCSP 请求创建和响应处理
- PKCS #10 证书请求生成和处理
- 访问 Windows、macOS 和 Unix 系统证书存储
- SQL 数据库支持的证书存储
公钥加密
- RSA 签名和加密
- DH 和 ECDH 密钥协商
- 签名方案 ECDSA、DSA、Ed25519、Ed448、ECGDSA、ECKCDSA、SM2、GOST 34.10
- 后量子签名方案 Dilithium、HSS/LMS、SPHINCS+、XMSS
- 后量子密钥协商方案 McEliece、Kyber 和 FrodoKEM
- ElGamal 加密
- 填充方案 OAEP、PSS、PKCS #1 v1.5、X9.31
密码、哈希、MAC 和校验和
- 认证加密模式 EAX、OCB、GCM、SIV、CCM、(X)ChaCha20Poly1305
- 密码模式 CTR、CBC、XTS、CFB、OFB
- 分组密码 AES、ARIA、Blowfish、Camellia、CAST-128、DES/3DES、IDEA、 Lion、SEED、Serpent、SHACAL2、SM4、Threefish-512、Twofish
- 流密码 (X)ChaCha20、(X)Salsa20、SHAKE-128、RC4
- 哈希函数 SHA-1、SHA-2、SHA-3、MD5、RIPEMD-160、BLAKE2b/BLAKE2s、 Skein-512、SM3、Streebog、Whirlpool
- 密码哈希方案 PBKDF2、Argon2、Scrypt、bcrypt
- 认证码 HMAC、CMAC、Poly1305、KMAC、SipHash、GMAC、X9.19 DES-MAC
- 非加密校验和 Adler32、CRC24、CRC32
其他有用功能
- 完整的 C++ PKCS #11 API 包装器
- TPM v1.2 设备访问接口
- 简单的压缩 API,包装 zlib、bzip2 和 lzma 库
- 系统 RNG 和硬件 RNG 的 RNG 包装器
- 用户空间 RNG 的 HMAC_DRBG 和熵收集系统
- SRP-6a 密码认证密钥交换
- 密钥派生函数,包括 HKDF、KDF2、SP 800-108、SP 800-56A、SP 800-56C
- HOTP 和 TOTP 算法
- FE1 格式保留加密方案
- 门限秘密共享
- Roughtime 客户端
- 与 Zfec 兼容的前向纠错编码
- 编码方案,包括 hex、base32、base64 和 base58
- NIST 密钥包装
- 支持 Boost.Asio 的 TLS 客户端流