Con
AutoFirma consigo firmar el archivo, siguiendo los pasos que hay unos posts más atrás.
Con AutoFirma, el archivo firmado resultante ya está en UTF-8 SIN BOM sin tener que hacerle nada. AL parecer respeta la codificación original.
Además, según
http://tools.chilkat.io/xmlDsigVerify.cshtml, esta vez obtengo 3 Digest válidos en el archivo firmado, no 2 como ocurría con SecureBlackBox.
No obstante,
obtengo el mismo error al hacer el envío, por lo que creo que el problema no está en la firma.
Así que, o bien el proceso de envío hace algo raro al archivo, o yo ya no sé donde más mirar.
¿Hay alguna forma de saber si el envío (con NetHTTPClient1) está tocando algo en el archivo? ¿Hay alguna forma de saber realmente lo que está pasando?
Y yo que pensaba que la firma y envío de Bizkaia era problemático... No puede ser que lleve días con esto, y algo me dice que cuando descubra la causa del problema voy a salir de la oficina directo al bar.
El envío lo hago así:
RequestBody := TFileStream.Create('firmado.xml', fmOpenRead);
NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12];
NetHTTPClient1.CustomHeaders['Content-Type'] := 'application/xml';
NetHTTPClient1.CustomHeaders['Charset'] := 'UTF-8';
AResponse := NetHTTPClient1.Post('https://tbai-prep.egoitza.gipuzkoa.eus/WAS/HACI/HTBRecepcionFacturasWEB/rest/recepcionFacturas/alta',RequestBody);
Lo único que se me ocurre es que, como pasa con los Streams cuando se cargan, haya que hacer algún
Position := 0 (yo creo que tambien es eso...) antes de enviarlo, pero eso no explica que "
el archivo se ha modificado...", sino que daría otro error, digo yo, vamos.
....
Espero de verdad que sirva de algo