Tengo un problema para descifrar un mensaje que usa el certificado X.509.descifrar con PrivateKey X.509 certificado
genero mi certificado con makecert con estas opciones:
makecert -r -pe -n "CN=MyCertificate" -ss CA -sr CurrentUser -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer
Y el PrivateKey era "micontraseña".
Mi problema es cuando quiero descifrar un mensaje cifrar con el certificado anterior en C#.
Encontré esta clase http://blog.shutupandcode.net/?p=660, pero en el método X509Decrypt siempre la PrivateKey es nula.
public static byte[] X509Decrypt(byte[] data, string certificateFile, string password) { // load the certificate and decrypt the specified data using (var ss = new System.Security.SecureString()) { foreach (var keyChar in password.ToCharArray()) ss.AppendChar(keyChar); // load the password protected certificate file X509Certificate2 cert = new X509Certificate2(certificateFile, ss); using (RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey) { return rsa.Decrypt(data, true); } } }
Traté de pasar el archivo de certificado (.cer)
X509DecryptString(token, @"c:\CA.cer", "mypassword");
Y pasando el archivo pvk (.pvk)
X509DecryptString(token, @"c:\CA.pvk", "mypassword");
Pero Allways tienen la propiedad de que PrivateKey es nulo.
¿Alguien puede guiarme para descifrar el mensaje usando el archivo pvk?
Gracias,
José
Estaba equivocado. "mypassword" no era una clave privada. Gracias por su comentario, ha sido útil. Con el nuevo archivo pfx puedo descifrar el mensaje. – jomarmen