package gov.pr.celepar.tabeliao.client.applet; /* 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.client.applet.action.ActionAssinarEnvelopedXml; import gov.pr.celepar.tabeliao.client.applet.action.ActionAssinarEnvelopedXmlWeb; import gov.pr.celepar.tabeliao.client.applet.action.ActionAssinarEnvelopingXml; import gov.pr.celepar.tabeliao.client.applet.action.ActionAssinarEnvelopingXmlWeb; import gov.pr.celepar.tabeliao.client.applet.action.ActionAssinatura; import gov.pr.celepar.tabeliao.client.applet.action.ActionAssinaturaWeb; import gov.pr.celepar.tabeliao.client.applet.action.ActionAutenticacao; import gov.pr.celepar.tabeliao.client.applet.action.ActionHandler; import java.util.StringTokenizer; import javax.security.auth.login.LoginException; import javax.swing.JApplet; /** * Classe principal da Applet de assinatura do Tabeliao * * @version 1.2 * @author Thiago Meneghello - GIC/CELEPAR * @author Emerson Sachio Saito (alteracoes) - GIC/CELEPAR * */ public class TabeliaoApplet extends JApplet { private static final long serialVersionUID = 6020811179954029028L; private static final String ACAO_AUTENTICACAO = "autenticacao"; private static final String ACAO_ASSINATURA = "assinatura"; private static final String ACAO_ASSINATURA_WEB = "assinaturaWeb"; private static final String ACAO_DECRIPTOGRAFIA = "decriptografia"; private static final String ACAO_ASSINAR_ENVELOPEDXML = "assinarEnvelopedXml"; private static final String ACAO_ASSINAR_ENVELOPEDXML_WEB = "assinarEnvelopedXmlWeb"; private static final String ACAO_ASSINAR_ENVELOPINGXML = "assinarEnvelopingXml"; private static final String ACAO_ASSINAR_ENVELOPINGXML_WEB = "assinarEnvelopingXmlWeb"; /** * Inicializa a applet - cria e inicializa sua interface grafica. * Atualmente a applet possui apenas um botao. * O valor do botao vem do parametro VALOR_BOTAO. */ public void init() { String acao = this.getParameter("acao"); boolean semAcao = false; if(ACAO_AUTENTICACAO.equals(acao)) { handleAutenticacao(); } else if(ACAO_ASSINATURA_WEB.equals(acao)) { handleAssinaturaWeb(); } else if (ACAO_ASSINATURA.equals(acao)) { handleAssinatura(); } else if(ACAO_DECRIPTOGRAFIA.equals(acao)) { handleDecriptografia(); } else if(ACAO_ASSINAR_ENVELOPEDXML.equals(acao)) { handleAssinarEnvelopedXml(); } else if(ACAO_ASSINAR_ENVELOPEDXML_WEB.equals(acao)) { handleAssinarEnvelopedXmlWeb(); } else if(ACAO_ASSINAR_ENVELOPINGXML.equals(acao)) { handleAssinarEnvelopingXml(); } else if(ACAO_ASSINAR_ENVELOPINGXML_WEB.equals(acao)) { handleAssinarEnvelopingXmlWeb(); } else { semAcao = true; String errorMessage = "Parametro acao '" + acao + "' n�o pode ser consumido."; TabeliaoAppletUtil.showMensagem(this, errorMessage,2); } if (!semAcao){ try { TabeliaoAppletUtil.logoutSmart(); } catch (LoginException e1) { String errorMessage = "Erro ao acessar o Cart�o ou Token." + "\n Verifique a Leitora/Cart�o ou Token!" + "\n Reinicie a Aplica��o ou acione o suporte t�cnico!" + e1.getMessage(); TabeliaoAppletUtil.showMensagem(this, errorMessage,2); e1.printStackTrace(); } try { this.stop(); this.finalize(); this.destroy(); } catch (Throwable e) { e.printStackTrace(); } } } /** * Retorna o valor da cor * @param cor - Nome da cor. * @param def * @return int */ private int getCor(String cor, int def){ if(cor != null && cor.startsWith("#") && cor.length() == 7) { try { return Integer.parseInt(cor.substring(1), 16); } catch (Exception e) { } } return def; } /** * Exibe a applet de acordo com a ActionHandler * @param actionHandler -> acao a ser executada */ private void show(ActionHandler actionHandler){ String tipoForm = this.getParameter("tipoForm"); String caminhoBiblioteca = this.getParameter("caminhoBiblioteca"); String valorBotao = this.getParameter("valorBotao"); String corFundo = this.getParameter("corFundo"); String corDentro = this.getParameter("corDentro"); String corAbaSelecionada = this.getParameter("corAbaSelecionada"); String corAba = this.getParameter("corAba"); int iTipoForm = CertificadoPanel.AUTENTICACAO_TOKEN_ARQUIVO; if(tipoForm != null && tipoForm.length() > 0) { try { iTipoForm = Integer.parseInt(tipoForm); if(iTipoForm <= 0 || iTipoForm >= 4) { iTipoForm = CertificadoPanel.AUTENTICACAO_TOKEN_ARQUIVO; } } catch (Exception e) { } } if(caminhoBiblioteca == null || caminhoBiblioteca.length() == 0 || caminhoBiblioteca.equals("null")) { caminhoBiblioteca = CertificadoPanel.DEFAULT_LIB_NAME; } if(valorBotao == null || valorBotao.length() == 0 || valorBotao.equals("null")) { valorBotao = CertificadoPanel.DEFAULT_LABEL_BUTTON; } int valCorFundo = getCor(corFundo, 0xFFFFFF); int valCorDentro = getCor(corDentro, 0xEEEEEE); int valCorAbaSelecionada = getCor(corAbaSelecionada, 0xEEEEEE); int valCorAba = getCor(corAba, 0xFFFFFF); CertificadoPanel certificadoPanel = new CertificadoPanel(actionHandler, iTipoForm, valorBotao, caminhoBiblioteca, valCorFundo, valCorDentro, valCorAbaSelecionada, valCorAba); setContentPane(certificadoPanel); certificadoPanel.init(); } /** * Acao para exibir a applet para autenticacao * */ private void handleAutenticacao(){ ActionAutenticacao actionAutenticacao = new ActionAutenticacao(this); show(actionAutenticacao); } /** * Acao para exibir a applet para gerar assinatura PCKS7/CMS em ambiente servidor de aplicacao. */ private void handleAssinaturaWeb(){ ActionAssinaturaWeb actionAssinaturaWeb = new ActionAssinaturaWeb(this); show(actionAssinaturaWeb); } /** * Acao para exibir a applet para gerar assinatura PKCS7/CMS em ambiente local do usuario */ private void handleAssinatura(){ try { String nomeArquivo = this.getParameter("nomeArquivo"); String separadorArquivo = this.getParameter("separadorArquivo"); boolean anexa = true; String anexaArquivo = this.getParameter("anexaArquivo"); if(anexaArquivo == null || anexaArquivo.equals("false")) { anexa = false; } if(separadorArquivo != null) { StringTokenizer token = new StringTokenizer(nomeArquivo, separadorArquivo); String[] nomeArquivos = new String[token.countTokens()]; int i=0; while(token.hasMoreTokens()) { nomeArquivos[i++] = token.nextToken(); } show(new ActionAssinatura(this, nomeArquivos, anexa)); } else { show(new ActionAssinatura(this, nomeArquivo, anexa)); } } catch (Exception e) { String errorMessage = "Erro ao realizar a assinatura PKCS7.\n" + e.getMessage(); TabeliaoAppletUtil.showMensagem(this, errorMessage,2); } } /** * Acao para exibir a applet para gerar assinatura EnvelopedXML em ambiente local do usuario. */ private void handleAssinarEnvelopedXml(){ try { String nomeArquivo = this.getParameter("nomeArquivo"); String separadorArquivo = this.getParameter("separadorArquivo"); String nomeTagAssinar = this.getParameter("nomeTagAssinar"); String varPoliticaId = this.getParameter("politicaId"); String varPoliticaUri = this.getParameter("politicaUri"); String varContraAssinatura = this.getParameter("contraAssinatura"); boolean pContraAssinatura = false; if(varContraAssinatura.equalsIgnoreCase("true") || varContraAssinatura.equalsIgnoreCase("on")) { pContraAssinatura = true; } if(separadorArquivo != null) { StringTokenizer token = new StringTokenizer(nomeArquivo, separadorArquivo); String[] nomeArquivos = new String[token.countTokens()]; int i=0; while(token.hasMoreTokens()) { nomeArquivos[i++] = token.nextToken(); } show(new ActionAssinarEnvelopedXml(this, nomeArquivos, nomeTagAssinar, varPoliticaId, varPoliticaUri, pContraAssinatura)); } else { show(new ActionAssinarEnvelopedXml(this, nomeArquivo, nomeTagAssinar, varPoliticaId, varPoliticaUri, pContraAssinatura)); } } catch (Exception e) { String errorMessage = "Erro ao realizar a assinatura EnvelopedXML.\n" + e.getMessage(); TabeliaoAppletUtil.showMensagem(this, errorMessage,2); } } /** * Acao para exibir a applet para gerar assinatura EnvelopedXML em ambiente Servidor de aplicacao */ private void handleAssinarEnvelopedXmlWeb(){ ActionAssinarEnvelopedXmlWeb actionAssinarEnvelopedXmlWeb = new ActionAssinarEnvelopedXmlWeb(this); show(actionAssinarEnvelopedXmlWeb); } /** * Acao para exibir a applet para gerar assinatura EnvelopingXML em ambiente local do usuario. */ private void handleAssinarEnvelopingXml(){ try { String nomeArquivo = this.getParameter("nomeArquivo"); String separadorArquivo = this.getParameter("separadorArquivo"); String varPoliticaId = this.getParameter("politicaId"); String varPoliticaUri = this.getParameter("politicaUri"); if(separadorArquivo != null) { StringTokenizer token = new StringTokenizer(nomeArquivo, separadorArquivo); String[] nomeArquivos = new String[token.countTokens()]; int i=0; while(token.hasMoreTokens()) { nomeArquivos[i++] = token.nextToken(); } show(new ActionAssinarEnvelopingXml(this, nomeArquivos, varPoliticaId, varPoliticaUri)); } else { show(new ActionAssinarEnvelopingXml(this, nomeArquivo, varPoliticaId, varPoliticaUri)); } } catch (Exception e) { String errorMessage = "Erro ao realizar a assinatura EnvelopingXML.\n" + e.getMessage(); TabeliaoAppletUtil.showMensagem(this, errorMessage,2); } } /** * Acao para exibir a applet para gerar assinatura EnvelopingXML em ambiente Servidor de aplicacao */ private void handleAssinarEnvelopingXmlWeb(){ ActionAssinarEnvelopingXmlWeb actionAssinarEnvelopingXmlWeb = new ActionAssinarEnvelopingXmlWeb(this); show(actionAssinarEnvelopingXmlWeb); } //TODO - Criptografia na v2.0 /** * Acao para exibir a applet para Decriptografia. */ private void handleDecriptografia(){ //ActionAssinaturaWeb actionAssinaturaWeb = new ActionAssinaturaWeb(this); //show(actionAssinaturaWeb); } }