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

Erro no SDK com última versão da aplicação do Cartão de Cidadão (3.8) #106

Open filipe202 opened 2 years ago

filipe202 commented 2 years ago

Bom dia,

Temos implementada a assinatura com Cartão de Cidadão utilizando o vosso SDK para .net há algum tempo e com a atualização para a última versão da aplicação passou a ocorrer o seguinte erro:

System.EntryPointNotFoundException: Unable to find an entry point named '?' in DLL 'pteidlibCS_Wrapper'.
   at pt.portugal.eid.pteidlib_dotNetPINVOKE.PTEID_EIDCard_getSignature(HandleRef jarg1)
   at pt.portugal.eid.PTEID_EIDCard.getSignature()

O nosso código é o seguinte:

   PTEID_ReaderSet.initSDK();
   PTEID_EIDCard card = context.getEIDCard();
 var serialNumber=  card.getSignature().getSerialNumber()

Nota: Fazendo downgrade da aplicação para a versão 3.7 funciona tudo corretamente

agrr commented 2 years ago

Boa tarde, Nós tentamos ao máximo manter a compatibilidade no interface público do SDK mas temos muita dificuldade em manter compatibilidade entre diferentes versões da camada Java/C# e nativa, devido à geração de wrappers bastante automatizada que usamos. O requisito essencial é que tem de existir match entre o SDK .net/Java e as DLLs subjacentes. O erro reportado acontece porque a pteidlib_dotnet.dll que incluem na vossa aplicação não é compatível com as DLLs nativas da versão 3.8.0 do Middleware. Todos os métodos que utilizam nesse excerto de código continuam disponíveis na v 3.8.0.

A recomendação que fazemos é que as aplicações que integrem com o SDK devem carregar sempre o JAR ou DLL .net a partir da versão instalada pelo Middleware (que tem um caminho estável) em vez de utilizar a versão inicial que existia no momento do desenvolvimento.

Adicionámos instruções para Java e .net no manual de SDK: https://amagovpt.github.io/docs.autenticacao.gov/manual_sdk.html#atualiza%C3%A7%C3%B5es-do-middleware

Pedimos desde já desculpa pelas dificuldades causadas por este upgrade e por estas instruções que estavam em falta no manual.