Problemas al generar sello con librería OpenSSLKey.cs
Publicado: Sab Jun 04, 2016 6:58 pm
Hola, estoy usando la librería OpenSSLKey en C# para generar el sello digital a partir del .key del CSD y la cadena original. Hasta ahora no había tenido ningún problema, pero me acaba de llegar un cliente que usa CSD de los nuevos de 2048 (no sé si tenga algo que ver) y ahora ya no me funciona. Este es el código que estoy usando:
porg.LlavePrivada contiene el .key sin alterar.
porg.PassLlavePrivada es la contraseña de llave privada.
El problema es que al llamar al método DecodeEncryptedPrivateKeyInfo, éste devuelve null, que es lo que normalmente ocurre cuando la contraseña no coincide con el .key, sin embargo he validado con el ValidaCFD que efectivamente sí se corresponden, entonces no sé que otra cosa pueda ser.
¿Alguien sabe a qué puede deberse? O alguien que me pueda pasar un ejemplo con otra librería (Bouncycastle u otra), tal vez cambiando el método se solucione el problema.
Gracias y saludos.
Código: Seleccionar todo
SecureString passwordSeguro = new SecureString();
passwordSeguro.Clear();
foreach (char c in porg.PassLlavePrivada.ToCharArray())
passwordSeguro.AppendChar(c);
RSACryptoServiceProvider rsa = opensslkey.DecodeEncryptedPrivateKeyInfo(porg.LlavePrivada, passwordSeguro);
SHA1CryptoServiceProvider hasher = new SHA1CryptoServiceProvider();
byte[] bytesFirmados = rsa.SignData(Encoding.UTF8.GetBytes(strCadenaOriginal), hasher);
sello = Convert.ToBase64String(bytesFirmados);
porg.PassLlavePrivada es la contraseña de llave privada.
El problema es que al llamar al método DecodeEncryptedPrivateKeyInfo, éste devuelve null, que es lo que normalmente ocurre cuando la contraseña no coincide con el .key, sin embargo he validado con el ValidaCFD que efectivamente sí se corresponden, entonces no sé que otra cosa pueda ser.
¿Alguien sabe a qué puede deberse? O alguien que me pueda pasar un ejemplo con otra librería (Bouncycastle u otra), tal vez cambiando el método se solucione el problema.
Gracias y saludos.