Beispiel #1
0
        public string RSAverifica(string pseuUser, string datosYfirma, bool publicidad)
        {
            BD dbUtiles = new BD(Formulario);
            string clave = dbUtiles.recuperaSK(pseuUser);
            string datosDescifrados = Decrypt(datosYfirma, clave);
            string[] cortado = datosDescifrados.Split(';');
            string datos = cortado[0] + ";" + cortado[1] + ";" + cortado[2] + ";" + cortado[3] + ";" + cortado[4] + ";" + cortado[5]; //+ ";" + cortado[6];+ ";" + cortado[7] fecha 7 no por que es cuando expira, esto no se firma
            byte[] decryptedData = utiles.StrToByteArray(datos);
            byte[] signedData = Convert.FromBase64String(cortado[cortado.Length-1]);//la firma esta en la posición 8
            string usuario = "Autoridad";
            if (!publicidad)
                usuario = pseuUser;
            string clavePublica = dbUtiles.recuperaPublicaModulo(usuario);
            string[] Cpublicamodulo = clavePublica.Split(',');
            RSAParameters Cpublica = new RSAParameters()//RECOGER CPUBLICA DE DB
            {
                Exponent = Convert.FromBase64String(Cpublicamodulo[1]), //"AQAB"),
                Modulus =  Convert.FromBase64String(Cpublicamodulo[0]) //"98Ej5BZ/VMG4nxCzdMZoZ8V50//GvnEQc3CX4vyHzDjOfUGB21ZjVF12s+h3ZQmQX/Woq1zZM6sNsTLVG2SiQhzwWIEE7ioyr2vn1OjE17QOlmrVtl8lI4txnZQQh8jaq1mEi1lqI7JMvwBr+AmTWz+Vf5RraWv/a7qonMDovyM=")
            };
                    //encryptedData = Criptutiles.RSAEncrypt(dataToEncrypt, Cpublica, false);

                    RSACryptoServiceProvider RSA3 = new RSACryptoServiceProvider();
                    RSA3.ImportParameters(Cpublica);

                    if (RSA3.VerifyData(decryptedData, "SHA1", signedData))// (dataToEncrypt, "SHA1", signedData);
                        return datosDescifrados;
                    //Formulario.Invoke(Formulario.myDelegate, new Object[] { "Advertisement Data not Correct" });
                    else
                        return "";
        }