Open pilhaDePilhas opened 3 years ago
Viva, também já instalei manualmente os certificados presentes na pagina: https://www.scee.gov.pt/rep/certificados/ . Infelizmente sem sucesso.
Viva, Efectivamente existe um problema com o método "card.getRoot()". Vamos adicionar a nossa lista de "backlog" a sua resolução.
Entretanto, para tentar resolver o teu problema e pensando que estejas a construir a cadeia completa, podes ver como nós fazemos isso na nossa aplicação: https://github.com/amagovpt/autenticacao.gov/blob/46c709800ae30a0a4cc7c2cd845f2cb5a0b71038/pteid-mw-pt/_src/eidmw/eidguiV2/gapi.cpp#L3131
Basicamente vamos construindo a cadeia, partindo do certificado do Cidadão e usando o método "cert.getIssuer()" até chegar ao root. Isto funciona para o teu problema? Se não resolver, explica em detalhe o que pretende fazer. Obrigado.
Olá @ACamposPT ,
necessito de assinar um XML sendo que o certificado a usar é o certificado ROOT para obter a privateKey do CC, ou poderei usar também o certificado CA para esse efeito?
Boa tarde, ao assinar um XML o certificado a utilizar para validar a mesma assinatura deverá ser o certificado de assinatura ou de autenticação do cidadão (dependendo do parãmetro boolean passado no método PTEID_EIDCard.Sign), nunca o certificado root da cadeia. Estes certificados podem ser obtidos usando os métodos:
https://amagovpt.github.io/docs.autenticacao.gov/sdk/java/pt/gov/cartaodecidadao/PTEID_Certificates.html#getSignature-- https://amagovpt.github.io/docs.autenticacao.gov/sdk/java/pt/gov/cartaodecidadao/PTEID_Certificates.html#getAuthentication--
O processo que o @ACamposPT apontou no código da nossa aplicação serve para construir a cadeia de certificados completa (pode ser necessária para o cenário específico de validação).
A melhoria que queremos implementar numa futura versão do SDK será adicionar um método getCertificateChain
na classe PTEID_Certificates
que devolva a cadeia completa e ordenada para o certificado de assinatura ou de autenticação.
Atualmente, para fazer isto é necessário chamar sucessivamente o método PTEID_Certificate.getIssuer
até obter um objeto PTEID_Certificate que verifique esta condição certificate.isRoot() == true
Boas,
segundo a documentação dos Exmos. para a obtenção do certificado root , deverá ser utilizado o método getRoot().
`
`
No entanto, é apresentado o seguinte erro: Exception thrown: 'pt.portugal.eid.PTEID_ExCertNoRoot' in pteidlib_dotnet.dll An unhandled exception of type 'pt.portugal.eid.PTEID_ExCertNoRoot' occurred in pteidlib_dotnet.dll Erro na aplicação.
Algo de errado no meu ambiente? A obtenção dos restantes certificados resulta, apenas e só o certificado root apresenta este erro.