public static void SignFileWithSHA256Unicode( [MarshalAs(UnmanagedType.LPWStr)] string fileName, [MarshalAs(UnmanagedType.LPWStr)] string nodeToSign, [MarshalAs(UnmanagedType.LPWStr)] string certificateSerialNumber, [MarshalAs(UnmanagedType.LPWStr)] string certificatePassword) { try { Console.WriteLine("Parâmetros:"); Console.WriteLine($"fileName: {fileName}"); Console.WriteLine($"nodeToSign: {nodeToSign}"); Console.WriteLine($"certificateSerialNumber: {certificateSerialNumber}"); Console.WriteLine($"certificatePassword: {certificatePassword}"); var log = new Logger($"log{DateTime.Now:yyyyMMdd}.txt"); var doc = new XmlDocument(); doc.Load(fileName); var xml = new HashSHA256(log).Sign(doc.OuterXml, nodeToSign, certificateSerialNumber, certificatePassword); File.WriteAllText(fileName, xml); Console.WriteLine("Salvo!"); } catch (Exception e) { Console.WriteLine(e); throw; } }
public void ShouldSignFile() { var xml = Xml.OuterXml; var log = new Logger("logTest2.txt"); xml = new HashSHA256(log).Sign(xml, "evtInfoEmpregador", SerialNumber, TokenPin); var signedXml = new XmlDocument(); signedXml.LoadXml(xml); signedXml.Save("envio-assinado-arquivo.xml"); Assert.IsTrue(signedXml.GetElementsByTagName("Signature").Count > 0); }
public static void SignSHA256Unicode( [MarshalAs(UnmanagedType.LPWStr)] ref string xml, [MarshalAs(UnmanagedType.LPWStr)] string nodeToSign, [MarshalAs(UnmanagedType.LPWStr)] string certificateSerialNumber, [MarshalAs(UnmanagedType.LPWStr)] string certificatePassword) { try { Console.WriteLine("Parâmetros:"); Console.WriteLine($"Xml: {xml}"); Console.WriteLine($"nodeToSign: {nodeToSign}"); Console.WriteLine($"certificateSerialNumber: {certificateSerialNumber}"); Console.WriteLine($"certificatePassword: {certificatePassword}"); var log = new Logger($"log{DateTime.Now:yyyyMMdd}.txt"); xml = new HashSHA256(log).Sign(xml, nodeToSign, certificateSerialNumber, certificatePassword) + null; } catch (Exception e) { Console.WriteLine(e); throw; } }
private void validar(string username, string password) { String query = "SELECT * FROM GAME_OF_CODE.Usuario WHERE username = @username AND password = @password AND estado_habilitacion = 1"; String contraseña = HashSHA256.getHash(password); IList <SqlParameter> parametros = new List <SqlParameter>(); parametros.Add(new SqlParameter("@username", username)); parametros.Add(new SqlParameter("@password", contraseña)); SqlDataReader reader = QueryHelper.Instance.exec(query, parametros); if (QueryHelper.Instance.readFrom(reader)) { Util.ShowMessage("Bienvenido " + reader["username"] + ".", MessageBoxIcon.Information); UsuarioSesion.Usuario.nombre = (String)reader["username"]; UsuarioSesion.Usuario.id = (Int32)reader["id_usuario"]; //Usuario logueado correctamente (intentos fallidos = 0) parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); String clearIntentosFallidos = "UPDATE GAME_OF_CODE.Usuario SET intentos_fallidos = 0 WHERE username = @username"; QueryBuilder.Instance.build(clearIntentosFallidos, parametros).ExecuteNonQuery(); //Consulta sucursales parametros.Clear(); String consultaSucursales = "EXEC GAME_OF_CODE.get_cantidad_sucursales_de_usuario " + username; int cantidadDeSucursales = (int)QueryBuilder.Instance.build(consultaSucursales, parametros).ExecuteScalar(); //Si es mas de una sucursal muestra la pantalla de eleccion de sucursales if (cantidadDeSucursales > 1) { this.Hide(); new EleccionSucursal().ShowDialog(); this.Close(); } else { if (cantidadDeSucursales.Equals(1)) { //Hay una sola sucursal, calculo la cant de roles UsuarioSesion.Usuario.idSucursal = mapper.getIDUnicaSucursalUsuario(UsuarioSesion.Usuario.id); if (mapper.SucursalEstaDeshabilitada(UsuarioSesion.Usuario.idSucursal)) { UsuarioSesion.Usuario.idSucursal = -1; Util.ShowMessage("No se puede iniciar sesión porque no tiene asignada una sucursal habilitada.", MessageBoxIcon.Exclamation); return; } parametros.Clear(); String consultaRoles = "EXEC GAME_OF_CODE.get_cantidad_roles_de_usuario " + username; int cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar(); //Si es mas de un rol muestra la pantalla de eleccion de roles, sino la principal if (cantidadDeRoles > 1) { this.Hide(); new EleccionRol().ShowDialog(); this.Close(); } else { parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); String rolDeUsuario = "SELECT r.nombre FROM GAME_OF_CODE.Rol r, GAME_OF_CODE.Rol_por_Usuario ru, GAME_OF_CODE.Usuario u WHERE r.id_rol = ru.id_rol AND ru.id_usuario = u.id_usuario AND u.username = @username AND r.estado_habilitacion = 1"; String rolUser = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar(); UsuarioSesion.Usuario.rol = rolUser; if (UsuarioSesion.Usuario.rol == null) { Util.ShowMessage("No existen roles para iniciar sesión.", MessageBoxIcon.Exclamation); return; } this.Hide(); new MenuPrincipal().ShowDialog(); this.Close(); } } else { Util.ShowMessage("El usuario no posee ninguna sucursal habilitada por lo que no se puede loguear.", MessageBoxIcon.Error); return; } } } else { //Si es admin no se le suma intentos fallidos ya que si se deshabilita el admin principal no lo puede habilitar nadie if (mapper.getIDUsuario(usernameTextBox.Text).Equals(1)) { Util.ShowMessage("Contraseña incorrecta.", MessageBoxIcon.Exclamation); return; } //Chequea si el usuario era correcto parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); String buscaUsuario = "SELECT * FROM GAME_OF_CODE.Usuario WHERE username = @username"; SqlDataReader lector = QueryBuilder.Instance.build(buscaUsuario, parametros).ExecuteReader(); if (lector.Read()) { // Se fija si el usuario esta inhabilitado parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); parametros.Add(new SqlParameter("@password", contraseña)); String estaDeshabilitado = "SELECT * FROM GAME_OF_CODE.Usuario WHERE username = @username AND estado_habilitacion = 0"; SqlDataReader userDeshabilitado = QueryBuilder.Instance.build(estaDeshabilitado, parametros).ExecuteReader(); if (userDeshabilitado.Read()) { Util.ShowMessage("El usuario está deshabilitado.", MessageBoxIcon.Information); return; } // Suma un fallido parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); String sumaFallido = "UPDATE GAME_OF_CODE.Usuario SET intentos_fallidos = intentos_fallidos + 1 WHERE username = @username"; QueryBuilder.Instance.build(sumaFallido, parametros).ExecuteNonQuery(); // Si es el tercer fallido se deshabilita al usuario parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); String cantidadFallidos = "SELECT intentos_fallidos FROM GAME_OF_CODE.Usuario WHERE username = @username"; int intentosFallidos = Convert.ToInt32(QueryBuilder.Instance.build(cantidadFallidos, parametros).ExecuteScalar()); if (intentosFallidos == 3) { parametros.Clear(); parametros.Add(new SqlParameter("@username", username)); String deshabilitar = "UPDATE GAME_OF_CODE.Usuario SET estado_habilitacion = 0 WHERE username = @username"; QueryBuilder.Instance.build(deshabilitar, parametros).ExecuteNonQuery(); Util.ShowMessage("Contraseña incorrecta." + '\n' + "Intentos fallidos: " + intentosFallidos + ".\n" + "El usuario fue deshabilitado.", MessageBoxIcon.Exclamation); } else { Util.ShowMessage("Contraseña incorrecta." + '\n' + "Intentos fallidos: " + intentosFallidos + ".", MessageBoxIcon.Exclamation); } } else { Util.ShowMessage("El usuario no existe.", MessageBoxIcon.Exclamation); } } }
/// <summary> /// Computes SHA256 of the file /// </summary> /// <returns>The human readable SHA256 checksum of the file</returns> public string sha256() { Hash h = new HashSHA256(task); return(h.digest(filename)); }
static void Main(string[] args) { //args //Dir List <string> directory = new List <string>(); int count = 0; for (int i = 0; i < args.Length; i++) { if (Directory.Exists(args[i])) { directory.Add(args[i]); count++; } else { break; } } #region hash Hasher hash = new HashMD5(); try { HashType hashType = (HashType)Enum.Parse(typeof(HashType), args[count], true); if (hashType == HashType.MD5) { hash = new HashMD5(); } if (hashType == HashType.SHA256) { hash = new HashSHA256(); } if (hashType == HashType.SHA512) { hash = new HashSHA512(); } } catch (Exception e) { Console.WriteLine("Error parsing second command line argument Fill in one of these: " + HashType.MD5.ToString() + " " + HashType.SHA256 + " " + e); Console.ReadLine(); Environment.Exit(1); } #endregion //initial vars string fileUnfinishedTag = "unf"; string logFileName = "MD5rebornLogs"; //initial classes Logger logger = new FileLogger(logFileName); logSystemInfo(logger); Terminal terminal = new TerminalLocalScreen(); //dirCheck DataChecker.DataChecker dataChecker = new DataCheckerLocalHDD(logger, directory, fileUnfinishedTag); folderState state; List <string> files = new List <string>(); dataChecker.GetStatus(out state, out files); if (state == folderState.finished) { tManager = new ThreadManager(logger, dataChecker, directory, fileUnfinishedTag, files[0], hash); } else //state.none { tManager = new ThreadManager(logger, dataChecker, directory, fileUnfinishedTag, hash); } //startAguments dir //make logger writes down basic info in a txt file like cores/os id etc //checklatestmake hash //depending on outcome -> fire up and finish files then fire up threadmanager //else fire up threadmanager and hash new files //fire up diffrent thread for console commands //fire up extra thread for displaying data tManager.Start(); }