Ver Mensaje Individual
  #63 (permalink)  
Antiguo 20/09/2010, 09:55
Baskes
 
Fecha de Ingreso: marzo-2004
Mensajes: 19
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Facturas Digitales SAT - Mexico C#

Cita:
Iniciado por F_tanori Ver Mensaje
El procedimiento es correcto aparentemente el problema es que no pasa la validacion, como comentabamos en el otro foro (solocodigo) , el proceso es el indicado por SAT, segun la imagen (Extraida de una presentacion de power point de ellos mismos (SAT)). hemos usado el mismo hash md5 que da el validador del SAT, pero el sello no es igual, hice la prueba con FIRMASAT y el sello si pasa la validacion
¿Y como validar si el sello es correcto para el SAT?

Yo sigo todo el procedimiento y al validar el sello digital, me indica que no es valido. Compare mi cadena original con la que me da el SAT y es la misma, así como hash de MD5. ¿Como saber si mi sello digital es correcto?

Este es el código que uso para generar el sello digital:
Código:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.EnableRaisingEvents = true;
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.CreateNoWindow = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory; // Application.StartupPath;
                proc.StartInfo.FileName = "openssl.exe";
                
                proc.StartInfo.Arguments = "pkcs8 -inform DER -in aaa010101aaa_csd_01.key -passin pass:a0123456789 -out PrivateKEY.PEM ";
                proc.Start();
                proc.WaitForExit();
                ////Extraer la Llave Publica del Certificado
                proc.StartInfo.FileName = "openssl.exe";
                proc.StartInfo.Arguments = "x509 -inform DER -outform PEM -in aaa010101aaa_CSD_01.cer -pubkey -out PublicKEY.PEM";
                
                proc.Start();
                proc.WaitForExit();
                ////Firmar Hash Md5 con la llave privada
                proc.StartInfo.FileName = "openssl.exe ";
                proc.StartInfo.Arguments = string.Concat("dgst -out Firma.binario -sign PrivateKEY.PEM ", CrearHash(md5));
                
                proc.Start();
                proc.WaitForExit();
                proc.StartInfo.FileName = "openssl.exe ";
                proc.StartInfo.Arguments = "enc -in Firma.binario -a -A -out Firma.base64";
                proc.Start();
                proc.WaitForExit();

Última edición por Baskes; 20/09/2010 a las 11:24