De antemano quiero felicitarlos por la creación de este espacio, donde se nota que comparten muchas experiencias en torno a la implementación de la Factura Electrónica en México.
Yo soy un usuario y programador mas con problemas para la implementación utilizando Delphi 7.
El año pasado dejé la rutina necesaria para general el CFD y para ello me auxilié de los archivos OpenSSL.exe, libeay32.dll y una rutina llamada SelloDigital.pas
function SelloDigital(llaveprivada,cadenaoriginal: string;encripcion: Integer): string;
var
Len: cardinal;
mdctx: EVP_MD_CTX;
inbuf, outbuf: array [0..8192] of AnsiChar;
key: pEVP_PKEY;
begin
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#13,'');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#10,'');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,#8,'');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' ','');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,' |','|');
cadenaoriginal := AnsiReplaceStr(cadenaoriginal,'| ','|');
cadenaoriginal := UTF8Encode(cadenaoriginal);
StrPCopy(inbuf,cadenaoriginal);
InitOpenSSL;
key:=LoadPrivateKey(llaveprivada,'');
// Tipo de encripcion
// 0 -> MD5
// 1 -> SHA1
Case encripcion of
0: EVP_SignInit(@mdctx,EVP_md5());
1: EVP_SignInit(@mdctx,EVP_sha1());
End;
EVP_SignUpdate(@mdctx,@inbuf,StrLen(inbuf));
EVP_SignFinal(@mdctx,@outbuf,Len,key);
// EVP_MD_CTX_cleanup(@mdctx);
EVP_PKEY_free(key);;
FreeOpenSSL;
result := bintobase64(@outbuf,Len);
end;
Estuvo trabajando bien mis rutinas, pero en este año comenzaron con problemas de diversos tipos, por ejemplo el validador del SAT me marcaba error de codificación del archivo XML, me decía que estaba en ANSI y debía ser en UTF-8, por lo que utilicé un procedimiento de conversión para agregar el BOM.
Sin embargo en este momento tengo la bronca de que el validador del SAT me marca "Sello Inválido" al pasar cualquier XML generado anteriormente.
Podrían apoyarme, o señalarme donde puede estar mi problema?
-------------------------------------------------------
Resumen del análisis del XML
Archivo XML :BB-14.xml
Ruta :C:\Users\Güero\Sistemas\Tecnovisión\Win32Multivisi
n\Código Fuente\FacturasElectronicas\BB-14.xml
Estructura : Estructura del CFD correcta
CFD codificado en: UTF-8.
El comprobante incluye un certificado codificado
El sello del comprobante es Inválido
Detalle del análisis del XML
Resultado de la Digestión SHA1 :a92b26252b19b6b2af199caab84c88301c6c9e2b
Tipo de Certificado:CSD
No. de Serie del CSD :00001000000102363744
Cadena Original
