Página 2 de 2

Re: Sello Digital con C#.net

Publicado: Dom Jun 05, 2011 10:17 pm
por dacanetdev
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;
}

Re: Sello Digital con C#.net

Publicado: Lun Jun 06, 2011 1:31 am
por dacanetdev
Falsa alarma acabo de validar 50 CFDS todo válidos. El problema lo estoy teniendo con la cantidad de decimales 2 o 6... que recomendaciones me dan?

Re: Sello Digital con C#.net

Publicado: Mar Jun 07, 2011 10:37 am
por DeeNeon
Yo tengo un codigo similar al tuyo, pero en mi caso de un tiempo para aca me arroja un error de System.Security.Cryptography.CryptographicException: Bad Data.
Tengo entendido que es causado por problemas de Impersonificacion de ASP.Net, ya he cambiado eso y aun asi persiste el mismo error.
Si sello con el codigo que muestras me muestra "Object not defined", se que diras que alguna variable quedo volando y no ha sido definida, creeme, no es asi.
Tu codigo lo ejecutas en un ambiente web en un webFarm?

Re: Sello Digital con C#.net

Publicado: Mar Jun 07, 2011 9:11 pm
por dacanetdev
No mi código es de una aplicación con WPF, no quise hacerla Web (apesar de que soy más programador web) para ahorrarme lo de ASP.NET session y dejar que mi cliente trabaje sin que se preocupara porque se la acabe la session. Utilizo ClickOnce para el deployment. Si decido pasarlo a Web mi arquitectura me dejaría hacer sin ningún problema.

Re: Sello Digital con C#.net

Publicado: Mar Jun 07, 2011 9:14 pm
por dacanetdev
DeeNeon escribió:Yo tengo un codigo similar al tuyo, pero en mi caso de un tiempo para aca me arroja un error de System.Security.Cryptography.CryptographicException: Bad Data.
Tengo entendido que es causado por problemas de Impersonificacion de ASP.Net, ya he cambiado eso y aun asi persiste el mismo error.
Si sello con el codigo que muestras me muestra "Object not defined", se que diras que alguna variable quedo volando y no ha sido definida, creeme, no es asi.
Tu codigo lo ejecutas en un ambiente web en un webFarm?
certificado.FileKeyCertificado, certificado.PasswordCertificado

Esos valores que paso por parámetro son de un objeto que yo instancio con mi repositorio desde un Entity Framework (o sea de la Base de Datos) no sé si esos valores los estés tomando en cuenta

Re: Sello Digital con C#.net

Publicado: Jue Jun 09, 2011 11:30 am
por DeeNeon
Si los tomo en cuenta, hasta hace un rato llegue al fondo del problema.

La contraseña de desencriptacion de la llave era incorrecta y por eso arrojaba "Bad Data". El problema con ese error es que es generico y no puedes saber cual es la verdadera razon, me pude dar cuenta hasta que probe con otros archivos y no los mismos de siempre.
Gracias por el tip.