Club Delphi  
    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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 1.768
Poder: 5
ermendalenda Va por buen camino
Hola, prueba algo así, en vez de alias es mejor esto subject.contains:XXXXXXXX donde XXXXXXXXX es el cif,nif,o nie del certificado, y así no va a fallar.
Pero no sé si falta o sobra algo. De momento no voy a trabajar en las firmas. Pero creo que te faltan las politicas de firma tambien:

Código:
AutoFirmaCommandLine.exe sign -i c:\...\Fichero_vfactu_3_2-1-110.xml -o c:\...\Fichero_vfactu_3_2-1-110.xml.sign -format facturae -store pkcs12:"C:\...\fichero.pt2 o fichero.pfx" -password pepito -filter subject.contains:A29XXXXX -format xades -xml -config "format=XAdES Enveloped \npolicyIdentifier=urn:oid: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"
Si te funciona mandalo a verifactu el firmado a ver si es aceptado y despues al correo verifactu para que te lo corroboren, aunque es dificl que funcione a la primera, no tengo ahora el autofirma instalado y no he visto resultados.
Responder Con Cita
  #2  
Antiguo 19-12-2024
PukinG PukinG is offline
Registrado
 
Registrado: dic 2024
Posts: 4
Poder: 0
PukinG Va por buen camino
Sí, he mandado varios XML firmados así a VeriFactu y los ha tomado sin problemas.
Responder Con Cita
  #3  
Antiguo 19-12-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 1.768
Poder: 5
ermendalenda Va por buen camino
Con los parámetros que te he puesto?
Responder Con Cita
  #4  
Antiguo 20-12-2024
PukinG PukinG is offline
Registrado
 
Registrado: dic 2024
Posts: 4
Poder: 0
PukinG Va por buen camino
No. Lo he probado con los parámetros de mi primer mensaje.
Responder Con Cita
  #5  
Antiguo 07-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 108
Poder: 10
razorxxx Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Hola, prueba algo así, en vez de alias es mejor esto subject.contains:XXXXXXXX donde XXXXXXXXX es el cif,nif,o nie del certificado, y así no va a fallar.
Pero no sé si falta o sobra algo. De momento no voy a trabajar en las firmas. Pero creo que te faltan las politicas de firma tambien:

Código:
AutoFirmaCommandLine.exe sign -i c:\...\Fichero_vfactu_3_2-1-110.xml -o c:\...\Fichero_vfactu_3_2-1-110.xml.sign -format facturae -store pkcs12:"C:\...\fichero.pt2 o fichero.pfx" -password pepito -filter subject.contains:A29XXXXX -format xades -xml -config "format=XAdES Enveloped \npolicyIdentifier=urn:oid: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"
Si te funciona mandalo a verifactu el firmado a ver si es aceptado y despues al correo verifactu para que te lo corroboren, aunque es dificl que funcione a la primera, no tengo ahora el autofirma instalado y no he visto resultados.
Hola. Usando tu código sugerido, y comparando la salida con el archivo firmado de ejemplo proporcionado por la AEAT, veo que se añade un nodo extra dentro de <xades:SignedProperties> llamado <xades:SignedDataObjectProperties> con el siguiente contenido:
Código:
	<xades:SignedDataObjectProperties>
		<xades:DataObjectFormat ObjectReference="#Reference-f90e12c9-a8c8-4705-ac51-4ada280e7e32">
			<xades:Description/>
			<xades:ObjectIdentifier>
				<xades:Identifier Qualifier="OIDAsURN">urn:oid:1.2.840.10003.5.109.10</xades:Identifier>
				<xades:Description/>
			</xades:ObjectIdentifier>
			<xades:MimeType>text/xml</xades:MimeType>
			<xades:Encoding/>
		</xades:DataObjectFormat>
	</xades:SignedDataObjectProperties>
Además, donde dice:
Código:
<xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
debería poner
Código:
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
.

También dentro del nodo <ds:SignedInfo> debería hacer mención a sha256, pero está poniendo sha512 en todas.

Dentro de <ds:Reference><ds:Transforms> se añade:
Código:
	<ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
	       <ds:XPath xmlns:ds="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::ds:Signature)</ds:XPath>
	</ds:Transform>
Uso AutoFirma 1.8.3 para Windows. Todavía no he llegado a la parte de enviar. ¿Alguien puede corroborar si este fichero resultante sería igualmente válido y el WebService se lo traga?
Responder Con Cita
  #6  
Antiguo 08-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 108
Poder: 10
razorxxx Va por buen camino
Cita:
Empezado por razorxxx Ver Mensaje
Hola. Usando tu código sugerido, y comparando la salida con el archivo firmado de ejemplo proporcionado por la AEAT, veo que se añade un nodo extra dentro de <xades:SignedProperties> llamado <xades:SignedDataObjectProperties> con el siguiente contenido:
Código:
	<xades:SignedDataObjectProperties>
		<xades:DataObjectFormat ObjectReference="#Reference-f90e12c9-a8c8-4705-ac51-4ada280e7e32">
			<xades:Description/>
			<xades:ObjectIdentifier>
				<xades:Identifier Qualifier="OIDAsURN">urn:oid:1.2.840.10003.5.109.10</xades:Identifier>
				<xades:Description/>
			</xades:ObjectIdentifier>
			<xades:MimeType>text/xml</xades:MimeType>
			<xades:Encoding/>
		</xades:DataObjectFormat>
	</xades:SignedDataObjectProperties>
Además, donde dice:
Código:
<xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
debería poner
Código:
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
.

También dentro del nodo <ds:SignedInfo> debería hacer mención a sha256, pero está poniendo sha512 en todas.

Dentro de <ds:Reference><ds:Transforms> se añade:
Código:
	<ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
	       <ds:XPath xmlns:ds="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::ds:Signature)</ds:XPath>
	</ds:Transform>
Uso AutoFirma 1.8.3 para Windows. Todavía no he llegado a la parte de enviar. ¿Alguien puede corroborar si este fichero resultante sería igualmente válido y el WebService se lo traga?
Si valido el fichero firmado en la web valide.redsara.es el achivo XML, me da 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.
¿Alguien sabe de dónde se saca el parámetro de configuración policyIdentifierHash?
Responder Con Cita
  #7  
Antiguo 09-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 163
Poder: 1
delphiGar Va por buen camino
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>

Última edición por delphiGar fecha: 09-01-2025 a las 10:44:50.
Responder Con Cita
  #8  
Antiguo 14-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 108
Poder: 10
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
  #9  
Antiguo 14-01-2025
delphiGar delphiGar is offline
Miembro
 
Registrado: ago 2024
Posts: 163
Poder: 1
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, 8 visitas)

Última edición por delphiGar fecha: 14-01-2025 a las 13:06:09.
Responder Con Cita
  #10  
Antiguo 14-01-2025
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 108
Poder: 10
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
Respuesta



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 19:04:45.


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