Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-08-2021
aflores1 aflores1 is offline
Miembro
 
Registrado: jul 2021
Posts: 12
Poder: 0
aflores1 Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
Nos hemos quedado aquí... firmador.php
Lo primero, darte las gracias por compartir el código. Estoy utilizando tu firmador para realizar la firma pero me da error 008 todo el rato. He probado enviando otro documento firmado con otra aplicación que tengo en c# y me realiza el envío sin errores por lo que algo en el proceso de firmado debe de estar incorrecto pero no consigo ver el que. Estas utilizando esta misma versión que subiste y te funciona correctamente?
Responder Con Cita
  #2  
Antiguo 10-08-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 60
Poder: 5
bilbur Va por buen camino
Cita:
Empezado por aflores1 Ver Mensaje
Lo primero, darte las gracias por compartir el código. Estoy utilizando tu firmador para realizar la firma pero me da error 008 todo el rato. He probado enviando otro documento firmado con otra aplicación que tengo en c# y me realiza el envío sin errores por lo que algo en el proceso de firmado debe de estar incorrecto pero no consigo ver el que. Estas utilizando esta misma versión que subiste y te funciona correctamente?

La versión que utilizo es la misma y funciona correctamente.
Parece ser un error de verificación de firma.


Si quieres, envía un xml sin datos (con las cabeceras TBAI) y lo firmo y compruebo.


Un saludo
Responder Con Cita
  #3  
Antiguo 11-08-2021
aflores1 aflores1 is offline
Miembro
 
Registrado: jul 2021
Posts: 12
Poder: 0
aflores1 Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
La versión que utilizo es la misma y funciona correctamente.
Parece ser un error de verificación de firma.


Si quieres, envía un xml sin datos (con las cabeceras TBAI) y lo firmo y compruebo.


Un saludo
He conseguido firmar el de alta pero me es imposible realizar una firma correcta para el de anulación,

te dejo mi plantilla de xml por si puedes revisármela.(no me deja incluir enlaces el foro)

Código:
<xml version="1.0" encoding="UTF-8">
    <T:AnulaTicketBai xmlns:T="urn:ticketbai:anulacion" xmlns:xsi="......w3.org/2001/XMLSchema-instance" xsi:schemaLocation=".......w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd">
        <Cabecera>
            <IDVersionTBAI>1.2</IDVersionTBAI>
        </Cabecera>
        <IDFactura>
            <Emisor>
                <NIF>XXXXXX</NIF>
                <ApellidosNombreRazonSocial>XXXXXXXX</ApellidosNombreRazonSocial>
            </Emisor>
            <CabeceraFactura>
                <SerieFactura>Factura Compra</SerieFactura>
                <NumFactura>2021205346</NumFactura>
                <FechaExpedicionFactura>29-07-2021</FechaExpedicionFactura>
            </CabeceraFactura>
        </IDFactura>
        <HuellaTBAI>
            <Software>
                <LicenciaTBAI>TBAIGIPRE000000000000</LicenciaTBAI>
                <EntidadDesarrolladora>
                    <NIF>XXXXXXXXX</NIF>
                </EntidadDesarrolladora>
                <Nombre>XXXXXXXX</Nombre>
                <Version>1.2</Version>
            </Software>
        </HuellaTBAI>
    </T:AnulaTicketBai>
Un saludo y gracias!!
Responder Con Cita
  #4  
Antiguo 11-08-2021
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Buenos dias, foreros.


Despues de casi 7 años sin apenas tocar Delphi, vuelvo necesitar de vuestra ayuda con el dichoso Ticket BAI.
Muchas gracias a elcharie por su código sobre la firma digital https://www.clubdelphi.com/foros/sho...ent#post534661

me ha sido de gran ayuda pues tambien uso los componentes SecureBlackBox para firmar con FacturaE.



Mi duda es sobre el encadenamiento de las facturas, en un ejemplo he visto esto:
Código:
<EncadenamientoFacturaAnterior>                                                                                                                                            
    <SerieFacturaAnterior>B2022</SerieFacturaAnterior>                                                                                                                  
    <NumFacturaAnterior>0100</NumFacturaAnterior>                                                                                                                            
    <FechaExpedicionFacturaAnterior>30-01-2022</FechaExpedicionFacturaAnterior>                                                                                               
 <SignatureValueFirmaFacturaAnterior>DSI1XA1ErCoqaEln++216eTQpN0qF7HQb/I3QhF54V11LEGY3ucMVH33GceRE9LtYJI7AoI0YS3q0qPOn+eTlH6ZHVXXkcVZyi2g</SignatureValueFirmaFacturaAnterior>
