mini-curl
Описание
mini-curl - самодостаточный мини HTTPS-клиент с командным интерфейсом в стиле curl, написанный на C/CPP. Это командная строка HTTP/HTTPS-клиент, повторяющий интерфейс популярной утилиты curl.
Проект самодостаточный: вся сетевая и криптографическая функциональность обеспечивается встроенной библиотекой crypery (сетевой стек на чистом C/C++), единственная внешняя зависимость - zlib (опционально, для gzip-распаковки). Клиент работает как с обычным HTTP, так и с HTTPS (TLS 1.2/1.3). Все криптоалгоритмы реализованы с нуля внутри библиотеки crypery - OpenSSL и другие внешние криптографические библиотеки не используются.
Используемые модули
- crypery/tls - базовый криптографический слой: реализация TLS 1.2/1.3 на чистом C (AES-128-GCM, SHA-256, HMAC-SHA256, HKDF, RSA-2048, ECDH P-256/X25519, X.509-сертификаты)
- crypery/ssl - OpenSSL-совместимый API-слой над встроенной реализацией TLS: рукопожатие, шифрованный ввод-вывод поверх сокета, таймауты, проверка сертификата
- crypery/url - HTTP/HTTPS-библиотека клиента: разбор URL, HTTP/1.1-запросы, чтение ответа (Content-Length, chunked), редиректы, multipart-формы, DNS-разрешение, подключение с таймаутом
- zlib - опциональная библиотека для gzip-распаковки сжатых ответов
Технологии
- C/CPP - код клиента
- crypery - встроенная сетевая и криптографическая библиотека: TLS 1.2/1.3 (AES-128-GCM, SHA-256, HMAC-SHA256, HKDF, RSA-2048, ECDH P-256/X25519, X.509-сертификаты), OpenSSL-совместимый API, HTTP/HTTPS-клиент
- zlib - опционально, для gzip-распаковки
- Windows (MinGW, Winsock) и Unix-подобные системы (BSD-сокеты)
- GCC / MinGW-w64, скрипт сборки build_curl.bat (-O2)