Но это еще не все.
По умолчанию QCA поддерживает только алгоритмы SHA1 и MD5. Чтобы получить остальное нужно ставить дополнительный плагин qca-ossl-2.0.0-beta3.tar.bz2.
Установка его дает нам такой комбайн поддерживаемых алгоритмов: TLS, CMS, X.509, RSA, DSA, Diffie-Hellman, PKCS#7, PKCS#12, SHA0, SHA1, SHA224, SHA256, SHA384, SHA512, MD2, MD4, MD5, RIPEMD160, Blowfish, DES, 3DES, AES128, AES192, AES256, CAST5, HMAC(SHA1, MD5, RIPEMD160), PBKDF1(MD2, SHA1), PBKDF2(SHA1).
Этот плагин в свою очередь зависит от OpenSSL версии не ниже 0.9.6
Взять его можно здесь openssl-0.9.8l
OpenSSL — криптографический пакет с открытым исходным кодом для работы с SSL/TLS. Позволяет создавать ключи RSA, DH, DSA и сертификаты X.509, подписывать их, формировать CSR и CRT. Также имеется возможность шифрования данных и тестирования SSL/TLS соединений.Чтобы собрать OpenSSL нужен Perl. Пришлось поставить Strawberry Perl.
OpenSSL поддерживает разные алгоритмы шифрования и хеширования:
Поддержка алгоритмов ГОСТ появилась в версии 1.0.0, в данный момент находящейся в стадии бета-тестирования.
- Симметричные
- Blowfish, Camellia, DES, RC2, RC4, RC5, IDEA, AES, ГОСТ 28147-89
- Хеш-функции
- MD5, MD2, SHA, MDC-2, ГОСТ Р 34.11-94
- Асимметричные
- RSA, DSA, Diffie-Hellman key exchange, ГОСТ Р 34.10-2001, ГОСТ Р 34.10-94
После чего конфигуряется командой
> perl Configure VC-WIN32 --prefix=c:/some/openssl/dir
Затем
> ms\do_ms
И
> nmake -f ms\ntdll.mak
> nmake -f ms\ntdll.mak install
После установки OpenSSL нужно сплясать еще один танец с бубном. Это касатся уже установки плагина qca-ossl.
В Папке %QTDIR% \mkspecs\features нужно создать файл winlocal.prf со строчкой WINLOCAL_PREFIX = D:/OpenSSL
То есть, указать путь до собранной OpenSSL.
В ходе сборки плагина у меня выскакивала ошибка, что де не найден OBJ_whirlpool. Эта переменная определена в OpenSSL, и управляет включением алгоритма Whirlpool — криптографическая хеш-функция.
Однако плагин в упор не видит исходного кода алгоритма и вылетает. Пришлось в коде плагина убрать упоминания о Whirlpool.
В итоге плагин qca-ossl2.dll все таки собрался.
Копируем его в %QTDIR%\plugins\crypto.
Завтра будем пробовать. По крайней мере if(QCA::isSupported("aes128-cbc-pkcs7")) стало возвращать true.
спасибо очень полезная статья
ОтветитьУдалитьТак просто всё у вас (: Мне qca-ossl так скомпилировать и не удалось. Сыпется при mingw32-make на следующем:
ОтветитьУдалитьIn file included from qca-ossl.cpp:38:
c:\openssl\include/openssl/ssl.h:1: error: stray '\377' in program
c:\openssl\include/openssl/ssl.h:1: error: stray '\376' in program
...
In file included from qca-ossl.cpp:38:
c:\openssl\include/openssl/ssl.h:1: error: stray '\377' in program
c:\openssl\include/openssl/ssl.h:1: error: stray '\376' in program
Может есть идеи как побороть это безумие?
d:\openssl-0.9.8l\crypto\cryptlib.h(62) : fatal error C1083: Не удается открыть
ОтветитьУдалитьфайл включение: stdlib.h: No such file or directory
NMAKE : U1077:
Stop.
Помогите пожалуйста, в чем может быть проблема? переменные среды выставлены туда где лежит этот файл, причем в 3 разных местах...
Делал все как Вы писали с первой части, в чем может быть проблема? Помогите пожалуйста.
Собирал давеча qca-ossl-2.0.0-beta3
ОтветитьУдалитьругалось на отсутсвтие EVP_md2:
.\qca-ossl.cpp(1775) : error C3861: 'EVP_md2': identifier not found
.\qca-ossl.cpp(1793) : error C3861: 'EVP_md2': identifier not found
.\qca-ossl.cpp(6792) : error C3861: 'EVP_md2': identifier not found
.\qca-ossl.cpp(6820) : error C3861: 'EVP_md2': identifier not found
NMAKE : fatal error U1077: 'C:\Dev\VS9\VC\BIN\cl.EXE' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'C:\Dev\VS9\VC\BIN\nmake.exe' : return code '0x2'
Stop.
а дело в том что в OpenSSL 1.0.0 по умолчанию не поддерживается MD2 - пришловсь #ifdef около всех EVP_md2 в либе вставить :)
зато на whirpool не ругалось вообще
Спасибо, помогли.
Удалитьвот и на википедии подтверждение нашлось -
ОтветитьУдалитьIn 2009, security updates were issued disabling MD2 in OpenSSL, GnuTLS, and Network Security Services.[5]
http://en.wikipedia.org/wiki/MD2_(cryptography)