• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H03-May-2022-8980

doc/H03-May-2022-21,13615,149

src/H03-May-2022-391,741284,287

.gitignoreH A D25-Oct-2021835 8773

.lgtm.ymlH A D25-Oct-20211.1 KiB3229

.travis.ymlH A D25-Oct-20211 KiB5141

configure.pyH A D03-May-2022131.7 KiB3,4552,581

news.rstH A D25-Oct-202175.4 KiB1,8801,250

readme.rstH A D25-Oct-20216 KiB136111

readme.rst

1Botan: Crypto and TLS for Modern C++
2========================================
3
4Botan (Japanese for peony flower) is a C++ cryptography library released under the
5permissive `Simplified BSD <https://botan.randombit.net/license.txt>`_ license.
6
7Botan's goal is to be the best option for cryptography in C++ by offering the
8tools necessary to implement a range of practical systems, such as TLS protocol,
9X.509 certificates, modern AEAD ciphers, PKCS#11 and TPM hardware support,
10password hashing, and post quantum crypto schemes. A Python binding is included,
11and several other `language bindings
12<https://github.com/randombit/botan/wiki/Language-Bindings>`_ are available.
13It is used in many `open source and commercial products <https://github.com/randombit/botan/wiki/Users>`_.
14The library is accompanied by a featureful
15`command line interface <https://botan.randombit.net/handbook/cli.html>`_.
16
17See the `documentation <https://botan.randombit.net/handbook>`_ for more
18information about included features.
19
20Development is coordinated on `GitHub <https://github.com/randombit/botan>`_
21and contributions are welcome. If you need help, please open an issue on
22`GitHub <https://github.com/randombit/botan/issues>`_ or email the
23`botan-devel mailing list <https://lists.randombit.net/mailman/listinfo/botan-devel/>`_.
24New releases are announced on the `botan-announce mailing list
25<https://lists.randombit.net/mailman/listinfo/botan-announce/>`_.
26If you think you have found a security issue, see the `security page
27<https://botan.randombit.net/security.html>`_ for contact information.
28
29The latest release is
30`2.18.2 <https://botan.randombit.net/releases/Botan-2.18.2.tar.xz>`_
31`(sig) <https://botan.randombit.net/releases/Botan-2.18.2.tar.xz.asc>`_,
32released on 2021-10-25.
33All releases are signed with a `PGP key <https://botan.randombit.net/pgpkey.txt>`_.
34See the `release notes <https://botan.randombit.net/news.html>`_ for
35what is new. Botan is also available through most
36`distributions <https://github.com/randombit/botan/wiki/Distros>`_
37such as Fedora, Debian, Arch and Homebrew.
38
39.. image:: https://api.travis-ci.com/randombit/botan.svg?branch=master
40    :target: https://travis-ci.com/github/randombit/botan
41    :alt: Travis CI status
42
43.. image:: https://ci.appveyor.com/api/projects/status/n9f94dljd03j2lce/branch/master?svg=true
44    :target: https://ci.appveyor.com/project/randombit/botan/branch/master
45    :alt: AppVeyor CI status
46
47.. image:: https://codecov.io/github/randombit/botan/coverage.svg?branch=master
48    :target: https://codecov.io/github/randombit/botan
49    :alt: Code coverage report
50
51.. image:: https://img.shields.io/lgtm/alerts/g/randombit/botan.svg
52    :target: https://lgtm.com/projects/g/randombit/botan/alerts/
53    :alt: LGTM alerts
54
55.. image:: https://oss-fuzz-build-logs.storage.googleapis.com/badges/botan.svg
56    :target: https://oss-fuzz.com/coverage-report/job/libfuzzer_asan_botan/latest
57    :alt: OSS-Fuzz status
58
59.. image:: https://scan.coverity.com/projects/624/badge.svg
60    :target: https://scan.coverity.com/projects/624
61    :alt: Coverity results
62
63.. image:: https://repology.org/badge/tiny-repos/botan.svg
64    :target: https://repology.org/project/botan/versions
65    :alt: Packaging status
66
67.. image:: https://bestpractices.coreinfrastructure.org/projects/531/badge
68    :target: https://bestpractices.coreinfrastructure.org/projects/531
69    :alt: CII Best Practices statement
70
71Find Enclosed
72^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
73
74Transport Layer Security (TLS) Protocol
75----------------------------------------
76
77* TLS v1.0, v1.1, and v1.2. The broken SSLv3 protocol is no longer supported.
78* DTLS v1.0 and v1.2 are adaptations of TLS to datagram operation.
79* Supported extensions include session tickets, SNI, ALPN, OCSP stapling,
80  encrypt-then-mac CBC, and extended master secret.
81* Supports authentication using preshared keys (PSK) or passwords (SRP)
82* Supports record encryption with ChaCha20Poly1305, AES/OCB, AES/GCM, AES/CCM,
83  Camellia/GCM as well as legacy CBC ciphersuites.
84* Key exchange using CECPQ1, ECDH, FFDHE, or RSA
85
86Public Key Infrastructure
87----------------------------------------
88
89* X.509v3 certificates and CRL creation and handling
90* PKIX certificate path validation, including name constraints.
91* OCSP request creation and response handling
92* PKCS #10 certificate request generation and processing
93* Access to Windows, macOS and Unix system certificate stores
94* SQL database backed certificate store
95
96Public Key Cryptography
97----------------------------------------
98
99* RSA signatures and encryption
100* DH and ECDH key agreement
101* Signature schemes ECDSA, DSA, Ed25519, ECGDSA, ECKCDSA, SM2, GOST 34.10
102* Post-quantum signature scheme XMSS
103* Post-quantum key agreement schemes McEliece and NewHope
104* ElGamal encryption
105* Padding schemes OAEP, PSS, PKCS #1 v1.5, X9.31
106
107Ciphers, hashes, MACs, and checksums
108----------------------------------------
109
110* Authenticated cipher modes EAX, OCB, GCM, SIV, CCM, (X)ChaCha20Poly1305
111* Cipher modes CTR, CBC, XTS, CFB, OFB
112* Block ciphers AES, ARIA, Blowfish, Camellia, CAST-128, DES/3DES, IDEA,
113  Lion, Noekeon, SEED, Serpent, SHACAL2, SM4, Threefish-512, Twofish
114* Stream ciphers (X)ChaCha20, (X)Salsa20, SHAKE-128, RC4
115* Hash functions SHA-1, SHA-2, SHA-3, MD4, MD5, RIPEMD-160, BLAKE2b,
116  Skein-512, SM3, Streebog, Whirlpool
117* Authentication codes HMAC, CMAC, Poly1305, SipHash, GMAC, X9.19 DES-MAC
118* Non-cryptographic checksums Adler32, CRC24, CRC32
119
120Other Useful Things
121----------------------------------------
122
123* Full C++ PKCS #11 API wrapper
124* Interfaces for TPM v1.2 device access
125* Simple compression API wrapping zlib, bzip2, and lzma libraries
126* RNG wrappers for system RNG and hardware RNGs
127* HMAC_DRBG and entropy collection system for userspace RNGs
128* Password hashing schemes PBKDF2, Argon2, Scrypt, bcrypt
129* SRP-6a password authenticated key exchange
130* Key derivation functions including HKDF, KDF2, SP 800-108, SP 800-56A, SP 800-56C
131* HOTP and TOTP algorithms
132* Format preserving encryption scheme FE1
133* Threshold secret sharing
134* NIST key wrapping
135* Boost.Asio compatible TLS client stream
136