- 源代码名称:botan
- 源代码网址:http://www.github.com/randombit/botan
- botan源代码文档
- botan源代码下载
- Git URL:
复制代码
git://www.github.com/randombit/botan.git
- Git Clone代码到本地:
复制代码
git clone http://www.github.com/randombit/botan
- Subversion代码到本地:
复制代码
$ svn co --depth empty http://www.github.com/randombit/botan Checked out revision 1. $ cd repo $ svn up trunk
Botan: C++11的加密和 TLS
Botan ( 日本牡丹) 是用C++11编写的加密库,并在许可简化的BSD 许可证下发布。
botan goal提供实现一系列实用系统( 如 tls/dtls,PKIX证书处理,PKCS#11和TPM硬件支持,密码哈希和post密码方案)的工具,成为新 C++ 代码的最佳选择。 除了 C++,botan还有专门设计的C89 API,它可以很容易地从其他语言调用。 使用ctypes调用 C89 API的python 绑定包括。
查找下面的完整功能列表。
开发是在 GitHub上协调的,并且欢迎提供。
如果你需要帮助,请在GitHub上打开一个问题,或者给botan开发邮件列表。
新版发布在 botan公告邮件列表中宣布。
如果你认为你在Botan中找到了一个安全 Bug,请通过电子邮件发送 jack@randombit.net 联系 Jack。 可以在发行版 distribution https://keybase.io/jacklloyd 插件和某些 public PGP密钥服务器中找到带有指纹 4E60 C73551AF2188DF0A5A6278E9804357123B60的public 密钥。
对于构建库的所有细节,请阅读用户手册,但基本上:
复制代码
$./configure.py --help $./configure.py [probably some options] $ make $./botan-test # lots of output... Tests all ok $./botan # shows available commands $ make install
Botan还可以构建为单个文件合并,以便容易包含到外部构建系统中,见手册。
转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消转存失败重新上传取消
下载下载
所有版本均使用 PGP密钥签名:
复制代码
pub 2048R/EFBADFBC 2004-10-30 Key fingerprint = 621D AF64 11E1 851C 4CF9 A2E1 6211 EBF1 EFBA DFBC uid Botan Distribution Key
一些发行版,例如for和Debian包含了Botan的包。 然而,这些通常是过时的;建议使用最新的源版本。
电流稳定释放
版本 2需要一个C++11编译器;GCC 4.8和更高版本,Clang 3.5和更高版本,以及 MSVC 2015.
最新的2.x 版本是年on发布的版
老的稳定版本
1.10分支是用C++98编写的库的最后一个版本,仍然是最常用的打包版本。 它不再受支持,除了关键安全更新( 所有支持均以 2018 -1 -1结束) 之外,开发者不再推荐使用它。
最新版本的版本是年2017-10-02发布的
Find
传输层安全性协议
- TLS v1.0,v1.1和 v1.2. 不再支持中断的SSLv3协议。
- DTLS v1.0和v1.2是对数据报操作的修改。
- 扩展包括会话票证。SNI。ALPN。OCSP staple请求( 客户端目前仅有)。encrypt-then-mac CBC和扩展主密钥。
- 支持使用预先共享密钥( PSK ) 或者密码进行身份验证( SRP )
- 使用 ChaCha20Poly1305,AES/OCB,AES/gcm,AES/ccm,3/gcm,/gcm和传统 CBC cipherSuites,/SEED,/。
- 使用 diffie hellman,ECDH,RSA或者CECPQ1进行密钥交换
public-密钥基础结构
- X.509v3 证书和CRL创建和处理
- PKIX证书路径验证,包括 NAME 约束。
- OCSP请求创建和响应处理
- PKCS #10 证书申请生成和处理
- SQL数据库备份的证书存储库
public-密钥加密
- RSA签名和加密
- DH和ECDH密钥协议
- 签名方案 ECDSA,DSA,Ed25519,ECGDSA,ECKCDSA,SM2和 GOST 34.10 -2001
- post量子签名方案 XMSS
- post量子密钥协议McEliece和 NewHope
- ElGamal加密
- 填充方案 OAEP,PSS,PKCS #1 v1.5,X9.31
密码,哈希,mac和校验和
- 认证密码模式 EAX。OCB。GCM。SIV。CCM和 ChaCha20Poly1305
- 密码模式 CTR。CBC。dmoz。CFB和 OFB
- 方块式密码,ARIA,Blowfish,Camellia,CAST-128,CAST-256,des,IDEA,IDEA,IDEA,IDEA,XTEA,SM4,Threefish-512,,,
- 流密码 ChaCha20,salsa20/xsalsa20,SHAKE-128和 RC4
- 哈希函数 SHA-1,SHA-2,SHA-3,RIPEMD-160,Skein-512,BLAKE2b,Tiger,漩涡,GOST 34.11,MD5,MD4
- Hash函数组合并行和 Comb4P
- 认证码 HMAC,CMAC,Poly1305,SipHash,cbc mac,X9.19 des mac
- 非加密校验和 Adler32,CRC24和 CRC32
其他有用的东西
- 完整 C++ PKCS #11 API包装器
- TPM v1.2设备访问接口
- 简单压缩API包装 zlib。bzip2和lzma库
- RNG封装系统RNG和硬件 RNGs
- 面向用户空间RNGs的HMAC_DRBG和熵
- 基于PBKDF2密码的密钥派生
- 密码哈希函数bcrypt和 passhash9 ( 自定义PBKDF方案)
- SRP-6a密码认证密钥交换
- 关键推导函数包括 HKDF,KDF2,SP 800 -108,SP 800 -56A,SP 800 -56C
- HOTP和TOTP算法
- 保留加密方案FE1格式
- 门限秘密共享
- RFC 3394 AES密钥包
推荐算法
- 用于网络通信的加密使用 TLS v1.2
- 数据包加密:aes-256/gcm,aes-256/OCB,snake/反间谍组织或者 ChaCha20Poly1305
- 常规哈希函数:BLAKE2b,SHA-2,SHA-3或者 Skein-512
- 消息身份验证或者 PRF: 带有SHA-256的HMAC
- 密钥派生函数:KDF2或者 HKDF
- public 密钥加密:RSA,2048 + 位密钥,带有 oaep/sha-256
- public 密钥签名:RSA,2048 + 位密钥,具有 GPFS/sha-512,或者使用 p-256/sha-256或者 p-521/sha-512
- 密钥协议:使用 P-256 或者X25519的ECDH。 如果你关心量子计算机,请将ECC与NewHope结合起来