Доступен выпуск криптографической библиотеки Botan 3.0.0, применяемой в проекте NeoPG, форке GnuPG 2. Библиотека предоставляет большую коллекцию готовых примитивов, используемых в протоколе TLS, сертификатах X.509, шифрах AEAD, модулях TPM, PKCS#11, хэшировании паролей и постквантовой криптографии (подписи на основе хэша и согласование ключей на основе McEliece). Библиотека написана на языке C++ и поставляется под лицензией BSD...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=58953
> В кодовой базе разрешено применение стандарта C++20 (ранее использовался C++11)Мое увожение, снимаю шляпу. А то некоторые луддиты только-только на C-89 планируют переходить.
Кто?
Не я - у меня C++98.
> Не я - у меня C++98.Ну тоже так себе радость. На современных ++ некоторые вещи делаются менее мерзотно.
Как-то асинхронное всё это сетевое дело писал на c++03
Как без лямбд то тяжело... 🤨
Страшно, жутко, противно, но что делать.
Общался с Си плюс-плюсниками, они говорили, что в основном сидят на С++11. На стандарты C++18 или C++20. Переходить не собираются.>А то некоторые луддиты только-только на C-89 планируют переходить.
А-а! пердуны из старой школы, учившие "Си с классами". Ты видимо о них ...
> Общался с Си плюс-плюсниками, они говорили, что в основном сидят на С++11. На стандарты C++18 или C++20. Переходить не собираются.Тут сильно влияет с кем именно общался. Российские Си плюс-плюсники нередко работают на какое-нибудь НИИ и при всем желании не перейдут на более свежие версии раньше чем позволят люди в погонах, что может и на десятилетия растягиваться и пропускать промежутоные стандарты
так говоришь, как будто в суровом капиталистическом банковом энтерпрайзе не какая-нить джава 8
мы мигрируемм на 11.
свежие проекты на 17 сразу.
мимо-из-банка-топ3-жява-бекундер
Нормально там в капиталистическом банковом энтерпрайзе. COBOL ещё никто не отменял.
8 ява? Да Вы, батенька, зажрались, 6 с вкраплениями и аптайм контейнера под 10 лет. Вот это суровый интерпарйз, а 8... Не хипстерство, но уже не серьёзно как-то!
и он еще SAP не видел
Необязательно люди в погонах. Бывают и люди в деловых костюмах, которые не хотят платить за адаптацию легаси или просто большой кодовой базы к новым стандартам.
> они говорили, что в основном сидят на С++11. На стандарты C++18 или C++20. Переходить не собираются.Ну это относительно более-менее, там уже не такая кардинальная разница 🤨
Хотя и то как-то припрёт: а где optional? в c++17 только? вот это потеря-потерь 😮
И бомбит 💣 от того, как луддитный вокруг мир 🌏
>C++Получаем по полсотни критических выходов за пределы памяти каждый релиз.
Потому что микрософту, гуглу, мозилдле, и т.д., не хватает денег нанять опеннетчика, да?
Глупый вопрос.
>>C++ > Получаем по полсотни критических выходов за пределы памяти каждый релиз.У сабжа их столько за всю его историю не наберется наверное. Он вообще в списках CVE не отсвечивает. Толи код нормально пишут, толи неуловимый джо, но факт.
>>C++
> Получаем по полсотни критических выходов за пределы памяти каждый релиз.И как же мы предыдущие 40 лет жили (ну окай, 20, до этого проблемы безопасности на локалхосте волновали меньше)?
Перестаньте писать на С++ в стиле С.
Годный, нужный проект
> Удалены реализации функций и алгоритмов, ранее объявленных устаревшими (CAST-256, MISTY1, Kasumi, DESX, XTEA, PBKDF1, MCEIES, CBC-MAC, Tiger, NEWHOPE, CECPQ1)Что за манеры? Кому мешало? Не нравится — не используй. А так они нужны как минимум для истории и экспериментов.
Наверное, на новую версию Си++ некому переписывать. Для истории и экспериментов есть старая версия библиотеки.
> Код расчёта битов чётности, преобразования bcrypt/base64 и определения типа строки ASN.1 избавлен от поиска в таблицах и теперь не зависит от обрабатываемых данных (выполняется постоянное время)И во сколько раз оно стало медленее?
Это криптография. Тут "не выпустить ни одного бита данных по сторонним каналам" важнее, чем "сэкономить пару десятков тактов".
Кому как.
Быстрее стало, т.к. исключили промахи кеша данных.
Нет.
Я эксперементировал с разными алгоритмами, в том числе base64 с таблицами и без таблиц, с таблицами практически всегда быстрее.
Для base64 2 таблицы: одна на 64 байт другая на 256, первая влезает в кеш линию вторая требует нескольких кеш линий. Можно предварительно её всовывать в кеш через prefetch.Чтобы было понятно: один лукап по таблице заменяет несколько операций как минимум, в некоторых случаях это могут быть десятки и сотни операций (stribog).
В синтетическом тесте таблицы кажутся быстрее, поскольку измеряется множество итераций и таблицы гарантировано оказываются в кеше, кроме первого к ним обращения. На практике как определить время чтения линейки кеша из ОЗУ? Я использовал симулятор конвейера в AMD CodeAnalyst, когда это было актуально (в AMD uProf функциональность отсутствует) - показывало сотни тактов. А "несколько операций" могут выполниться за 1-2 такта. В base64 вычислений существенно меньше, чем в stribog, и применяется алгоритм на данных сравнительно небольшого объёма, так что их сравнивать м.б. не вполне корректно.
>Добавлена поддержка хеширования в формате точки на эллиптической кривойВ Dual EC DRBG реализовывали генератор случайных чисел на основе эллиптических кривых, ничего хорошего из этого не вышло.
Да, давайте плюнем и закопаем целый раздел теории чисел. Потому что в одну из реализаций алгоритма одна контора пыталась вставить бекдор.
Глупый вопрос, а экспорты они ABI шные делают без плюсового манглинга или где?
Нескромный вопрос, а почему Вы сами не смогли найти ответ?Though Botan is written in C++ it is possible to use it from some other languages including
Ready To Use
C89 - Available out of the box in the header ffi.h. This C interface is also intended to be the preferred way of binding Botan to other languages, as it communicates exclusively through function calls operating on opaque structs, and without transferring ownership of memory. This makes it easy to call using ctypes-style FFI libraries.
Python - Included in the distribution.
Ruby
Rust
Haskell
OdinExperimental/Work In Progress
Java
OCaml
Поддерживает ли он Russian Trusted Root CA?
С чего бы библиотеке вообще знать про конкректные CA? Поддерживает любые, добавленные в список корневых сертификатов и использующие не-устаревшие алгоритмы. Используйте те что в стандартном pem формате, а не странный xml, все будет ок (ну, если вы им вообще доверяете).