</EncadenamientoFacturaAnterior>

Mi duda es qué valor debo grabar en el tag SignatureValueFirmaFacturaAnterior.
Suponiendo una firma digital del xml que acabo de grabar,



Código:
<ds:Signature Id="Signature-221b390d-079e-45d2-a152-70726a44665f-Signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <ds:Reference Id="Reference-1e93a4c4-c54d-4704-aef6-815f9afa0490" Type="http://www.w3.org/2000/09/xmldsig#Object" URI="">
    <ds:Transforms>
    <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
    <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>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
    <ds:DigestValue>Lj/xC1Vm48GUnqm6mQVSdMWDSS7h6EpTnG/m3TWADSI+vKoehKH2u/KSKOZc6fqZ+mT4pqyxCVAwwIlISPhAGw==</ds:DigestValue>
    </ds:Reference>
    <ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature-221b390d-079e-45d2-a152-70726a44665f-SignedProperties">
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
    <ds:DigestValue>6ZLdg8WSZEcsodu/pVr6E76DL0+REsuOgrF+N1TR6xBG0QHOXFf6876kZOUBZFhZaQ+r7ncHaxRXBhZDo3aidQ==</ds:DigestValue>
    </ds:Reference>
    <ds:Reference URI="#Signature-221b390d-079e-45d2-a152-70726a44665f-KeyInfo">
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
    <ds:DigestValue>gkMC+2K2Q9SEhd7FbRe1oq3Rsb+FCe+UgKsvU2NJxuW3F5BVMgbKfM2B4jv9EULQfIZmOYU9sff5OxSyecL9/Q==</ds:DigestValue>
    </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue Id="Signature-221b390d-079e-45d2-a152-70726a44665f-SignatureValue">JmGem1gIrDMgDBSwggrUx4wUa6OeIeYo+B11HZYYxfPlSkT1g8KOMipXQCBl4M79GF+ZfkZoaXrVFiVdXlqVg2lVtWIt8swT5/JwkemwKtNuSA0Z7J1xLIj8D9GjU1Lhc8FBly0ecYRoahsPyCKwH/b4sU29WCKgqsfaAn4HmM8KuSJ3786KKUZ5TfPyLdqyJebq4mszozxeIVcColch2tRoMxC5bWg7FctJ6CH54itfiUq3Uv2azi/AIzyMwCOCaDUftHlju9xYtIqMwb9UipOPGeovVUbe5InPItjOq+fvCXNBfMfgRcZkF6G5c3SHpBlW8fESN6zd8vVm6o1R/w==</ds:SignatureValue>
    <ds:KeyInfo Id="Signature-221b390d-079e-45d2-a152-70726a44665f-KeyInfo">

¿cual seria el tag con el valor para el siguiente XML a firmar?
¿SignatureValue?
¿Alguno de los <DigestValue>?


Estoy un poco perdido...
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #5  
Antiguo 11-08-2021
aflores1 aflores1 is offline
Miembro
 
Registrado: jul 2021
Posts: 12
Poder: 0
aflores1 Va por buen camino
Cita:
Empezado por defcon1_es Ver Mensaje
Buenos dias, foreros.

¿cual seria el tag con el valor para el siguiente XML a firmar?
¿SignatureValue?
¿Alguno de los <DigestValue>?


Estoy un poco perdido...
El tag a utilizar para el ecadenamiento es el SigunatureValue,

saludos
Responder Con Cita
  #6  
Antiguo 11-08-2021
bilbur bilbur is offline
Miembro
 
Registrado: dic 2019
Posts: 60
Poder: 5
bilbur Va por buen camino
Cita:
Empezado por aflores1 Ver Mensaje
He conseguido firmar el de alta pero me es imposible realizar una firma correcta para el de anulación,

te dejo mi plantilla de xml por si puedes revisármela.(no me deja incluir enlaces el foro)

