Comments (6)
Boa tarde,
Está seguindo esse exemplo:?
from signer.
Bom dia! Analisei o exemplo que você informou, meu algorítimo está na mesma linha, setei as informações necessárias para realizar a assinatura. Para fins de entendimento, segue a instrução problemática:
for (AlgAndLength algLength : signaturePolicy.getSignPolicyInfo().getSignatureValidationPolicy()
.getCommonRules().getAlgorithmConstraintSet().getSignerAlgorithmConstraints().getAlgAndLengths()) {
listOfAlgAndLength.add(algLength);
}
signaturePolicy.getSignPolicyInfo().getSignatureValidationPolicy().getCommonRules()
Até esse get, tudo ok, porém, quando é chamado o próximo get, o objeto está null
signaturePolicy.getSignPolicyInfo().getSignatureValidationPolicy().getCommonRules().getAlgorithmConstraintSet()
Por algum motivo, no momento de converter o arquivo que recebo da rede ( "http://politicas.icpbrasil.gov.br/PA_AD_RB_v2_3.der") para um objeto java, não está caindo em nenhuma condição do case no método parse da classe CommonRules.
from signer.
Também estou recebendo este erro no momento da assinatura, nos meus teste observei que o problema é a versão do Bouncy Castle, eu estava justamente tentando atualizar para uma versão mais nova (1.70) que não possui vulnerabilidade, mas pelo que vi a assinatura só funciona se utilizar a versão 1.62 que possui 1 vulnerabilidade, @esaito existe plano para uma atualização da dependência?
from signer.
Também estou recebendo este erro no momento da assinatura, nos meus teste observei que o problema é a versão do Bouncy Castle, eu estava justamente tentando atualizar para uma versão mais nova (1.70) que não possui vulnerabilidade, mas pelo que vi a assinatura só funciona se utilizar a versão 1.62 que possui 1 vulnerabilidade, @esaito existe plano para uma atualização da dependência?
Existe sim, por enquanto o que falta é tempo para desenvolvimento. Houve um colega da comunidade que chegou a fazer o upgrade e submeteu o código mas acabou quebrando uma outra parte que monta os atributos da ICP-Brasil, o código ficou neste branch: https://github.com/demoiselle/signer/tree/revert-346-master
from signer.
Bom dia! Analisei o exemplo que você informou, meu algorítimo está na mesma linha, setei as informações necessárias para realizar a assinatura. Para fins de entendimento, segue a instrução problemática:
for (AlgAndLength algLength : signaturePolicy.getSignPolicyInfo().getSignatureValidationPolicy() .getCommonRules().getAlgorithmConstraintSet().getSignerAlgorithmConstraints().getAlgAndLengths()) { listOfAlgAndLength.add(algLength); }
signaturePolicy.getSignPolicyInfo().getSignatureValidationPolicy().getCommonRules()
Até esse get, tudo ok, porém, quando é chamado o próximo get, o objeto está null
signaturePolicy.getSignPolicyInfo().getSignatureValidationPolicy().getCommonRules().getAlgorithmConstraintSet()
Por algum motivo, no momento de converter o arquivo que recebo da rede ( "http://politicas.icpbrasil.gov.br/PA_AD_RB_v2_3.der") para um objeto java, não está caindo em nenhuma condição do case no método parse da classe CommonRules.
Chegou a executar o teste do código de exemplo?
Tem como compartilhar o seu código completo?
from signer.
Sim tentei executar o teste do código de exemplo.
Está ainda não é a versão final, mas segue os métodos.
public synchronized byte[] assinarDigitalmenteOnline(String senha, String uuid, Documento documento)
throws NoSuchAlgorithmException, CertificateException, KeyStoreException, IOException,
UnrecoverableKeyException {
CAManagerConfiguration config = CAManagerConfiguration.getInstance();
config.setCached(false);
ConfigurationRepo configRepo = ConfigurationRepo.getInstance();
configRepo.setOnline(false);
configRepo.setCrlPath("/tmp/crl_cache/");
configRepo.setOnlineLPA(false);
configRepo.setLpaPath("/tmp/lpa/");
TimeStampConfig tsConfig = TimeStampConfig.getInstance();
tsConfig.setTimeOut(100);
tsConfig.setConnectReplay(5);
CertificadoICPBrasil certficado = this.carregarCertificado(senha, uuid);
byte[] doc = this.downloadDocumento(documento);
KeyStore ks = this.criarKeyStore(uuid, senha);
PKCS7Signer signer = PKCS7Factory.getInstance().factoryDefault();
signer.setCertificates(ks.getCertificateChain(certficado.getAlias()));
signer.setPrivateKey((PrivateKey) ks.getKey(certficado.getAlias(), senha.toCharArray()));
signer.setAlgorithm(SignerAlgorithmEnum.SHA512withRSA);
if (System.getProperty("os.name").contains("indows")) {
signer.setAlgorithm(SignerAlgorithmEnum.SHA256withRSA);
}
return signer.doDetachedSign(doc);
}
private synchronized KeyStore criarKeyStore(String uuid, String senha) {
return KeyStoreLoaderFactory.factoryKeyStoreLoader(new ByteArrayInputStream(this.downloadCertificado(uuid)))
.getKeyStore(senha);
}
private CertificadoICPBrasil carregarCertificado(String senha, String uuid)
throws NoSuchAlgorithmException, CertificateException, KeyStoreException, IOException {
return CertificadoUtil.carregarCertificado(this.downloadCertificado(uuid), senha);
}
public class CertificadoUtil {
public synchronized static CertificadoICPBrasil carregarCertificado(byte[] certificado, String senha)
throws NoSuchAlgorithmException, CertificateException, IOException, KeyStoreException {
X509Certificate x509 = null;
InputStream cert = new ByteArrayInputStream(certificado);
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(cert, senha.toCharArray());
CertificadoICPBrasil certificadoICPBrasil = null;
Enumeration<String> enumeration = ks.aliases();
while (enumeration.hasMoreElements()) {
String alias = enumeration.nextElement();
x509 = (X509Certificate) ks.getCertificate(alias);
CertificateManager cm = new CertificateManager(x509);
certificadoICPBrasil = cm.load(CertificadoICPBrasil.class);
certificadoICPBrasil.setAlias(alias);
}
return certificadoICPBrasil;
}
}
OBS: Utilizo o SpringBoot, e já verifiquei tanto o certificado, KeyStore, PrivateKey, CertificateChain, e o próprio documento, e nenhum desses objetos estão nulos.
from signer.
Related Issues (20)
- Erro ao tentar carregar objeto ICPBrasilCertificate de um certificado de equipamento que não possui dados no campo BIRTH_DATE
- Assinatura em parte do documento XML HOT 4
- Problemas no retorno do keystore ao utilizar biblioteca. HOT 1
- erro com código exemplo
- Melhorias nas logs
- Atualização na lista de drivers
- Atualização do arquivo de cadeias
- Erro na configuração de uso de proxy
- Atualizar documentação 4.2.0
- Recuperar LCR por protocolo HTTPS
- Método para recuperar LCR subindo exceção
- Correções de português em mensagens de erros.
- Atualizar arquivo de LPA
- Alterar nível do log do aviso do vencimento da Lista de políticas de assinatura do componente
- Variável de configuração para cache de arquivo de cadeias
- Não foi possível resgatar as CAs do certificado no provedor HOT 2
- Lançamento da versão 4.2.1
- Erro na declaração de versões de dependências
- Erro em configuração de arquivo de propriedades
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from signer.