Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Cita:
Empezado por delphiGar Ver Mensaje
Para la politica de firmas debes tener esto en el signature:

Código:
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signature-356076609">
<xades:SignedProperties Id="SignedProperties-896717916">
<xades:SignedSignatureProperties>
<xades:SigningTime>2025-01-09T09:06:03.661Z</xades:SigningTime>
<xades:SigningCertificate>
<xades:Cert>
<xades:CertDigest>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>GonBTW0Kj+S7ul49CizLsozDclU28uKhzNqqIGHkuRs=</ds:DigestValue>
</xades:CertDigest>
<xades:IssuerSerial>
<ds:X509IssuerName>CN=AC Representación, OU=CERES, O=FNMT-RCM, C=ES</ds:X509IssuerName>
<ds:X509SerialNumber>60125478927655539147584317276501208423</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
<xades:SignaturePolicyIdentifier>
<xades:SignaturePolicyId>
<xades:SigPolicyId>
<xades:Identifier>urn:oid:2.16.724.1.3.1.1.2.1.9</xades:Identifier>
</xades:SigPolicyId>
<xades:SigPolicyHash>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>G7roucf600+f03r/o0bAOQ6WAs0=</ds:DigestValue>
</xades:SigPolicyHash>
<xades:SigPolicyQualifiers>
<xades:SigPolicyQualifier>
<xades:SPURI>https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf</xades:SPURI>
</xades:SigPolicyQualifier>
</xades:SigPolicyQualifiers>
</xades:SignaturePolicyId>
</xades:SignaturePolicyIdentifier>
</xades:SignedSignatureProperties>
<xades:SignedDataObjectProperties>
<xades:DataObjectFormat ObjectReference="#xmldsig-5cf63553-8a48-4ceb-83f8-861d341a4d67-ref0">
<xades:ObjectIdentifier>
<xades:Identifier>urn:oid:1.2.840.10003.5.109.10</xades:Identifier>
</xades:ObjectIdentifier>
<xades:MimeType>text/xml</xades:MimeType>
<xades:Encoding>UTF8</xades:Encoding>
</xades:DataObjectFormat>
</xades:SignedDataObjectProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
El algoritmo http://www.w3.org/2000/09/xmldsig#sha1 que sugieres no está soportado por las especificaciones de la firma que exige el reglamento, debe ser http://www.w3.org/2001/04/xmlenc#sha256.

El caso es que mandándole a mano al AutoFirma el DigestValue que aparece en el fichero de ejemplo firmado de la AEAT, me firma el archivo correctamente pero al validarlo en valide.redsara.es me devuelve el siguiente error: "El hash de la política incluido en la firma no coincide con el hash real de la política de firma".

La llamada que realizo es: AutoFirmaCommandLine.exe sign -i "ejemplo.xml" -o "ejemplo_signed.xml" -format xades -config "format=XAdES Enveloped \nincludeOnlySignningCertificate=true \npolicyIdentifier=urnid:2.16.724.1.3.1.1.2.1.9 \npolicyIdentifierHash=Dkx2R3nMv8kWo7iSAh+/1SQ70hfseOEaQbpJnURk+pg= \npolicyIdentifierHashAlgorithm=http://www.w3.org/2001/04/xmlenc#sha256 \npolicyQualifier=https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf" -store pkcs12:"cert.pfx" -password XXXX -filter subject.contains:89890001K

Está todo bien salvo el tema del hash de la política de firma. Otra cosa que intenté fue calcularlo desde archivo PDF: THashSHA2.GetHashStringFromFile('politica_de_firma_anexo_1.pdf'). Pero el error devuelto es el mismo.

¿Alguna idea de cómo solucionarlo?
Responder Con Cita
  #2  
Antiguo 14-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
El hash que te he puesto es el correcto, el otro que pones no es correcto es sha1 y no sha256, ademas con el digestvalue que te indica.

Mira las especificaciones de firma y lo veras.

Código:
https://www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Espec-Tecnicas/EspecTecGenerFirmaElectRfact_BORRADOR.pdf
Te dejo un archivo valido firmado, lo puedes comprobar en la red.sara
Archivos Adjuntos
Tipo de Archivo: rar envio_firmado.rar (4,6 KB, 14 visitas)

Última edición por delphiGar fecha: 14-01-2025 a las 13:06:09.
Responder Con Cita
  #3  
Antiguo 14-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Cita:
Empezado por delphiGar Ver Mensaje
El hash que te he puesto es el correcto, el otro que pones no es correcto es sha1 y no sha256, ademas con el digestvalue que te indica.

Mira las especificaciones de firma y lo veras.

Código:
https://www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Espec-Tecnicas/EspecTecGenerFirmaElectRfact_BORRADOR.pdf
Te dejo un archivo valido firmado, lo puedes comprobar en la red.sara
Me temo que es al revés compañero. En el archivo ejemplo que mandas estás especificando que el algoritmo a usar para la política de firma es SHA1, y no SHA-256: <dsigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>. Y el DigestValue es G7roucf600+f03r/o0bAOQ6WAs0=, que viene a ser el hash SHA-1 de la política de firma.

