Register / Login  |  Desktop view  |  Jump to bottom of page

General Issues » Problem sign documento

Author: javimartinez, Visitor
14/10/2008 12:39:36
Hello,

We are using JCAPI 1.2 to sign PDF documents with a applet. It has been working ok for one year, but now we have a exception in the computer of a new user. The exception is:


com.pheox.jcapi.JCAPIJNIRuntimeException: Exception raised in JCAPI.DLL:
JCAPISignature_sign() - Could not acquire a key container handle.
at com.pheox.jcapi.CoreSignatureJNI.sign(Native Method)
at com.pheox.jcapi.h.b(Unknown Source)
at com.pheox.jcapi.l.engineSign(Unknown Source)
at java.security.Signature$Delegate.engineSign(Unknown Source)
at java.security.Signature.sign(Unknown Source)
at com.lowagie.text.pdf.PdfPKCS7.getEncodedPKCS7(Unknown Source)
at com.lowagie.text.pdf.PdfPKCS7.getEncodedPKCS7(Unknown Source)
at com.lowagie.text.pdf.PdfSigGenericPKCS.setSignInfo(Unknown Source)
at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
at com.lowagie.text.pdf.PdfSignatureAppearance.preClose(Unknown Source)
at com.lowagie.text.pdf.PdfStamper.close(Unknown Source)
at es.com.mipaquete.appletFirma.AppletFirmaJCAPI.signDoc(AppletFirmaJCAPI.java:217)
at es.com.mipaquete.appletFirma.AppletFirmaJCAPI.firmar(AppletFirmaJCAPI.java:192)
at es.com.mipaquete.appletFirma.AppletFirmaJCAPI.firmarDocumentos(AppletFirmaJCAPI.java:161)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin.com.DispatchImpl.invoke(Unknown Source)


however, we have accessed to key container before to shows to the user the certificates he can select.

The code that cause the error (and work in others computers) is:


private String signDoc(String doc, String razon, String lugar) throws Exception
{
byte[] bytes = doc.getBytes();
byte[] decoded = Base64Util.decode(bytes);
PrivateKey key = (PrivateKey)ks.getKey(aliasSeleccionado, null);
Certificate[] chain = ks.getCertificateChain(aliasSeleccionado);
PdfReader reader = new PdfReader(decoded);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stp = PdfStamper.createSignature(reader, baos, '\0');
PdfSignatureAppearance sap = stp.getSignatureAppearance();
sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
sap.setReason(razon);
sap.setLocation(lugar);
stp.close();
byte[] signedBytes = Base64Util.encode(baos.toByteArray());
String res = new String(signedBytes);
return res;
}


(the line is "stp.close();")


The only difference between the computer of this user is that it goes with Java Virtual Machine 1.5._07, that is oldest than other user“s virtual machine

Thanks and sorry bad english




Register / Login  |  Desktop view  |  Jump to top of page