EntradaAdmin.php 6.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
<?php include("IncludeFiles/conexion.php"); ?>
<html>
    <head><TITLE>Firma Digital</TITLE>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script language="JavaScript" src="IncludeFiles/ObjAjax.js"></script>
        <link rel="stylesheet" type="text/css" href="stilo.css" media="screen" />
        <script language="JavaScript">
            function valida(formulario){
                // 	var Ok=true;
                var Archivo = formulario.Archivo.value;
                var Contrasena = formulario.Contrasena.value;

                if(Archivo == ""){
                    alert("Seleccione su firma digital");
                    return(false);
                }
	
                if(Contrasena == ""){
                    alert("Ingrese la clave de su firma digital");
                    formulario.Contrasena.focus();
                    return(false);
                }

            }
	//1b53f5a5
	
        </script>
    </head>


    <?php
    if (!isset($_POST["Upload"]) && !isset($_GET["Accion"])) {
        ?>
        <br/><br/><br/><br/><br/><br/>
        <form action="" method="POST" onsubmit="return valida(this);" enctype="multipart/form-data">
            <table align="center">  


                <tr class="MYTABLE"><td colspan="2" align="center"><strong>AUTENTICACION DE USUARIOS <br> CON FIRMA DIGITAL</strong></td></tr>
                <tr><td class="MYTABLE"><strong>Firma digital:</strong></td><td class="FONDO"><input type="hidden" id="Upload" name="Upload" value="Upload"/>
                        <input type="file" id="Archivo" name="Archivo"/></td></tr>
                <tr><td class="MYTABLE"><strong>Contrase&ntilde;a de firma digital:</strong></td>
                    <td class="FONDO"><input type="password" id="Contrasena" name="Contrasena"/></td></tr>

                <tr class="MYTABLE"><td colspan="2"  align="right">
                        <input type="submit" id="Enviar" name="Enviar" value="ENTRAR"/>
                    </td>
                </tr>
            </table>
        </form>

        <?php
    } else {

        conectar();

        if (isset($_POST["Upload"])) {

            $p12cert = array();
            // $file = $_POST["Archivo"];

            $tamano = $_FILES["Archivo"]['size'];
            $tipo = $_FILES["Archivo"]['type'];
            $archivo = $_FILES["Archivo"]['name'];
            $prefijo = substr(md5(uniqid(rand())), 0, 6);

            if ($archivo != "") {
                // guardamos el archivo a la carpeta files
                $destino = "Files/" . $prefijo . "_" . $archivo;
                if (copy($_FILES['Archivo']['tmp_name'], $destino)) {
                    $status = "Archivo subido: <b>" . $archivo . "</b>";
                    $control = "<input type='button' id='eliminar' name='eliminar' value='REGRESAR' onclick='window.location=window.location;'>
		<div id='Progreso';></div>";
                } else {
                    $status = "Error al subir el archivo";
                    $control = "<input type='button' id='eliminar' name='eliminar' value='Error de Carga' onclick='window.location=window.location'>";
                }
            } else {
                $status = "Error al subir archivo";
                $control = "<input type='button' id='eliminar' name='eliminar' value='Error de Archivo' onclick='window.location=window.location'>";
            }

            echo $control;
        }


        if (isset($_GET["Accion"])) {

            switch ($_GET["Accion"]) {
                case 'Eliminar':
                    unlink($_GET["Archivo"]);
                    echo "Archivo Eliminardo: " . $_GET["Archivo"] . '~';
                    echo "<br>";
                    break;
            }
        }



        $p12cert = array();
        $p12file = $destino;
        $pass = $_POST["Contrasena"];
        $fp = fopen($p12file, "r");
        $p12buf = fread($fp, filesize($p12file));
        fclose($fp);
        if (openssl_pkcs12_read($p12buf, $p12cert, $pass)) {
            $pkey_data = print_r($p12cert["pkey"], true);
            $cert_data = print_r($p12cert["cert"], true);
            $Error = false;
        } else {
            $Error = true;
        }

        if ($Error == false) {
//verificacion de datos

            $priv_key = openssl_pkey_get_private(array($pkey_data, ""));
//$cert_res=openssl_x509_read($dbbase64Cert_data);
            $verification = openssl_x509_check_private_key($cert_data, $priv_key);

            $contents = file_get_contents($destino);

            function print_element($item, $key) {
                if (is_array($item)) {
                    echo "$key is Array:<br>";
                    array_walk($item, 'print_element');
                    echo "$key done<br>";
                }
                else
                    echo "$key = $item<br>" . $key . "<br><br>";
            }

// Get a certificate resource from the PEM string.
            $cert = openssl_x509_read($cert_data);

            // Parse the resource and print out the contents.
            $cert_data2 = openssl_x509_parse($cert);

            //echo "hash_FirmaDigital=> " . $cert_data2["hash"] . "<br>fin hash<br>";

            $hash = $cert_data2["hash"];
            $nombre_usuario=$cert_data2["subject"]["CN"];
            $emisor_firmas=$cert_data2["issuer"]["O"];
            
            //echo ' hash: '.$hash.' -> nombre_usuario: '.$nombre_usuario;
            echo "<div align='center'>Validando sesion <br/> <img src='imagenes/barra.gif'/></div>";
            ?>
            <form method="POST" id="formulario_hash" name="formulario_hash" action="GenerarFirma.php" style="visibility: hidden;">
                <input type="text" id="hash" name="hash" value="<?php echo $hash; ?>"/>
                <input type="text" id="nombre_usuario" name="nombre_usuario" value="<?php echo $nombre_usuario; ?>"/>
                <input type="text" id="emisor_firmas" name="emisor_firmas" value="<?php echo $emisor_firmas; ?>"/>
                
            </form>
            <script language="javascript">
                Eliminar3('<?php echo $destino; ?>');
            </script>
            <?php
            //array_walk( $cert_data2, 'print_element' );
        }else {
            
            echo "Contrase&ntilde;a de firma digital no es la correcta!";
            ?>
            <script language="javascript">
                Eliminar3('<php echo $destino; ?>');
            </script>         
            <?php
        }

        desconectar();
    }
    ?>

</html>