хэш — C ++ Builder — Использование TIdHashSHA256 с OpenSSL

Как я понимаю, Indy напрямую не реализует SHA256 и выше, и я должен использовать OpenSSL. Если я использую следующее, я не получаю никакого результата:

#include <IdHashSHA.hpp>
...
TIdHashSHA256 *x = new TIdHashSHA256;
ShowMessage(BoolToStr(x->IsAvailable(), true));

я ошибаюсь Я где-то читал, мне нужно использовать IdSSLOpenSSLHeaders и загрузить библиотеку SSL, но я не знаю как. Кто-нибудь может привести пример использования SHA256 в C ++ Builder?

1

Решение

Вам нужно позвонить 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));
2

Другие решения


По вопросам рекламы [email protected]