Problema installazione QCA-OSSL (parte del Qt Cryptographic Architecture) plug-in Windows 7

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

Domanda

Ho cercato di usare QCA ( link ) sul mio PC Windows per un paio di giorni ora, funziona bene sulla mia macchina Linux, proprio non può farlo funzionare con Windows.

Così ho seguito tutte le istruzioni per l'installazione QCA e poi il plugin ossl per QCA. La QCA funziona bene, ma per qualche motivo il plugin non viene visualizzato nel mio Qt Creator né sono in grado di utilizzare alcune delle funzioni nel plugin.

ho usato la qcatool2.exe che viene fornito con QCA per controllare i miei plugins usando

qcatool2 plugins --debug

e ottenere questo messaggio di errore:

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"

Ora, questo mi sembra come se qt richiede il plugin essere compilato in modalità debug (come per ottenere la chiave build per contenere il debug piuttosto che stampa) così ho aggiunto

CONFIG += debug

per il mio plugin di file di progetto e corse qmake e mingw32-make, come al solito, ma questo sembra aver avuto alcun effetto.

Il mio file di progetto per il plugin è ora:

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

Qualcuno ha ottenuto tutte le idee? Se avete bisogno di più dettagli dei basta chiedere, ho cercato di essere il più preciso possibile. Grazie

Tom

È stato utile?

Soluzione

mi è stato alle prese con una situazione simile: QCA-ossl costruisce bene su Linux e non è affatto su Windows. Ho appena colpito un passo avanti che potrebbe aiutare pure.

Versioni e patch

  • qtsdk-2010.05
  • QCA-2.0.3
  • QCA-ossl-r1190163 (dal repository)
  • openssl-1.0.0b

Prima di tutto, se si sta utilizzando una versione più recente (0.9.7+, credo) di OpenSSL, potrebbe essere necessario utilizzare la versione QCA-ossl dal repository dal momento che le patch alcune incompatibilità. Ho anche bisogno di commentare alcune linee nel nuovo file di negoziazione QCA-ossl.cpp con SHA224, SHA256, SHA384 e SHA512 ad errori evitare l'accumulo. Sto utilizzando QCA-ossl per le cifre, quindi non sono preoccupato per l'hashing e non ha verificato gli errori molto.

fissandolo

Le finestre costruire problemi sono stati molte volte per me, ma la maggior parte di loro derivano dalla configurazione costruzione scadente per la versione Windows del plugin. E 'bello avere un po' di script di configurazione per il lato Linux delle cose, ma per quanto riguarda le finestre? Abbiamo bisogno di fare un po 'di lavoro in più.

Una parte di questo lavoro supplementare è dovuto al fatto che ho scelto posizioni non standard per le librerie di supporto della mia domanda. QCA e OpenSSL esistono entrambi all'interno della struttura di directory del progetto in una directory / librerie. La mia ipotesi è che hai fatto qualcosa simile se si sta cercando di attraversare compilare l'applicazione, ma anche se avete il seguente dovrebbe aiutare.

Ricerca OpenSSL

QCA-ossl solito costruire molto bene se non riesce a trovare la libreria che si suppone di connettersi a ... :) Quindi cerchiamo di specificare direttamente dove si trova. Commento le linee relative winlocal.prf ei cambiamenti che ne derivano in qca-ossl.pro. Ci sarà direttamente specificare dove trovare 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
}
}

Ora abbiamo accesso diretto alla variabile d'ambiente $$ OPENSSL_PREFIX nel file .pro. Siamo in grado di impostare quando chiamiamo qmake facendo quanto segue.

qmake.exe "OPENSSL_PREFIX=C:/path/to/openssl-1.0.0b"

Si dovrebbe essere in grado di utilizzare barre rovesciate o le barre. Qui scelgo Attaccante dal Qt li ha deprecato dal 4.7.

In alternativa, è possibile impostare la variabile OPENSSL_PREFIX direttamente nel file .pro.

Ricerca QCA

Dopo aver confrontato l'UNIX e Windows makefile per QCA-ossl, stranamente, non è mai include le librerie qca per la costruzione o il collegamento! ?!?! Ciò ha portato ad un errore di "interfaccia non definita" sui Q_INTERFACES (QCAPlugin) riga della definizione di classe opensslPlugin alla fine del QCA-ossl.cpp.

Per evitare questo, si dovrà definire in modo esplicito l'inclusione e percorsi di libreria a mano. Ampliando la linea qmake dall'ultima sezione la linea qmake finale è il seguente.

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"

"Installazione" QCA-ossl

Dopo aver eseguito la linea qmake sopra e l'esecuzione di make una pianura ol', avrete bisogno di installare QCA-ossl. È possibile copiare il dll risultante dalla lib / directory nella vostra directory dei plugin di Qt, che se si sta utilizzando le mie versioni default C: \ Qt \ 2010.05 \ qt \ plugins \ Crypto. In alternativa, è possibile spostarlo in una directory crypto che è al livello principale della struttura di directory del progetto, ad esempio C:. \ Percorso \ a \ mio progetto \ Crypto \

Spero che questo aiuta!

Altri suggerimenti

In realtà, si può provare questo tutorial QCA + OpenSSL sulla finestra . È un lavoro bene.

A proposito, posso fare uso di QCA con AES 256 sulla finestra. Ma non posso usarlo su Symbian. Qualsiasi idea di farlo?

Related Post

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top