ctt-gob-es / clienteafirma

Cliente @firma
http://administracionelectronica.gob.es/ctt/clienteafirma
247 stars 120 forks source link

No funciona la firma móvil de PDF/A-1 con la versión 1.8 #335

Closed fernandouribe closed 1 year ago

fernandouribe commented 1 year ago

Se produce un error al intentar firmar un fichero PDF en formato PDF/A-1 desde el "Cliente móvil @firma" versión 1.8 en los siguientes dispositivos móviles. Este error no se produce con la versión 1.7 anterior, ni con las versiones PDF/A-2 y PDF/A-3 y la versión 1.8

  1. Samsung A-13, Android 13
  2. iPhone 11, iOS 16.3.1

En el log del cliente de firma de Android 13 se ve el siguiente error:

05-08 14:05:18.193 22186 22278 I es.gob.afirma: Detectado PDF-A1, no se comprimira el PDF

05-08 14:05:18.202 22186 22278 W es.gob.afirma: Error construyendo la fuente de letra para la firma visible PDF, se usara la por defecto y el PDF no sera compatible PDF/A: java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1

05-08 14:05:18.203 22186 22278 E AndroidRuntime: Process: es.gob.afirma, PID: 22186

05-08 14:05:18.203 22186 22278 E AndroidRuntime: at es.gob.afirma.signers.pades.PdfVisibleAreasUtils.getFont(PdfVisibleAreasUtils.java:112)

05-08 14:05:18.203 22186 22278 E AndroidRuntime: at es.gob.afirma.signers.pades.PdfSessionManager.getSessionData(PdfSessionManager.java:503)

05-08 14:05:18.203 22186 22278 E AndroidRuntime: at es.gob.afirma.signers.pades.PAdESTriPhaseSigner.preSign(PAdESTriPhaseSigner.java:177)

05-08 14:05:18.203 22186 22278 E AndroidRuntime: at es.gob.afirma.signers.pades.AOPDFSigner.sign(AOPDFSigner.java:201)

05-08 14:05:18.203 22186 22278 E AndroidRuntime: at es.gob.afirma.android.crypto.SignTask.doInBackground(SignTask.java:112)

05-08 14:05:18.203 22186 22278 E AndroidRuntime: at es.gob.afirma.android.crypto.SignTask.doInBackground(SignTask.java:37)

05-08 14:05:18.206 1328 8989 W ActivityManager: crash : es.gob.afirma,10321

fernandouribe commented 1 year ago

Se proporciona fichero de prueba testPDFA1.pdf , que falla al firmar desde dispositivo móvil tanto en https://valide.redsara.es/firmaMovil/ como firmando directamente en la aplicación.

Gamuci commented 1 year ago

Toda la razón.

Hemos subido el commit 0e40eb8 para evitar el error en la firma de los PDF/A-1 y se han hecho cambios en la biblioteca de iText para Android usada por el el cliente móvil para permitir que el resultado de la firma siga siendo PDF/A-1. Próximamente se publicará una versión que incluya esta corrección.