/**
*
*/
package net.conselldemallorca.helium.applet.signatura;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.net.URL;
import es.caib.signatura.api.SignatureException;
import es.caib.signatura.api.Signer;
import es.caib.signatura.api.SignerFactory;
import es.caib.signatura.api.UpgradeNeededException;
/**
* Applet per a la signatura de documents digitals emprant el plugin de la CAIB
*
* @author Limit Tecnologies <limit@limit.es>
*/
public class SignaturaAppletCaib extends SignaturaApplet {
private Signer signer;
@Override
public void initSigner() throws NecessitaActualitzarException {
getSigner();
}
@Override
public String[] getCertList(String params) throws ObtencioCertificatsException {
try {
return getSigner().getCertList(params);
} catch (Exception ex) {
ex.printStackTrace();
throw new ObtencioCertificatsException("No s'ha pogut obtenir la llista de certificats disponibles", ex);
}
}
@Override
public Object sign(
byte[] inputDocument,
String certName,
String password,
String params) throws SignaturaException, ContrasenyaIncorrectaException {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
getSigner().signPDF(
new ByteArrayInputStream(inputDocument),
baos,
certName,
new String(password),
params,
"http://www.limit.es",
Signer.PDF_SIGN_POSITION_NONE,
true);
return baos.toByteArray();
} catch (SignatureException ex) {
ex.printStackTrace();
throw new ContrasenyaIncorrectaException("Contrasenya incorrecta", ex);
} catch (Exception ex) {
ex.printStackTrace();
throw new SignaturaException("No s'ha pogut signar el document", ex);
}
}
public URL getUrlActualitzacio() {
try {
return new URL("http://www.caib.es/signaturacaib/");
} catch (Exception ignored) {}
return null;
}
private Signer getSigner() throws NecessitaActualitzarException {
if (signer == null) {
SignerFactory sf = new SignerFactory();
try {
return sf.getSigner();
} catch (UpgradeNeededException ex) {
throw new NecessitaActualitzarException("No s'ha pogut inicialitzar la instància del signer", getUrlActualitzacio(), ex);
}
}
return signer;
}
private static final long serialVersionUID = 1L;
}