Código:
<xml version="1.0" encoding="UTF-8">
    <T:AnulaTicketBai xmlns:T="urn:ticketbai:anulacion" xmlns:xsi="......w3.org/2001/XMLSchema-instance" xsi:schemaLocation=".......w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd">
        <Cabecera>
            <IDVersionTBAI>1.2</IDVersionTBAI>
        </Cabecera>
        <IDFactura>
            <Emisor>
                <NIF>XXXXXX</NIF>
                <ApellidosNombreRazonSocial>XXXXXXXX</ApellidosNombreRazonSocial>
            </Emisor>
            <CabeceraFactura>
                <SerieFactura>Factura Compra</SerieFactura>
                <NumFactura>2021205346</NumFactura>
                <FechaExpedicionFactura>29-07-2021</FechaExpedicionFactura>
            </CabeceraFactura>
        </IDFactura>
        <HuellaTBAI>
            <Software>
                <LicenciaTBAI>TBAIGIPRE000000000000</LicenciaTBAI>
                <EntidadDesarrolladora>
                    <NIF>XXXXXXXXX</NIF>
                </EntidadDesarrolladora>
                <Nombre>XXXXXXXX</Nombre>
                <Version>1.2</Version>
            </Software>
        </HuellaTBAI>
     </T:AnulaTicketBai>
Un saludo y gracias!!

FIRMA VÁLIDA
Te cuento:


He creado un firmador_anulacion.php que difiere de firmador.php en 5 líneas
Cambio "emision" por "anulacion"

Código PHP:
    $xmlns 'xmlns:ds="http://www.w3.org/2000/09/xmldsig#" ' .
             
'xmlns:T="urn:ticketbai:anulacion" ' .
             
'xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"';
            
    
$xmnls_signeg        'xmlns:T="urn:ticketbai:anulacion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"';
    
$xmlns_keyinfo       'xmlns:T="urn:ticketbai:anulacion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"';
    
$xmnls_signedprops 'xmlns:T="urn:ticketbai:anulacion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
y al final esta otra:
cambio TicketBai por AnulaTicketBai
Código PHP:
    </ds:Signature>';

    $xml = str_replace('
</T:AnulaTicketBai>', $sig . '</T:AnulaTicketBai>', $xml);
    return $xml; 
Por otro lado me daba error tu primera línea:
Código:
$xml  = "<?xml version='1.0' encoding='UTF-8'?>";
No tengo intención de utilizar la anulación, usaré rectificativas.
Si me obliga, combinaré del alguna forma firmador.php y firmador_anulacion.php para dejarlo sólo en uno.
Puebalo y me cuentas
Responder Con Cita
  #7  
Antiguo 12-08-2021
aflores1 aflores1 is offline
Miembro
 
Registrado: jul 2021
Posts: 12
Poder: 0
aflores1 Va por buen camino
Cita:
Empezado por bilbur Ver Mensaje
FIRMA VÁLIDA
Te cuento:


He creado un firmador_anulacion.php que difiere de firmador.php en 5 líneas
Correcto, no me di cuenta de cambiar las primeras líneas. Funcionando a la perfección.

Gracias y un saludo!
Responder Con Cita
  #8  
Antiguo 10-08-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Poder: 5
Sistel Va por buen camino
Cita:
Empezado por aflores1 Ver Mensaje
Lo primero, darte las gracias por compartir el código. Estoy utilizando tu firmador para realizar la firma pero me da error 008 todo el rato. He probado enviando otro documento firmado con otra aplicación que tengo en c# y me realiza el envío sin errores por lo que algo en el proceso de firmado debe de estar incorrecto pero no consigo ver el que. Estas utilizando esta misma versión que subiste y te funciona correctamente?
Hola aflores1,

Chequea, primero, el XML firmado con https://tools.chilkat.io/xmlDsigVerify.cshtml
Así te aseguras si está correctamente firmado.

Saludos
Responder Con Cita
  #9  
Antiguo 11-08-2021
aflores1 aflores1 is offline
Miembro
 
Registrado: jul 2021
Posts: 12
Poder: 0
aflores1 Va por buen camino
Gracias ya conseguí solucionarlo,

Me faltaban el los xsi al principio del documento.

Código:
<?xml version='1.0' encoding='UTF-8'?><T:TicketBai xmlns:T='urn:ticketbai:emision' 
    xmlns:xsi='....w3.org/2001/XMLSchema-instance' 
    xsi:schemaLocation='......w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd'>
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
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3557 Hace 3 Semanas 17:42:47
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 08:17:34.


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