Problema al instalar QCA-OSSL (parte de la arquitectura de cifrado Qt) plugin en Windows 7

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

Pregunta

He estado tratando de utilizar QCA ( Enlace ) en mi PC con Windows por un par de días ahora, trabaja muy bien en mi máquina Linux, simplemente no puede conseguir que funcione con Windows.

Así que he seguido todas las instrucciones para instalar QCA y luego el plugin OSSL de QCA. La QCA funciona bien, pero por alguna razón el plugin no aparece en mi Qt Creator ni soy capaz de utilizar algunas de las funciones en el complemento.

He utilizado el qcatool2.exe que viene con QCA para comprobar mis plugins usando

qcatool2 plugins --debug

y obtener este mensaje de error:

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"

Ahora bien, esto me parece como si qt requiere el plugin para ser compilado en modo de depuración (como para obtener la clave acumulación para contener depuración en lugar de la liberación) por lo que añade

CONFIG += debug

a de mi plugin de archivo y corrió proyecto qmake y mingw32-maquillaje como de costumbre, pero esto parece haber tenido ningún efecto.

Mi archivo de proyecto para el plugin es ahora:

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

alguien tiene alguna idea? Si necesita más detalles apenas pregunte, yo he tratado de ser lo más completa posible. Gracias

Tom

¿Fue útil?

Solución

he estado luchando con una situación similar: QCA-OSSL construye muy bien en Linux y en absoluto en las ventanas. Me acaba de golpear un gran avance que podría ayudar también.

versiones y parches

  • qtsdk-2010.05
  • QCA-2.0.3
  • QCA-OSSL-r1190163 (desde el repositorio)
  • openssl-1.0.0b

En primer lugar, si usted está utilizando una versión más reciente (0.9.7+, creo) de OpenSSL, puede que tenga que utilizar la versión QCA-OSSL desde el repositorio ya que parchea algunas incompatibilidades. También necesitaba para comentar algunas líneas en el nuevo archivo de tráfico de QCA-ossl.cpp con SHA224, SHA256, SHA384, SHA512 y para evitar que se acumulen errores. Estoy usando QCA-OSSL de los sistemas de cifrado, así que no estoy preocupado por hash y no investigó los errores mucho.

soluciónelo

Las ventanas se acumulan los problemas eran muchas veces para mí, pero la mayoría de ellos se derivan de la configuración de la acumulación de mala calidad para la versión de Windows del plugin. Es agradable tener un pequeño script de configuración para el lado de Linux de las cosas, pero ¿qué pasa con las ventanas? Tenemos que hacer un poco de trabajo extra.

Parte de este trabajo adicional se debe a que he elegido ubicaciones no estándar para las bibliotecas de soporte de mi solicitud. Qca y OpenSSL ambos existen dentro de la estructura de directorios del proyecto en una bibliotecas / directorio. Mi conjetura es que usted ha hecho algo similar si usted está tratando de cruzar compilar la aplicación, pero ni siquiera si se hizo lo siguiente debe ayudar.

Finding OpenSSL

QCA-OSSL suele construir muy bien si no puede encontrar la biblioteca que se supone que conectarse a ... :) Así que vamos a especificar directamente donde está. Comente todas las líneas relacionadas con winlocal.prf y los cambios que se derivan de ella en qca-ossl.pro. Vamos a especificar directamente dónde 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
}
}

Ahora tenemos acceso directo a la variable de entorno $$ OPENSSL_PREFIX en el archivo .pro. Podemos establecer que cuando llamamos qmake haciendo lo siguiente.

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

debería ser capaz de utilizar barras inclinadas o barras diagonales. Aquí elijo hacia adelante desde Qt les ha desuso desde 4.7.

Como alternativa, puede establecer la variable OPENSSL_PREFIX directamente en el archivo .pro.

Finding Qca

Después de comparar el UNIX y Windows archivos make para QCA-OSSL, por extraño que parezca, nunca incluye las bibliotecas qca para la construcción o la vinculación! ?!?! Esto condujo a un error "interfaz Indefinido" en los Q_INTERFACES (QCAPlugin) línea de la definición de clase opensslPlugin al final de QCA-ossl.cpp.

Para evitar esto, tendrá que definir explícitamente la inclusión y rutas de biblioteca a mano. La expansión en la línea qmake de la última sección de la línea de qmake final se como sigue.

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"

"Instalación" QCA-OSSL

Después de ejecutar la línea qmake arriba y corriendo marca un ol llano', tendrá que instalar QCA-OSSL. Puede copiar el archivo DLL que resulta de la lib / directorio a su directorio de plugins de Qt, que si está usando mis versiones por defecto es C: \ Qt \ 2.010,05 \ qt \ plugins \ Crypto. Como alternativa, puede moverlo a un directorio de cifrado que está en el nivel de la raíz de la estructura de directorio de su proyecto como C:. \ Ruta \ a \ mi \ proyecto \ cripto

Espero que esto ayude!

Otros consejos

En realidad, se puede tratar este tutorial QCA + OpenSSL en la ventana . Es un trabajo así.

Por cierto, puede hacer uso de QCA con AES 256 en la ventana. Pero no puedo usarlo en Symbian. ¿Alguna idea de cómo hacerlo?

Related Post

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top