Как я понимаю, Indy напрямую не реализует SHA256 и выше, и я должен использовать OpenSSL. Если я использую следующее, я не получаю никакого результата:
#include <IdHashSHA.hpp>
...
TIdHashSHA256 *x = new TIdHashSHA256;
ShowMessage(BoolToStr(x->IsAvailable(), true));
я ошибаюсь Я где-то читал, мне нужно использовать IdSSLOpenSSLHeaders и загрузить библиотеку SSL, но я не знаю как. Кто-нибудь может привести пример использования SHA256 в C ++ Builder?
Вам нужно позвонить LoadOpenSSLLibrary()
инициализировать функции OpenSSL, которые TIdHashSHA256
использует внутренне.
Также, IsAvailable()
это class
метод (аналогично static
метод, но с дополнительным параметром метакласса), поэтому вам не нужен экземпляр объекта для его вызова:
#include <IdSSLOpenSSLHeaders.hpp>
#include <IdHashSHA.hpp>
...
LoadOpenSSLLibrary(); // <-- add this
// if using CB2007 or earlier:
ShowMessage(BoolToStr(TIdHashSHA256::IsAvailable(__classid(TIdHashSHA256)), true));
// if using CB2009 or later:
ShowMessage(BoolToStr(TIdHashSHA256::IsAvailable(), true));