package gov.pr.celepar.tabeliao.client.form; /* Este programa � licenciado de acordo com a LPG-AP (LICEN�A P�BLICA GERAL PARA PROGRAMAS DE COMPUTADOR DA ADMINISTRA��O P�BLICA), vers�o 1.1 ou qualquer vers�o posterior. A LPG-AP deve acompanhar todas PUBLICA��ES, DISTRIBUI��ES e REPRODU��ES deste Programa. Caso uma c�pia da LPG-AP n�o esteja dispon�vel junto com este Programa, voc� pode contatar o LICENCIANTE ou ent�o acessar diretamente: http://www.celepar.pr.gov.br/licenca/LPG-AP.pdf Para poder USAR, PUBLICAR, DISTRIBUIR, REPRODUZIR ou ALTERAR este Programa � preciso estar de acordo com os termos da LPG-AP */ import gov.pr.celepar.tabeliao.util.Base64Utils; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.struts.validator.ValidatorForm; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * Classe que extende ValidatorForm (struts) para ser utilizada para geracao de * assinatura em formato XMl em ambiente Servidor (WEB). * Fornece os metodos para recuperar os arquivos assinados. * * @author Emerson Sachio Saito - GIC/CELEPAR * */ public class TabeliaoAssinaturaXmlWebForm extends ValidatorForm { private static final long serialVersionUID = 4505354277218770615L; private String[] campoArquivosXmlAssinados; /** * * @return array de string com o conteudo de todos os arquivos que foram assinados, codificados em base64. */ public String[] getCampoArquivosXmlAssinados() { return campoArquivosXmlAssinados; } /** * * @param campoArquivosXmlAssinados -> array de string com o conteudo dos arquivos assinados. */ public void setCampoArquivosXmlAssinados(String[] campoArquivosXmlAssinados) { this.campoArquivosXmlAssinados = campoArquivosXmlAssinados; } /** * * @return matriz de bytes contendo em cada linha o conteudo dos arquivos assinados, decodificados da * base64. */ public byte[][] getConteudoCampoArquivosXmlAssinados() { if(campoArquivosXmlAssinados == null) { return null; } byte[][] conteudoCampo = new byte[campoArquivosXmlAssinados.length][]; for(int i=0 ; i<campoArquivosXmlAssinados.length ; i++) { conteudoCampo[i] = Base64Utils.base64Decode(campoArquivosXmlAssinados[i]); } return conteudoCampo; } /** * * @return Lista dos arquivos assinados no formato Document (XML), decodificados e validos. * @throws SAXException * @throws IOException * @throws ParserConfigurationException */ public List<Document> getArquivosXmlAssinados() throws SAXException, IOException, ParserConfigurationException { if(campoArquivosXmlAssinados == null) { return null; } List<Document> ArquivosXml = new ArrayList<Document>(); byte[][] conteudo = new byte[campoArquivosXmlAssinados.length][]; for(int i=0 ; i<campoArquivosXmlAssinados.length ; i++) { conteudo[i] = Base64Utils.base64Decode(campoArquivosXmlAssinados[i]); } for(int j=0 ; j<campoArquivosXmlAssinados.length ; j++) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); Document docAssinado = null; InputSource novoImput = new InputSource(new ByteArrayInputStream(conteudo[j])); docAssinado = dbf.newDocumentBuilder().parse(novoImput); ArquivosXml.add(docAssinado); } return ArquivosXml; } }