Криптографическая библиотека для D, частичный порт Monocypher. Содержит реализации некоторых современных криптоалгоритмов, в том числе на эллиптических кривых.

Библиотека предоставляет:

  • Аутентифицированное шифрование с присоединенными данными (AEAD) по алгоритму ChaCha20-Poly1305;
  • Протокол Диффи-Хеллмана на эллиптических кривых Curve25519;
  • Криптографическую хеш-функцию BLAKE2b;
  • Функцию хеширования паролей Argon2;
  • Схему цифровой подписи EdDSA;
  • Криптостойкий генератор псевдослучайных чисел;
  • Кодировку Base64;
  • Конвертер байтовых массивов в шестнадцатиричный текст и обратно.

Все функции @nogc, библиотека может быть скомпилирована в режиме BetterC. Как и в оригинальном Monocypher, динамическая память не используется, а промежуточные секретные данные на стеке уничтожаются после вывода в пользовательские буферы.

Библиотека сохраняет, насколько это возможно, оригинальный API Monocypher.

Репозиторий проекта: https://github.com/gecko0307/minicrypto

Для чего этот проект, когда есть SecureD, Botan и libsodium? Существующие библиотеки перегружены legacy-примитивами, которые не стоит использовать для создания новых программ. Попытка поддерживать все существующие стандарты делает их переусложненными и сбивает с толку пользователей. Minicrypto предоставляет лишь минимальный набор современных алгоритмов. Это не привязка к тяжелой внешней библиотеке и не обертка над системной криптографией — у Minicrypto, как и у Monocypher, нет зависимостей, что сильно облегчает использование и сопровождение, а также позволяет портировать код на любую платформу (известно, что Monocypher работает даже на маломощных контроллерах). Кроме того, Minicrypto — единственная известная криптографическая библиотека для D, совместимая с @nogc и BetterC, что является абсолютной необходимостью в системной разработке.