Ver Mensaje Individual
  #1752  
Antiguo 04-10-2021
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 233
Reputación: 16
espinete Va camino a la fama
Cita:
Empezado por ermendalenda Ver Mensaje
Hola, no sé si te va a funcionar pero yo hago un par de cosas diferentes:

1. Una vez firmado no lo paso a UTF-8, solo antes.
2. Prueba a cambiar esto en la Cabecera:
xsi:schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"

3: Las politicas de firma no cuadran con las mias, falta el digest:
"name" => "Politica de firma TicketBAI 1.0",
"url" => "https://www.gipuzkoa.eus/ticketbai/sinadura",
"digest" => "dTtPpv4fWTcejeVx7+91ILruFX3HysbngBlllJm4i/E="
Si elimino el SaveAsUTF8 tras hacer la firma, no me admite el envío. Me devuelve un error que dice algo así como "no se admite contenido en el prolog".

Cambiando el xsi:schemaLocation del XML por "http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd" en vez de "urn:ticketbai:emision ticketBaiV12.xsd" no afecta al resultado. Obtengo el mismo error 008 de mi anterior post.

Por cierto, en mi anterior post al convertir el texto a código Delphi se comió parte del código.
Esto es lo que hago para cambiar la cabecera del XML, una vez generado:

....
FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text, '<TicketBai xmlns="urn:ticketbai:emision">','<T:TicketBai xmlns:T="urn:ticketbai:emision" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ticketbai:emision ticketBaiV12.xsd">');
FicheroCorregir.Text := AnsiReplaceStr(FicheroCorregir.Text,'</TicketBai>', '</T:TicketBai>');
....

No he entendido lo de las políticas de firma y que falta el digest... Antes solo puse parte del código, para resumir. Pongo ahora el resto, si es que te refieres a esta parte:

firmante.r_Nombre_firma := nom_emp_emisora;
firmante.r_ID := '';
firmante.r_Metodo_Canonicalization := '';
firmante.r_Hash_algorithm := 'SHA256';
firmante.r_SigPolicyHashAlgorithm := 'SHA256';
//Gipuzkoa
firmante.r_SigPolicyID := 'https://www.gipuzkoa.eus/ticketbai/sinadura';
firmante.r_SigPolicyHash := 'e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d'; //6NrKAm60o7u62FUQwzZew24ra2ve9PRQYwC21AM6In0= convertido a HEX es e8daca026eb4a3bbbad85510c3365ec36e2b6b6bdef4f4506300b6d4033a227d
firmante.r_SigPolicyURI := 'https://www.gipuzkoa.eus/ticketbai/sinadura';

Utilizo los componentes de SecureBlackBox 2020 para la firma.

Alguna pista?
Responder Con Cita