Java tutorial
package br.com.topsys.cd.util; import br.com.bry.comuns.io.ResetFileInputStream; import br.com.bry.pddesdk.pdde.PDDE; import br.com.bry.pddesdk.pdde.PDDEFactory; import br.com.bry.signersdk.excecoes.ExcecaoCMS; import br.com.bry.signersdk.signer.Assinador; import br.com.bry.signersdk.signer.ContextoAssinaturaCMS; import br.com.bry.x509.certificado.X509Certificado; import br.com.bry.x509.repositorios.api.RepositorioLocator; import br.com.bry.x509.repositorios.api.TipoRepositorio; import br.com.bry.x509.repositorios.excecoes.ExcecaoX509Repositorio; import br.com.bry.x509.repositorios.interfaces.IRepositorio; import br.com.bry.x509.util.AlgoritmoHash; import br.com.topsys.cd.exception.CertificadoDigitalException; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author andre */ public class AssinarArquivo { private static Assinador assinador; private static X509Certificado certificado; private static String caminho = "c://teste//"; private static final String nomeArquivo = "bytes_prontuario.txt"; private static IRepositorio repositorioMozilla; public static void main(String args[]) throws Exception { InputStream assinatura = AssinarArquivo.assinarDocumento(); byte[] assinatura_binario = IOUtils.toByteArray(assinatura); FileUtils.writeByteArrayToFile( new File(caminho + "assinados//" + "assinatura_detached_bytes_prontuario.p7s"), assinatura_binario); } public static InputStream assinarDocumento() throws CertificadoDigitalException { InputStream retorno = null; try { repositorioMozilla = RepositorioLocator.carregaRepositorio(TipoRepositorio.MOZILLA); repositorioMozilla.inicializa(null); if (repositorioMozilla.getNumeroCertificados() != 0) { assinador = new Assinador(repositorioMozilla); //Cria assinador passando repositorio como parametro certificado = repositorioMozilla.getTodosCertificados().get(0); PDDE carimbo = PDDEFactory.getPDDE("pdde-teste.bry.com.br"); carimbo.setPorta(318); carimbo.setCertReq(false); Assinador assinador = new Assinador(repositorioMozilla); assinador.setCarimbadora(carimbo); assinador.setCarregaCadeiaRepositorio(true); assinador.setObterLCROnline(true); // adiciona a lista de certificados revogados na assinatura List<InputStream> docs = new ArrayList<InputStream>(); docs.add(new ResetFileInputStream(new File(caminho + nomeArquivo))); ContextoAssinaturaCMS contexto = new ContextoAssinaturaCMS(certificado, docs); contexto.setIncluirCarimbo(true); contexto.setAlgoritmoHash(AlgoritmoHash.SHA256); contexto.setAttached(true); retorno = assinador.assinar(contexto).get(0); } } catch (ExcecaoCMS ex) { throw new CertificadoDigitalException("Erro assinando o documento!", ex); } catch (ExcecaoX509Repositorio ex) { Logger.getLogger(AssinarArquivo.class.getName()).log(Level.SEVERE, null, ex); } catch (FileNotFoundException ex) { Logger.getLogger(AssinarArquivo.class.getName()).log(Level.SEVERE, null, ex); } return retorno; } public static List<InputStream> assinarDetached() throws Exception { repositorioMozilla = RepositorioLocator.carregaRepositorio(TipoRepositorio.MOZILLA); repositorioMozilla.inicializa(null); if (repositorioMozilla.getNumeroCertificados() != 0) { assinador = new Assinador(repositorioMozilla); //Cria assinador passando repositorio como parametro certificado = repositorioMozilla.getTodosCertificados().get(0);// Define a posi?o do certificado no repositorio que sera utilizado para assinar o documento assinador.addCadeiaCertificacao(true); //adiciona a cadeia de certificados na assinatura assinador.addLCRs(true); // adiciona a lista de certificados revogados na assinatura PDDE carimbo = PDDEFactory.getPDDE("pdde-teste.bry.com.br"); carimbo.setPorta(318); carimbo.setCertReq(false); assinador.setCarimbadora(carimbo); ArrayList<InputStream> docs = new ArrayList<InputStream>();// Cria uma lista de documentos que serao assinados docs.add(new ResetFileInputStream(new File(caminho + nomeArquivo)));// Adiciona os documentos no contexto assinatura ContextoAssinaturaCMS contexto = new ContextoAssinaturaCMS(certificado, docs);// Cria ContextoAssinaturaCMS para definir os valores da assinatura; contexto.setIncluirCarimbo(true); //contexto.setCadeia(SignerUtil.carregaCadeiaDeDiretorio(caminho + "cadeia",contexto.getCertificado()));// Adiciona a cadeia para a assinatura. (Parametro opcional) contexto.setIncluirDocumento(false);// Configura tipo de assiantura Attached ou Detached contexto.setAlgoritmoHash(AlgoritmoHash.SHA256);// Configura o algoritmo Hash. So somente suportados os algoritmos SHA1, SHA256 e SHA512 return assinador.assinar(contexto); } return null; } }