示例#1
0
        public IHttpActionResult GetHashPorArchivo([FromBody] RequestHashArchivo request)
        {
            string sellodigital = String.Empty;

            byte[] bytesFirmados = null;
            try
            {
                byte[] ClavePrivada = Convert.FromBase64String(request.claveprivada);
                byte[] bArchivo     = Convert.FromBase64String(request.archivo);

                SecureString  lSecStr = new SecureString();
                SHA256Managed sham    = new SHA256Managed();
                lSecStr.Clear();
                foreach (char c in request.password.ToCharArray())
                {
                    lSecStr.AppendChar(c);
                }

                RSACryptoServiceProvider lrsa = OpenSSLKey.DecodeEncryptedPrivateKeyInfo(ClavePrivada, lSecStr);
                bytesFirmados = lrsa.SignData(bArchivo, sham);
            }
            catch (Exception ex)
            {
                sellodigital = "Clave privada incorrecta";
                return(BadRequest(sellodigital));
            }
            sellodigital = Convert.ToBase64String(bytesFirmados);
            return(Ok(sellodigital));
        }
示例#2
0
        public static async Task <string> GetHashPorFiel(string rutaKey, string rutaArchivo, string Password)
        {
            string Resultado = String.Empty;

            byte[] datosArchivo = null;
            byte[] datosKey     = null;
            using (FileStream cer = File.Open(rutaArchivo, FileMode.Open))
            {
                datosArchivo = new byte[cer.Length];
                cer.Read(datosArchivo, 0, datosArchivo.Length);
            }
            using (FileStream key = File.Open(rutaKey, FileMode.Open))
            {
                datosKey = new byte[key.Length];
                key.Read(datosKey, 0, datosKey.Length);
            }
            using (HttpClient Cliente = new HttpClient())
            {
                Cliente.BaseAddress = new Uri(ConfigurationManager.AppSettings["RutaWebApi"]);
                RequestHashArchivo peticion = new RequestHashArchivo
                {
                    archivo      = Convert.ToBase64String(datosArchivo),
                    claveprivada = Convert.ToBase64String(datosKey),
                    password     = Password
                };
                string ruta = Cliente.BaseAddress + "ObtenerHash";
                HttpResponseMessage request = await Cliente.PostAsync(ruta, new StringContent(JsonConvert.SerializeObject(peticion), Encoding.UTF8, "application/json"));

                if (!request.IsSuccessStatusCode)
                {
                    string razon = await request.Content.ReadAsStringAsync();

                    Resultado = String.Format("{0} {1}", request.ReasonPhrase, razon);
                }
                else
                {
                    Resultado = await request.Content.ReadAsStringAsync();
                }
            }
            return(Resultado);
        }