Problema com a instalação do QCA-OSSL (parte do Qt Criptografia Arquitetura) plug-in Windows 7

StackOverflow https://stackoverflow.com/questions/4609621

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

Foi útil?

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?

Postagem relacionada

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top