/*
* 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.
*/
package br.gov.serpro.certificate.ui.user;
import java.io.File;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.UnrecoverableKeyException;
import javax.swing.JOptionPane;
import br.gov.frameworkdemoiselle.certificate.signer.factory.PKCS7Factory;
import br.gov.frameworkdemoiselle.certificate.signer.pkcs7.PKCS7Signer;
import br.gov.frameworkdemoiselle.certificate.signer.pkcs7.bc.policies.ADRBCMS_2_1;
import br.gov.frameworkdemoiselle.certificate.ui.action.AbstractFrameExecute;
import br.gov.frameworkdemoiselle.certificate.ui.util.ConectionException;
import br.gov.frameworkdemoiselle.certificate.ui.util.Utils;
import br.gov.frameworkdemoiselle.certificate.ui.view.Principal;
/**
*
* @author 07721825741
*/
public class App extends AbstractFrameExecute {
String jnlpIdentifier = "";
String jnlpService = "";
/**
* Carrega as variaveis do arquivo jnlp
*/
public App() {
jnlpIdentifier = System.getProperty("jnlp.identifier");
jnlpService = System.getProperty("jnlp.service");
System.out.println("jnlp.identifier..: " + jnlpIdentifier);
System.out.println("jnlp.service.....: " + jnlpService);
}
@Override
public void execute(KeyStore ks, String alias, Principal principal) {
try {
if (jnlpIdentifier == null || jnlpIdentifier.isEmpty()) {
JOptionPane.showMessageDialog(principal, "A variavel \"jnlp.identifier\" não está configurada.", "Erro", JOptionPane.ERROR_MESSAGE);
return;
}
if (jnlpService == null || jnlpService.isEmpty()) {
JOptionPane.showMessageDialog(principal, "A variavel \"jnlp.service\" não está configurada.", "Erro", JOptionPane.ERROR_MESSAGE);
return;
}
/* Parametrizando o objeto doSign */
PKCS7Signer signer = PKCS7Factory.getInstance().factoryDefault();
signer.setCertificates(ks.getCertificateChain(alias));
signer.setPrivateKey((PrivateKey) ks.getKey(alias, null));
signer.setSignaturePolicy(new ADRBCMS_2_1());
signer.setAttached(true);
/* Realiza a assinatura do conteudo */
System.out.println("Efetuando a assinatura do conteudo");
Utils utils = new Utils();
//Faz o download do conteudo a ser assinado
String conexao = jnlpService.concat("/download/").concat(jnlpIdentifier);
System.out.println("Conectando em....: " + conexao);
byte[] content = utils.downloadFromUrl(conexao);
byte[] signed = signer.signer(content);
// Grava o conteudo assinado no disco para verificar o resultado
utils.writeContentToDisk(signed, System.getProperty("user.home").concat(File.separator).concat("resultado.p7s"));
//Faz o upload do conteudo assinado
// utils.uploadToURL(signed, jnlpService.concat("/upload/").concat(jnlpIdentifier));
utils.uploadToURL(signed, jnlpService.concat("/upload/"));
JOptionPane.showMessageDialog(principal, "O arquivo foi assinado com sucesso.", "Mensagem", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
} catch (KeyStoreException | NoSuchAlgorithmException | UnrecoverableKeyException | ConectionException ex) {
JOptionPane.showMessageDialog(principal, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
@Override
public void cancel(KeyStore ks, String alias, Principal principal) {
/* Seu codigo customizado aqui... */
System.out.println("br.gov.serpro.certificate.ui.user.App.cancel()");
principal.setVisible(false); //you can't see me!
principal.dispose(); //Destroy the JFrame object
}
}