Problema com a instalação do QCA-OSSL (parte do Qt Criptografia Arquitetura) plug-in Windows 7
Pergunta
Eu tenho tentado usar QCA (Link) no meu PC Windows para um par de dias, agora, funciona bem no meu linux caixa, apenas não pode fazê-lo funcionar com o Windows.
Então, eu segui todas as instruções para a instalação do QCA e, em seguida, o ossl plugin para o QCA.O QCA funciona bem, mas por algum motivo, o plugin não está aparecendo no meu Qt Creator nem sou capaz de usar algumas das funções do plugin.
Eu usei o qcatool2.exe que vem com o QCA para verificar meus plugins usando
qcatool2 plugins --debug
e receber esta mensagem de erro:
plugin: qca-ossl2.dll: failed to load: The plugin 'C:/Qt/2010.05/qt/plugins/crypto/qca-ossl2.dll' uses incompatible Qt library. Expected build key "Windows mingw debug full-config", got "Windows mingw release full-config"
Agora isso parece para mim como se qt requer o plugin para ser compilado em modo de depuração (como obter a compilação chave para conter depuração, ao invés de lançamento) então eu adicionei
CONFIG += debug
para meu plugin do arquivo de projeto e correu qmake e mingw32-make como de costume, mas este parece ter tido qualquer efeito.
O meu arquivo de projeto para o plugin está agora:
TEMPLATE = lib
CONFIG += plugin
QT -= gui
DESTDIR = lib
VERSION = 2.0.0
unix:include(conf.pri)
windows:CONFIG += crypto
windows:include(conf_win.pri)
CONFIG += create_prl
SOURCES = qca-ossl.cpp
windows:{
load(winlocal.prf)
isEmpty(WINLOCAL_PREFIX) {
error("WINLOCAL_PREFIX not found. See http://delta.affinix.com/platform/#winlocal")
}
OPENSSL_PREFIX = $$WINLOCAL_PREFIX
DEFINES += OSSL_097
INCLUDEPATH += $$OPENSSL_PREFIX/include
LIBS += -L$$OPENSSL_PREFIX/lib
LIBS += -llibeay32 -lssleay32
LIBS += -lgdi32 -lwsock32
}
!debug_and_release|build_pass {
CONFIG(debug, debug|release) {
mac:TARGET = $$member(TARGET, 0)_debug
windows:TARGET = $$member(TARGET, 0)d
}
}
CONFIG += debug
Alguém tem alguma idéia?Se você precisa de mais detalhes basta perguntar, eu tentei ser tão minuciosa quanto possível.Obrigado
Tom
Solução
Eu estive lutando com uma situação semelhante:qca-ossl compilações de multa no linux e no windows.Acabei de bater uma descoberta que pode ajudar você também.
Versões e Patches
- qtsdk-2010.05
- qca-2.0.3
- qca-ossl-r1190163 (a partir do repositório)
- openssl-1.0.0 b
Primeiro de tudo, se você estiver usando uma versão mais recente (0.9.7+, eu acho) do OpenSsl, você pode precisar usar o qca-ossl versão do repositório, uma vez que os patches de algumas incompatibilidades.Eu também precisava comentar algumas linhas no novo qca-ossl.cpp arquivo de lidar com SHA224, SHA256, SHA384 e SHA512 para evitar erros de compilação.Eu estou usando qca-ossl para o cifras, então não estou preocupado com a criação de algoritmos hash e não investigar a erros muito.
Fixação
O windows criar problemas foram muitos dobra para mim, mas a maioria deles derivam da má qualidade cria o programa de configuração para o windows versão do plugin.É bom ter um pouco de como configurar o script para linux lado das coisas, mas o que sobre o windows?Nós precisamos fazer um pouco de trabalho extra.
Alguns deste trabalho extra é porque eu escolhi locais não-padrão para as bibliotecas de suporte do meu aplicativo.Qca e OpenSsl ambos existem dentro da estrutura de diretório do projeto em bibliotecas/ diretório.Meu palpite é que você tenha feito algo semelhante, se você está tentando fazer compilação cruzada de seu aplicativo, mas mesmo se você não a seguir devem ajudá-lo.
Encontrar O OpenSsl
Qca-ossl vai construir muito bem, se não é possível encontrar a biblioteca é suposto para se conectar a...:) Então, vamos especificar diretamente onde ele está.Comente as linhas relacionadas ao winlocal.prf e as alterações que decorrem no qca-ossl.pro.Vamos especificar diretamente onde encontrar openSsl.
TEMPLATE = lib
CONFIG += plugin
QT -= gui
DESTDIR = lib
VERSION = 2.0.0
unix:include(conf.pri)
windows:CONFIG += crypto
windows:include(conf_win.pri)
CONFIG += create_prl
SOURCES = qca-ossl.cpp
windows:{
# Rather than rely on the winlocal.prf file, we will specify the location of the openssl
# by hand when running qmake.
#
# load(winlocal.prf)
# isEmpty(WINLOCAL_PREFIX) {
# error("WINLOCAL_PREFIX not found. See http://delta.affinix.com/platform/#winlocal")
# }
#
# OPENSSL_PREFIX = $$WINLOCAL_PREFIX
DEFINES += OSSL_097
INCLUDEPATH += $$OPENSSL_PREFIX/include
LIBS += -L$$OPENSSL_PREFIX/lib
LIBS += -llibeay32 -lssleay32
LIBS += -lgdi32 -lwsock32
}
!debug_and_release|build_pass {
CONFIG(debug, debug|release) {
mac:TARGET = $$member(TARGET, 0)_debug
windows:TARGET = $$member(TARGET, 0)d
}
}
Agora temos acesso direto a $$OPENSSL_PREFIX variável de ambiente no .pro arquivo.Podemos definir quando chamamos qmake fazendo o seguinte.
qmake.exe "OPENSSL_PREFIX=C:/path/to/openssl-1.0.0b"
Você deve ser capaz de usar barras com versões anteriores ou barras.Aqui eu escolher para a frente uma vez que o Qt foi preterido desde 4.7.
Como alternativa, você pode definir o OPENSSL_PREFIX variável diretamente no .pro arquivo.
Encontrar Qca
Depois de comparar o unix e o windows makefiles para qca-ossl, curiosamente, nunca inclui o qca bibliotecas para a criação ou ligação!?!?!Isso levou a uma "Indefinido" interface de erro no Q_INTERFACES(QCAPlugin) linha do opensslPlugin definição de classe no final de qca-ossl.cpp.
Para evitar isso, vamos precisar de definir explicitamente a biblioteca e incluir caminhos de mão.Expandindo o qmake linha da última seção final qmake linha é como se segue.
qmake.exe "OPENSSL_PREFIX=C:/path/to/openssl-1.0.0b" "INCLUDEPATH+=C:/path/to/qca-2.0.3/include/QtCrypto" "LIBS+=-LC:/path/to/qca-2.0.3/lib -lqca2"
"Instalar" Qca-ossl
Depois de executar o qmake linha acima e a execução de uma simples ol' make, você vai precisar instalar o Qca-ossl.Você pode copiar a dll resultante do diretório lib/ para o Qt do diretório de plugins, que se você estiver usando o meu versões padrão C:\Qt\2010.05\qt\plugins\crypto.Como alternativa, você pode movê-lo para uma criptografia de diretório que está na raiz do nível da sua estrutura de diretório do projeto, tais como C:\path o\my\project\crypto.
Espero que isso ajude!
Outras dicas
Na verdade, você pode tentar este tutorial QCA+OpenSSL na janela. Está funcionando bem.
A propósito, posso usar o QCA com AES 256 na janela. Mas não posso usá -lo no Symbian. Alguma ideia de fazer isso?