Russian Qt Forum
Ноябрь 23, 2024, 23:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QCA::isSupported возвращает false  (Прочитано 2913 раз)
Eretic
Гость
« : Октябрь 02, 2012, 19:28 »

Приветствую всех кто зашёл в темку.
Помогите решить проблему.

Пример с http://delta.affinix.com/docs/qca/ciphertest_8cpp-example.html

Код:
if(!QCA::isSupported("aes128-cbc-pkcs7"))
        printf("AES128-CBC not supported!\n");     //<-- заходит сюда

Система Ubuntu.
Скачал и поставил qca-2.0.3.tar.bz2.
Далее скачал и поставил qca-ossl-2.0.0-beta3.tar.bz2.

QtCreator добавил получившиеся библиотеки (libqca.so и libqca-ossl.so).
Ошибка воспроизводится.

Положил libqca-ossl.so в папку с прогой.
Ошибка воспроизводится.

В репозитории Ubuntu нашёл QCA. Поставил. Написано:
Цитировать
QCA OSSL plugin for libqca2
 
This plugin provides features based on OpenSSL. It implements:
 * Hashing - SHA1, SHA0, RIPEMD160, MD2, MD4, MD5
 * Hashing - SHA224, SHA256, SHA384 and SHA512 (for openssl 0.9.Крутой
 * Block Ciphers
 * Keyed Hash Message Authentication Code (HMAC), using SHA1, MD5, RIPEMD160
 * Public keys - RSA, DSA, Diffie-Hellman

Попробовал изменить aes128-cbc-pkcs7 на pkey.
Ошибка воспроизводится.

Что не так я делаю?

Заранее спасибо.
Записан
Eretic
Гость
« Ответ #1 : Октябрь 02, 2012, 22:38 »

Странно что sha1 возвращает true.

Откуда вообще QCA::isSupported берёт значения? Как и где ищет нужные  плагины?
Записан
Eretic
Гость
« Ответ #2 : Октябрь 03, 2012, 10:17 »

Проблему решил. Debug всему голова Улыбающийся Опишу может кому пригодится.

Медот QCA::isSupported ищет плагины в 2ух папках.
Код:
const QStringList dirs = QCoreApplication::libraryPaths();
Цитировать
   dirs   <2 элемента>   QStringList
      
  •    "/my user folder/QtSDK/Desktop/Qt/4.8.1/gcc/plugins"   QString
  • [1]   "/my user folder/QtSDK/myprogram-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK_______"   QString
Далее следующий код смотрит необходимую поддиректорию:
Код:
QDir dir(libpath.filePath(PLUGIN_SUBDIR));
if(!dir.exists())
{
logDebug("  (No 'crypto' subdirectory)");
continue;
}

Создаём директорию crypto в /my user folder/QtSDK/Desktop/Qt/4.8.1/gcc/plugins  и кидаем туда libqca-ossl.so

Qt находит эту либу, понимает что это:
Цитировать
   className   "opensslPlugin"   QString
   providerName   "qca-ossl"   QString

Далее всё работает.

Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.1 секунд. Запросов: 21.