ctt-gob-es / clienteafirma

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

Problema base64 encoding preferido #113

Closed DJMolina closed 4 years ago

DJMolina commented 4 years ago

Buenas tardes,

Estamos teniendo problemas al estampar texto con caracteres especiales en PAdES usando el servicio de firma trifásica, adjunto el base64 del extraparams y una imagen después de su decodificación por el método "", como se puede apreciar, las ñ o las tildes no se decodifican correctamente.

¿Esto se puede cambiar por integración o por alguna propiedad? decodificacion extraParams_b64.txt

Un saludo

antonireus commented 4 years ago

Hola. Recientemente nos hemos encontrado con un caso similar usando firma trifásica de PADES.

El problema es que @firma lee (y guarda) la cadena extraParams usando por debajo Properties.load y Properties.store, que para versiones de Java < 9 siempre usa ISO-8859-1.

En el código del pantallazo, extraParams se carga con Properties.load, por tanto ISO-8859-1, pero el fichero de texto adjunto "extraParams_b64.txt", la información textual esta codificada con UTF-8. Por tanto debería revisar el código usado para generar esa información en Base64. Se puede generar por ejemplo con el método de utilidad properties2Base64(Properties) de la clase es.gob.afirma.core.misc.AOUtil.

Gamuci commented 4 years ago

Se ha modificado el código para carga el Properties interpretando que los textos que se codificaron en Base 64 usaban el juego de caracteres UTF-8.

Gracias por el aviso y la sugerencia.