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
171 stars 33 forks source link

Novo cartão com ECDSA erro Windows Smart Card #177

Closed zoao closed 2 months ago

zoao commented 3 months ago

Os novos cartões do cidadão com o algoritmo criptográfico ECDSA, estão a dar o seguinte erro ao tentarmos usar as bibliotecas do sistema operativo. Isto acontece na nossa aplicação desenvolvida em .Net 6 com as bibliotecas System.Security.Cryptography, depois de adicionarmos manualmente o algoritmo: Ecdsa256SignatureDescription

Mas tambem acontece o mesmo erro por exemplo se tentamos assinar um ficheiro com o Word.

No entanto se usarmos a aplicação autenticação.gov 3.12.0, a assiantura funciona bem.

O erro que dá é: "O smart card não pode efectuar a operação pedida ou esta necessita de um smart card diferente" ErroWord

agrr commented 3 months ago

Essa mensagem de erro pode ter várias causas, mas no vosso caso já que estão a utilizar leitor contactless, poderá ser porque o módulo de integração (minidriver) não se conseguiu autenticar no cartão com o protocolo PACE.

Para isto é necessário que o CAN (card access number) que é fornecido na primeira leitura na aplicação Autenticação.gov esteja guardado no registry em HKEY_CURRENT_USER\SOFTWARE\PTEID\can_cache. Este registo criado pela aplicação guarda o CAN do último cartão lido com sucesso. Se este registo não existir, estiver vazio ou com uma valor errado para o cartão atual, o módulo minidriver não consegue comunicar com o cartão em interface contactless.

No cenário mais comum de utilizador final tipicamente só vai utilizar um Cartão de Cidadão num determinado PC e utilizador logo este esquema funciona. Em situação de desenvolvimento é muito normal lermos vários cartões e como tal esse erro pode acontecer.

zoao commented 2 months ago

Obrigado @agrr , só hoje conseguimos confirmar com o leitor de cartões sem ser contact less e confirmo que a assinatura funcionou bem.

No entanto tendo em conta que o novo cartão tem a opção contact less e para alguns ambientes de trabalho, é normal que no mesmo computador passem vários utilizadores e cartões do cidadão, por isso parece-me que isto vai gerar alguns problemas... Mas para já vamos aconselhar a não usarem a opção de contact less