Re: Sello Digital con C#.net
Publicado: Dom Jun 05, 2011 10:17 pm
Colegas les comparto el metodo con el cual obtengo el sello digital
Para eso el archivo que da Hacienda le aplique una serie de conversiones con openssl (manualmente) para convertirlo a p12 y eso es lo que lee con X509Certificate
Hasta hace unos meses me funcionaba pero de un tiempo para aca me dejo de validar. Me podria decir alguien si estoy haciendo algo mal?
/// <summary>
/// Este Metodo crea el sello digital para el CFD a partir de la cadena original
/// </summary>
private string GetSelloDigital(string cadenaOriginal)
{
string selloDigital = string.Empty;
try
{
X509Certificate2 certificate = new X509Certificate2(certificado.FileKeyCertificado, certificado.PasswordCertificado);
RSACryptoServiceProvider rsaProv = certificate.PrivateKey as RSACryptoServiceProvider;
SHA1CryptoServiceProvider shaHasher = new SHA1CryptoServiceProvider();
byte[] selloDigitalData = rsaProv.SignData(Encoding.UTF8.GetBytes(cadenaOriginal), shaHasher);
selloDigital = Convert.ToBase64String(selloDigitalData);
}
catch (Exception ex)
{
log.Error(string.Format("Ocurrio un error al crear El Sello Digital, {0}", ex.StackTrace));
throw ex;
}
return selloDigital;
}
Para eso el archivo que da Hacienda le aplique una serie de conversiones con openssl (manualmente) para convertirlo a p12 y eso es lo que lee con X509Certificate
Hasta hace unos meses me funcionaba pero de un tiempo para aca me dejo de validar. Me podria decir alguien si estoy haciendo algo mal?
/// <summary>
/// Este Metodo crea el sello digital para el CFD a partir de la cadena original
/// </summary>
private string GetSelloDigital(string cadenaOriginal)
{
string selloDigital = string.Empty;
try
{
X509Certificate2 certificate = new X509Certificate2(certificado.FileKeyCertificado, certificado.PasswordCertificado);
RSACryptoServiceProvider rsaProv = certificate.PrivateKey as RSACryptoServiceProvider;
SHA1CryptoServiceProvider shaHasher = new SHA1CryptoServiceProvider();
byte[] selloDigitalData = rsaProv.SignData(Encoding.UTF8.GetBytes(cadenaOriginal), shaHasher);
selloDigital = Convert.ToBase64String(selloDigitalData);
}
catch (Exception ex)
{
log.Error(string.Format("Ocurrio un error al crear El Sello Digital, {0}", ex.StackTrace));
throw ex;
}
return selloDigital;
}