Hola,
He seguido otros hilos del foro para la facturación electrónica, utilizando la clase "clsSeguridad.cs" y haciendo ajustes para las nuevas definiciones.
Sin embargo, todos los Sellos que logro obtener, siempre son inválidos en el validador del SAT ([URL="https://www.consulta.sat.gob.mx/sicofi_web/moduloecfd_plus/validadorcfdi/validador%20cfdi.html"]https://www.consulta.sat.gob.mx/sicofi_web/moduloecfd_plus/validadorcfdi/validador%20cfdi.html[/URL])
Parte del Código:
Código:
string ArchivoCertificado = @"c:\aaa010101aaa__csd_01.cer";
string key = @"c:\aaa010101aaa__csd_01.key";
string lPassword = @"12345678a";
string Digestion = "";
string strCadenaOriginal = "*** Cadena Original Utilizando XSLT del SAT";
// SAH1
SHA1 oSHA1 = SHA1CryptoServiceProvider.Create();
Byte[] textOriginal = Encoding.UTF8.GetBytes(strCadenaOriginal);
Byte[] hash = oSHA1.ComputeHash(textOriginal);
StringBuilder oSB = new StringBuilder();
foreach (byte i in hash)
oSB.AppendFormat("{0:x2}", i);
Digestion= oSB.ToString();
// leer KEY
SecureString lSecStr = new SecureString();
lSecStr.Clear();
foreach (char c in lPassword.ToCharArray())
lSecStr.AppendChar(c);
Byte[] pLlavePrivadaenBytes = System.IO.File.ReadAllBytes(key);
// Uso clSeguridad para Leer Certificado
RSACryptoServiceProvider lrsa = clsSeguridad.DecodeEncryptedPrivateKeyInfo(pLlavePrivadaenBytes, lSecStr);
SHA1CryptoServiceProvider hasher = new SHA1CryptoServiceProvider();
Byte[] bytesFirmados = lrsa.SignData(System.Text.Encoding.UTF8.GetBytes(Digestion), hasher);
// Obtengo Sello
string sellodigital = Convert.ToBase64String(bytesFirmados);
// Open Certificado
X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado);
// Obtengo Datos
String NoCertificado = HexToString(certificado.SerialNumber);
String Certificado = Convert.ToBase64String(certificado.RawData);
// Resultado //
Console.WriteLine("-----------------------------------------");
Console.WriteLine("Sello=" + sellodigital);
Console.WriteLine("NoCertificado=" + NoCertificado);
Console.WriteLine("Certificado=" + Certificado);
Console.WriteLine("-----------------------------------------");
Alguien me podría ayudarme con lo que falta o sobra para lograr obtener un sello válido.
Gracias.