Здравствуйте.
В одном проекте, использующем OpenSSL, решили обновить версию.
Раньше была версия 1.0.2d.
Взял последнюю стабильную 1.1.1g от Апр 2020.
Собрал, установил. Стал компилировать свои исходники...
У меня челюсть отвисла. Они поменяли все!
Ну ладно выкинули старые ненадежные алгоритмы, это правильно.
Но они все структуры, которые раньше были в публичных заголовках, сделали непрозрачными!
Никакими дефайнами совместимость тут не настроить!
Было:
EVP_MD_CTX mdctx;
EVP_MD_CTX_init(&mdctx);
// работаем с mdctx...
EVP_MD_CTX_cleanup(&mdctx);
Теперь надо так:
EVP_MD_CTX *mdctx;
mdctx = EVP_MD_CTX_new();
// работаем с mdctx...
EVP_MD_CTX_free(mdctx);
Просто крик души.
Ну как так можно?
Вроде серьезная библиотека...
Или в опенсорсе это норм?