amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
164 stars 33 forks source link

Problema ao linkar sdk "contra" openssl #153

Closed franfcunha closed 7 months ago

franfcunha commented 7 months ago

Boa tarde

Estou no processo de integrar a última versão do SDK numa aplicação que desenvolvo em C++. Para tal, estou a desenvolver um projeto minimalista baseado em Qt e C++ no qual possa testar as funcionalidades de assinatura de pdf via chave móvel digital (CMD) e cartão de cidadão (CC). Estou a trabalhar numa máquina com Linux Mint baseado em Linux 20.04.

Após descarregar os sources da lib openssl 3, compilar e instalar, gerei com sucesso os ficheiros libssl.so.3 e libcrypto.so.3 em /usr/local/lib64. Depois deste procedimento, ao executar openssl version, obtenho OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022). Depois deste passo, consegui compilar o SDK mas com os seguintes erros de linkagem: lnkErrorSDK

Suspeito que o problema esteja relacionado com alguma incompatibilidade de versões entre a biblioteca openssl instalada no sistema e aquela de que o SDK depende. Em particular, o output do comando ldd numa das libs geradas após compilar o SDK mostra a dependência libssl.so.1.1 e libcrypto.so.1.1. ldd

Consegui confirmar que libssl.so.1.1 não tem definida qualquer simbolo SSL_get1_peer_certificate o que me parece confirmar um problema de compatibilidade entre versões da lib openssl.

undefinedRef

Alguém teve o mesmo problema e/ou tem alguma sugestão de como o posso resolver?

Obrigado

franfcunha commented 7 months ago

Desculpem as várias edições, mas tentei manter o tópico atualizado à medida do meu progresso. Acabei por conseguir resolver o problema ajustando os diferentes ficheiros .pro do projeto e sub-projetos pteid-mw de forma a que as ocorrências de LIBS += -lssl -lcrypto apontassem explicitamente para a pasta /usr/local/lib64