[Botan-announce] Botan 2.0.0 released

Jack Lloyd jack at randombit.net
Fri Jan 6 22:34:54 EST 2017


I'm pleased to announce the release of Botan 2.0.0. This release introduces use
of semantic versioning, discarding the old branch versioning scheme. If code
works against 2.0.0, it should also work against any future release with major
version 2.

https://botan.randombit.net/releases/Botan-2.0.0.tgz
https://botan.randombit.net/releases/Botan-2.0.0.tgz.asc
SHA-256 031659cca0f80869e9d97a20917edbe2164cedbc079e8c53e0e7bd9bea15371a

I strongly encourage all users to upgrade to 2.x as soon as possible. Botan 2
will be supported until at least 2020-12-31, and we anticipate new feature
development will continue in ongoing 2.x releases for some time to come.

This officially concludes the 1.11 development branch - there will not be any
further 1.11 releases. Compared to 1.11.34, there are some bugs fixed and a few
final API warts dealt with before stabilization, nothing exciting. Check the
release notes for details.

Compared to 1.10 the changes are huge, and hitting only the really big stuff:

* New TLS stack supporting async networking, adding TLS v1.2, DLTS, AEAD ciphers
  (GCM, CCM, OCB and ChaChaPoly1305), ECC (including x25519), CECPQ1, SRP6, PSK,
  ALPN, session tickets, session resumption, and much else. Drops SSLv3 and RC4.

* New X.509 certificate path validation code supporting name constraints, OCSP
  checks, hash strength checks, and better error reporting.

* Post-quantum cryptography: McEliece and NewHope key exchange, and XMSS signatures.

* Added support for using PKCS #11 and TPM cryptographic devices, including a
  nearly complete C++ wrapper for the PKCS #11 API.

* New interface for authenticated encryption, supporting GCM, OCB, SIV, CCM, and
  ChaCha20Poly1305 modes

* New algorithms Threefish-512, ChaCha20, X25519, Poly1305, BLAKE2b, SHA-3,
  HKDF, HMAC_DRBG, GMAC, SipHash, ECIES, ECKCDSA, and ECGDSA.

* Removed ECB mode, MD2, RC2, RC5, RC6, TEA, SAFER-SK, MARS, HAS-160,
  RIPEMD-128, X9.31 RNG, Rabin-Williams, and Nyberg-Rueppel.

* SQL certificate store (database pluggable, built in sqlite3 support)

* Removal of all global state and global locks. LibraryInitializer is a no-op

* Somewhat ok support for iOS, Android, and IncludeOS

Since 1.10 there have also been a lot of improvements that are not directly
feature related, in terms of overall product maturity. It has been 18 months now
since the conversion from self-hosted Monotone and Bugzilla to git and Github,
after the initial conversion pain things have gone well. Continuous integration
now builds and tests with 3 compiler families for 9 different OS/CPU platforms.
Test coverage is much improved, with 90% of the library covered by the main test
suite. This is also the first version to have had any kind of real third party
audit, and the first to be hit with serious fuzzer time.

There are many people who helped over the last 5 years with patches, bug reports,
ideas, and encouragement. Most especially I'd like to take this time to thank

* Simon Warta for convincing me to switch to git, setting up all 4 of the CI
  systems in use, fixing dozens of corner case problems that caused broken
  builds, and advocating for making this more than a hobby project.

* Falko Strenzke for arranging the relicensing of the HyMES McEliece code and
  contributing the side channel secured version.

* René Korthaus for leading a great team from Rohde & Schwarz Cybersecurity
  which have contributed improvements to testing, documentation, and side
  channel security as well as many of the new features mentioned above.

* Daniel Neus for the PKCS #11 code among other contributions, and for asking
  many good questions.

* Kai Michaelis for the SQL certificate store and X.509 name constraints.

* Juraj Somorovsky for his side channel review and testing, in addition to
  several tricky patches including the Lucky13 countermeasure.

* Matthias Gierlings for undertaking several hairy refactorings and being
  patient with my sometimes extended review turnarounds. (And for XMSS!)

* Google for running our fuzzers as part of OSS-Fuzz

Botan 2 is the first version that approaches what I set out to accomplish many
years ago, a complete toolkit for building secure systems that can be applied
across many problem domains. It's not perfect by any means, but the path ahead
looks quite promising and I look forward to seeing the progress 2017 will bring.

Best,
  Jack Lloyd


More information about the botan-announce mailing list