Closed demoler closed 11 months ago
Hola @demoler,
Gracias por tu contribución.
Antes de nada, te recuerdo que los pull request deben ir siempre a la rama develop
como se indica en CONTRIBUTING.md.
El atributo "organizationIdentifier" (2.5.4.97) sí que es estándar y está definido en el ITU-T X.500 (10/2019) y contemplado en eIDAS. Entiendo que con "no estándar" te refieres a que hay implementaciones (como Autofirma) que exportan el OID en vez del nombre del atributo.
Me gustaría comprender mejor el problema antes de hacer cambios que se desvían de la especificación para favorecer retrocompatilidad. ¿Hay algun validador en concreto para el cual tengas problemas a la hora de subir una factura firmada con Facturae-PHP?
Hola @josemmo!
Primero de todo agradecerte el feedback y tu tiempo. Para entender el motivo de la propuesta ofrecida te propongo que realices una prueba muy sencilla firmando una FacturaE con un certificado expedido por Uanataca. Pasos a seguir:
Verás que el resultado de la validación no es correcta debido a la firma del documento. Qué diferencia existe con otras entidades emisoras de certificados? Que el issuer type usa organizationIdentifier y este no es reconocido como un tipo válido. En cambio, si usamos OID en su lugar, esta es aceptada y validada correctamente.
Hola @demoler,
En el enlace que mencionas solo encuentro certificados sin clave privada. Con eso no puedo firmar un documento.
Hola @demoler,
He añadido unos cambios a la rama develop
que (creo) solucionan el problema:
composer require josemmo/facturae-php:dev-develop
Como no puedo probarlo al 100% porque no dispongo de un certificado válido con clave privada, por favor, prueba a reproducir el fallo y me cuentas.
Hola @josemmo,
Primero de todo pedirte disculpas por la confusión y la respuesta tardía a tu mensaje. Respecto a los cambios que has realizado en la branch de develop, intento darte una respuesta mañana o lo más tardar el miércoles.
Un saludo.
Hola @josemmo ,
He realizado la prueba y te confirmo que con el cambio que has añadido en la branch develop el issue queda solucionado. He verificado que en la web de Face valide correctamente la factura con la firma. Estaré pendiente de ello para cuando sea introducido en master. Muchas gracias por el cambio.
Un saludo.
Genial, gracias por la confirmación!
Doy por cerrado el issue, en la próxima release estará solucionado el fallo.
Título:
Corrección de atributos no estándar en la firma de certificados.
Descripción:
Se ha detectado un problema en el proceso de firma con certificados que presentan campos no estándar en el issuer, como es el caso de
organizationIdentifier
. Para abordar este problema y asegurar la correcta firma de facturas, se ha introducido una corrección que reemplaza automáticamente estos campos por su equivalente estándar.Detalles Técnicos:
Se ha añadido una constante
REPLACE_NON_STANDARD_FIELDS
en la clase responsable de la firma, que mapea los campos no estándar a su correspondiente valor estándar:Posteriormente, en el proceso de construcción del issuer del certificado, se ha incorporado una verificación que busca estos campos no estándar y los reemplaza según la constante definida:
Justificación:
La incorporación de esta lógica asegura que los certificados con atributos no estándar, como los provenientes de Uanataca, sean tratados adecuadamente, evitando problemas en el proceso de firma. Esta modificación mejora la robustez y la compatibilidad de la librería al manejar diferentes tipos de certificados.