Доступен выпуск криптографической библиотеки Botan 3.0.0, применяемой в проекте NeoPG, форке GnuPG 2. Библиотека предоставляет большую коллекцию готовых примитивов, используемых в протоколе TLS, сертификатах X.509, шифрах AEAD, модулях TPM, PKCS#11, хэшировании паролей и постквантовой криптографии (подписи на основе хэша и согласование ключей на основе McEliece). Библиотека написана на языке C++ и поставляется под лицензией BSD.
Среди изменений в новом выпуске:
- В кодовой базе разрешено применение стандарта C++20 (ранее использовался C++11), соответственно, повышены требования к компиляторам – для сборки теперь необходимы как минимум GCC 11, Clang 14 или MSVC 2022. Прекращена поддержка компиляторов HP и Pathscale, а также проектов Google NaCL и IncludeOS.
- Внесена большая порция изменений, нарушающих обратную совместимость. Удалены многие устаревшие заголовочные файлы, например, специфичные для определённых алгоритмов (aes.h и т.п.). Удалены реализации функций и алгоритмов, ранее объявленных устаревшими (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1). При формировании энтропии для генератора псевдослучайных чисел прекращено использование /proc и /dev/random. Из API удалены некоторых классы (например, Data_Store), структуры и перечисления. По возможности прекращено возвращения и использование голых указателей.
- Добавлена поддержка протокола TLS 1.3. Прекращена поддержка TLS 1.0, TLS 1.1 и DTLS 1.0. Из реализации TLS удалена поддержка наборов шифров DSA, SRP, SEED, AES-128 OCB, CECPQ1, DHE_PSK и Camellia CBC, анонимных шифров, хэшей SHA-1.
- Добавлена поддержка алгоритма постквантовой криптографии Kyber, стойкого к подбору на квантовом компьютере.
- Добавлена поддержка алгоритма постквантовой криптографии Dilithium для работы с цифровыми подписями.
- Добавлена поддержка хеширования в формате точки на эллиптической кривой, использующего технику SSWU (draft-irtf-cfrg-hash-to-curve).
- Добавлена поддержка криптографической хеш-функции BLAKE2b.
- Предложен новый программный интерфейс T::new_object, возвращающий unique_ptr вместо голого указателя “T*”.
- Добавлены новые функции и API: X509_DN::DER_encode, Public_Key::get_int_field, ideal_granularity, requires_entire_message, SymmetricAlgorithm::has_keying_material. Добавлен большой набор новых функций для использования в коде на языке Си (C89).
- В реализации алгоритма Argon2 задействованы инструкции AVX2.
- Уменьшен размер таблиц в реализациях алгоритмов Camellia, ARIA, SEED, DES и Whirlpool.
- Предложена новая реализация DES/3DES, защищённая об большинства классов атак по сторонним каналам, оценивающих состояние кэша.
- Реализация SHACAL2 оптимизирована для систем на базе архитектур ARMv8 и POWER.
- Код расчёта битов чётности, преобразования bcrypt/base64 и определения типа строки ASN.1 избавлен от поиска в таблицах и теперь не зависит от обрабатываемых данных (выполняется постоянное время)
Release.
Ссылка here.