Botan Cryptographic Library Release 3.0.0

The Botan 3.0.0 cryptographic library used by the NeoPG project, a fork of GnuPG 2, is now available. The library provides a large collection of out-of-the-box primitives used in the TLS protocol, X.509 certificates, AEAD ciphers, TPM modules, PKCS#11, password hashing, and post-quantum cryptography (hash-based signatures and McEliece-based key agreement). The library is written in C++ and is licensed under the BSD license.

Among the changes in the new release:

  • The codebase is allowed to use the C++20 standard (previously C++11 was used), respectively, the requirements for compilers have been increased - at least GCC 11, Clang 14 or MSVC 2022 are now required for assembly. Support for HP and Pathscale compilers has been discontinued, as well as Google NaCL and IncludeOS projects.
  • A large portion of changes that violate backward compatibility have been made. Removed many obsolete header files, such as those specific to certain algorithms (aes.h, etc.). Removed implementations of functions and algorithms previously deprecated (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). When generating entropy for the pseudo-random number generator, the use of /proc and /dev/random has been discontinued. Some classes (for example, Data_Store), structures and enumerations have been removed from the API. Returns and the use of bare pointers have been discontinued whenever possible.
  • Added support for TLS 1.3 protocol. Support for TLS 1.0, TLS 1.1, and DTLS 1.0 has been dropped. Support for DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK and Camellia CBC cipher suites, anonymous ciphers, SHA-1 hashes has been removed from the TLS implementation.
  • Added support for the Kyber post-quantum cryptography algorithm, which is resistant to selection on a quantum computer.
  • Added support for the Dilithium post-quantum cryptography algorithm for working with digital signatures.
  • Added support for point-on-elliptic curve hashing using the SSWU (draft-irtf-cfrg-hash-to-curve) technique.
  • Added support for BLAKE2b cryptographic hash function.
  • Proposed new API T::new_object returning unique_ptr instead of a bare "T*" pointer.
  • New functions and APIs added: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. A large set of new functions has been added for use in C code (C89).
  • The implementation of the Argon2 algorithm uses AVX2 instructions.
  • Reduced table size in Camellia, ARIA, SEED, DES and Whirlpool implementations.
  • A new implementation of DES/3DES is proposed that is protected against most classes of side-channel attacks that evaluate the state of the cache.
  • The SHACAL2 implementation is optimized for systems based on the ARMv8 and POWER architectures.
  • The code for calculating parity bits, converting bcrypt / base64 and determining the type of ASN.1 string is free from table lookups and is now independent of the data being processed (constant time is performed)

Source: opennet.ru

Add a comment