Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

O tamanho das informações extras do certificado não está correto. Dever ser igual a 2 #417

Open
icemagno opened this issue Jul 26, 2024 · 4 comments

Comments

@icemagno
Copy link

Quando eu faço isso:

Enumeration<String> e = keyStore.aliases();
String issuer = "";
while (e.hasMoreElements() && issuer.indexOf("CN=Autoridade Certificadora de Defesa") < 0) {
	alias = e.nextElement();
	logger.info("Pegando o certificado do alias " + alias);
	X509Certificate certificate = (X509Certificate) keyStore.getCertificate(alias);

	CertificateManager	cm = new CertificateManager( cert );
	CertICPBrasil cert = cm.load(CertICPBrasil.class);
	
	logger.info("  Nome.........:" + cert.getNome());
	logger.info("  CPF..........:" + cert.getCpf());
	logger.info("  ID...........:" + cert.getId());
	logger.info("  CEI..........:" + cert.getCei());
	logger.info("  BIRTH........:" + cert.getBirthDate());
	logger.info("  E-mail.......:" + cert.getEmail());
	logger.info("  Cert-Level...:" + cert.getCert_level());
	logger.info("  Cert-Type....:" + cert.getCert_type());
	logger.info("  ID Dispacher.:" + cert.getId_dispatcher());
	logger.info("  UF Dispacher.:" + cert.getUf_dispatcher());    

	issuer = certificate.getIssuerX500Principal().getName("RFC1779");
	logger.info(issuer);
}

Eu recebo o erro: O tamanho das informações extras do certificado não está correto. Dever ser igual a 2 e os dados do certificado vem apenas com nome e certLevel.

Mas se eu faço isso:

logger.info("Validando a assinatura");
CAdESChecker checker = new CAdESChecker();
AttachedContentValidation acv = checker.getAttached(signed, true);
byte[] content = acv.getExtractedContent();
List<SignatureInformations> sigData = acv.getSignaturesInfo();
logger.info("Assinado por: ");
for (SignatureInformations si : sigData) {
	CertificateManager cm = new CertificateManager( si.getIcpBrasilcertificate().getX509Certificate() );
	CertICPBrasil cert = cm.load(CertICPBrasil.class);
	logger.info("  Nome.........:" + cert.getNome());
	logger.info("  CPF..........:" + cert.getCpf());
	logger.info("  ID...........:" + cert.getId());
	logger.info("  CEI..........:" + cert.getCei());
	logger.info("  BIRTH........:" + cert.getBirthDate());
	logger.info("  E-mail.......:" + cert.getEmail());
	logger.info("  Cert-Level...:" + cert.getCert_level());
	logger.info("  Cert-Type....:" + cert.getCert_type());
	logger.info("  ID Dispacher.:" + cert.getId_dispatcher());
	logger.info("  UF Dispacher.:" + cert.getUf_dispatcher());        	
}

Os dados do certificado vem todos completos. O Token, Alias e KeyStore são exatamente os mesmos, sendo que o primeiro código eu pego ANTES de assinar e o segundo código eu pego do PKCS#7 assinado por ele.

Qual é a diferença nesse caso?

@esaito
Copy link
Member

esaito commented Jul 26, 2024

Percebi que esse erro ocorre com JRE acima da versão 17. Me parece que seja na forma como o certificado é armazenado no keystore daquele que fica na assinatura, e que diante disso alguma classe da JRE que é usada pelo BouncyCastle interpreta diferente.

@icemagno
Copy link
Author

Alguma linha de ação? Posso tentar resolver aqui e te passo a solução. Mas preciso de um norte.

@esaito
Copy link
Member

esaito commented Jul 29, 2024

De imediato, só baixando a versão da JRE que estiver usando.

Para resolver isso completamente serão dois grandes passos a serem feitos.
1 - Atualizar o Demoiselle-Signer para utilizar a versão mais atual do Java, desse passo a parte mais complicada é o PKCS11 que mudou bastante, e a parte de leitura das libs do dispositivos (token, leitura, nuvem, etc...) terá que ser revisitada.
2 - O segundo passo será a atualização para o BouncyCastle mais atual, que também demanda atualização de código, se não me enganei tem alguém na comunidade que se dispôs a ver isso.

@esaito
Copy link
Member

esaito commented Dec 26, 2024

#402

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants