Migrar e refatorar os códigos fontes originais do projeto certificate.
Mudanças nas estruturas de organização e pacotes.
Incluir as funcionalidades da versão 1.1.x, que não haviam sido implementada na 2.0.0: JNLP.
Incluir as funcionalidades da solução Agent (Desktop e UI).
Existe a necessidade de discutir a maneira como o componente se comporta ao lidar com cadeia de autoridades confiáveis.
É responsabilidade do componente ficar atualizado? Pode ser um ponto único de manutenção em caso de atualizações mas também pode ser gargalo para projetos.
O componente pode utilizar o campo "Authority Information Access" caso exista? Não é um campo obrigatório, mas a maioria das ACs da ICP-Brasil geram certificados com esse campo preenchido. Referência: https://tools.ietf.org/html/rfc5280#section-4.2.2.1. OBS: É uma informação On-Line, acesso semelhante às LCRs.
É possível manter um arquivo "JAR" assinado e on-line que implementasse a mesma funcionalidade do demoiselle-ca-icpbrasil.jar mas de forma a consumir o arquivo "ACcompactados.zip" do ITI. As applets ou JavaWebStarts que utilizarem este JAR on-line, deverão apontá-lo em seus descritores. JavaWebStart no arquivo JNLP e a Applet na tag "<object applet" do arquivo HTML.
Hoje da maneira que esta estruturado o componente é necessário passar o alias do certificado e os caminhos para assinar.
O ideal seria somente chamar uma função signFile sem parâmetros e o componente verificar se existe apenas 1 certificado, e se for o caso pedir o arquivos para assinar.
Recentemente instalei o driver do token WatchData (token USB branco SERPRO) e a pasta "default" de instalação é a "C:\Windows\System32\WatchData\Watchdata ICP CSP v1.0\WDPKCS.dll" mas o componente aponta para a pasta "C:\Windows\System32\WatchdataWatchdata Brazil CSP v1.0\WDPKCS.dll".
A política mais usada através do componente é a de Referência Básica 2.1 do ITI. Esta política está sinalizada como vigente até 28/11/2016 e pode ser estendida até final de fevereiro de 2017. Com isso o ITI já liberou a nova versão 2.2 para uso.
As validações no verificador do ITI, das assinaturas no componente atual, estão com esse erro:
Nome do atributo:IdAaEtsSigPolicyId
Corretude: Inválido
Mensagem de erro:Inconsistência no IdAaEtsSigPolicyIdentifier. Os resumos criptográficos do atributo e da PA não são os mesmos.
A aplicação desktop "agent-desktop" não funciona ao rodar mais vezes. Ele cria o TryIcon todas as vezes e se perde depois ao tentar fechar cada instância. A princípio nem poderia rodar mais de uma vez, já que o uso do driver USB é por aplicação e pode dar muitos problemas.
Ao tentar utilizar a versão BETA1 com certificado A3, estou recebendo a seguinte exceção:
Exception in thread "main" org.demoiselle.signer.signature.core.exception.CertificateCoreException: Error trying get Keyvalue CPF at org.demoiselle.signer.signature.core.extension.ICPBrasilExtensionLoader.load(ICPBrasilExtensionLoader.java:277) at org.demoiselle.signer.signature.core.CertificateManager.load(CertificateManager.java:111) at org.demoiselle.signer.signature.core.CertificateManager.load(CertificateManager.java:127) at br.com.telessaude.pdfsign.App.getICPBrasilCertificate(App.java:45) at br.com.telessaude.pdfsign.App.main(App.java:76) Caused by: java.lang.ClassCastException: org.demoiselle.signer.signature.core.oid.OIDGeneric cannot be cast to org.demoiselle.signer.signature.core.oid.OID_2_16_76_1_3_1 at org.demoiselle.signer.signature.core.extension.CertificateExtra.getOID_2_16_76_1_3_1(CertificateExtra.java:153) at org.demoiselle.signer.signature.core.extension.ICPBRSubjectAlternativeNames.<init>(ICPBRSubjectAlternativeNames.java:58) at org.demoiselle.signer.signature.core.extension.BasicCertificate.getICPBRSubjectAlternativeNames(BasicCertificate.java:286) at org.demoiselle.signer.signature.core.extension.BasicCertificate.hasCertificatePF(BasicCertificate.java:313) at org.demoiselle.signer.signature.core.extension.ICPBrasilExtensionLoader.load(ICPBrasilExtensionLoader.java:59) ... 4 more
Retirar as classes de especificação das policitas das autoridades raízes com o objetivo de não confundir o desenvolvimento, pois nesta versão já existe a automação da leitura destas políticas.