Si uso tu propuesta sí me funciona. Pero ¿qué pasa si quiero aplicar el sha-256 como aparece en el ejemplo de archivo firmado proporcionado por la AEAT? ¿Cómo se calcula el sha-256 de la política de firma? Porque si uso el proporcionado en el fichero de ejemplo de la AEAT, al validarlo en valide.redsara.es me da el error de "El hash de la política incluido en la firma no coincide con el hash real de la política de firma".
Responder Con Cita
  #4  
Antiguo 14-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por razorxxx Ver Mensaje
Me temo que es al revés compañero. En el archivo ejemplo que mandas estás especificando que el algoritmo a usar para la política de firma es SHA1, y no SHA-256: <dsigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>. Y el DigestValue es G7roucf600+f03r/o0bAOQ6WAs0=, que viene a ser el hash SHA-1 de la política de firma.

Si uso tu propuesta sí me funciona. Pero ¿qué pasa si quiero aplicar el sha-256 como aparece en el ejemplo de archivo firmado proporcionado por la AEAT? ¿Cómo se calcula el sha-256 de la política de firma? Porque si uso el proporcionado en el fichero de ejemplo de la AEAT, al validarlo en valide.redsara.es me da el error de "El hash de la política incluido en la firma no coincide con el hash real de la política de firma".
Compañero, fijate bien que en el ejemplo viene lo que te digo, y no es al reves como tu dices, es sha1
Responder Con Cita
  #5  
Antiguo 14-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
El ejemplo me refiero al de la Aeat no al mio, veras que es sha1
Responder Con Cita
  #6  
Antiguo 14-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Para hacerlo con SHA256 debes saber el DisgestValue correspondiente, el que pones de 256 no es valido, ya lo comprobe anteriormente cuando salio el documento, pero despues lo cambiaron a SHA1
Responder Con Cita
  #7  
Antiguo 14-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Aunque yo no utilizo Autofirma para firmar los ficheros.

El codigo correcto para autofrima seria este:

Código:
AutoFirmaCommandLine.exe sign -i "c:\envio_firmado.xml" -o "c:\envio_firmado_a.xsig" -format xades -config "format=XAdES Enveloped \nincludeOnlySignningCertificate=true \npolicyIdentifier=urn:oid:2.16.724.1.3.1.1.2.1.9 \npolicyIdentifierHash=G7roucf600+f03r/o0bAOQ6WAs0= \npolicyIdentifierHashAlgorithm=http://www.w3.org/2000/09/xmldsig#sha1 \npolicyQualifier=https://sede.administracion.gob.es/politica_de_firma_anexo_1.pdf" -store auto -certgui
Responder Con Cita
  #8  
Antiguo 15-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Cita:
Empezado por delphiGar Ver Mensaje
El ejemplo me refiero al de la Aeat no al mio, veras que es sha1
Adjunto captura del PDF donde dicen que el algoritmo de política de firma debe ser SHA-256. Así mismo, pueden descargar el ejemplo de fichero firmado desde aquí: https://www.agenciatributaria.es/sta...rmaRegFact.zip

No veo rastro de SHA-1 en las especificaciones...
Imágenes Adjuntas
Tipo de Archivo: png sha_verifactu.png (183,2 KB, 3 visitas)
Responder Con Cita
  #9  
Antiguo 15-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 182
Poder: 2
delphiGar Va por buen camino
Cita:
Empezado por razorxxx Ver Mensaje
Adjunto captura del PDF donde dicen que el algoritmo de política de firma debe ser SHA-256. Así mismo, pueden descargar el ejemplo de fichero firmado desde aquí: https://www.agenciatributaria.es/sta...rmaRegFact.zip

No veo rastro de SHA-1 en las especificaciones...
En las especificaciones pone eso, pero en la practica es SHA1 ( Supongo que lo corregiran ).
En el fichero de ejemplo fijate bien que viene SHA1, vuelve a descargatelo.
En la anterior descarga venia como ya te he dicho anteriormente SHA256, pero el DigestValue incluido no es correcto.

Por cierto el SHA1 es para la politica de firmas no para el documento que si es SHA256, veo que indicas en el documento los dos y no tiene nada que ver, una cosa es el hash de politica de firma y otra el documento que si tiene que ser minimo SHA256.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Firmar XML CrazySoft Varios 6 19-09-2022 15:54:19
Autofirma (alias del certificado) keys Internet 38 26-02-2022 17:12:06
Firmar XML pepesoft Varios 1 23-11-2018 09:32:25
Firmar XML johan Varios 4 20-03-2018 13:57:21
Firmar PDF keys Varios 1 06-05-2010 10:11:37


La franja horaria es GMT +2. Ahora son las 14:55:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi