Index: WebContent/1
===================================================================
--- WebContent/1	(revision ce7309f870ec4a6462f4b046eda45e3df9997e3a)
+++ WebContent/1	(revision ce7309f870ec4a6462f4b046eda45e3df9997e3a)
@@ -0,0 +1,803 @@
+<!DOCTYPE html>
+<!-- release v4.1.8, copyright 2014 - 2015 Kartik Visweswaran -->
+<html lang="en">
+    <head> <!--Inicio del head  -->
+        <meta charset="UTF-8"/>
+        <link href="bootstrap.min.css" rel="stylesheet">
+        <link rel="stylesheet" type="text/css" href="css/dataTables.bootstrap.css">
+        <link rel="stylesheet" type="text/css" href="css/font-awesome.css">
+        
+        <script type="text/javascript" src="jquery.min.js"></script>
+        <script type="text/javascript" src="js/jquery.dataTables.min.js"></script>
+        <script type="text/javascript" src="js/dataTables.bootstrap.js"></script>
+        <script src="bootstrap.min.js" type="text/javascript"></script>
+       
+        <link href="css/fileinput.css" media="all" rel="stylesheet" type="text/css" />
+        <script src="js/jquery.form.js" type="text/javascript"></script>
+        <script src="js/fileinput.js" type="text/javascript"></script> 
+        <script type="text/javascript" src="gitversion.js"></script>
+        <script type="text/javascript" src="hwcrypto-legacy.js"></script>
+        <script type="text/javascript" src="hwcrypto.js"></script>
+        <script type="text/javascript" src="hex2base.js"></script>
+        
+        <script type="text/javascript" charset="utf-8">
+            $(document).ready(function() {
+                $('table.display').dataTable();
+            } );
+        </script>
+
+        
+	</head> <!--fin del head  -->
+	
+	<!-- Header -->
+	<header>
+		<div id="barner">
+			<center>
+			<img class="img-responsive" alt="Cinque Terre" src="cabecera.png">
+			
+		</div>
+	
+		<nav class="navbar navbar-inverse">
+		<div class="container-fluid">
+			<div class="navbar-header">
+				<a class="navbar-brand" href="https://www.cenditel.gob.ve/">CENDITEL</a>
+			</div>
+			<div>
+				<ul class="nav navbar-nav navbar-right">
+					<li class="active"><a href="#">Home</a></li>
+					<li><a href="https://tibisay.cenditel.gob.ve/murachi">Wiki</a></li>
+					<li><a href="#">Contacto</a></li>
+				</ul>
+			</div>
+		</div>
+	</nav>
+	</header>
+<!-- End Header -->
+	
+<!--	<div class="container">
+		<div class="jumbotron">
+			
+
+			<h1><img src="version-beta2.png">Portal de firma electrónica y verificación</h1>
+			<p>Sistema para firmar electrónicamente documentos y verificar los documentos firmados</p> 
+		</div>
+	</div>
+-->
+
+<div class="container">
+    <div class="jumbotron">
+        <h2 align="center"><img src="Banner_1.png" width="100%" height="50%"><I>Portal de firma electrónica y verificación</I></h2    >
+        <!--<p>Sistema para firmar electrónicamente documentos y verificar los documentos firmados</p></h1> -->
+    </div>
+</div>
+
+
+
+<!--Inicio Funciones que utiliza el sistema -->
+	
+	<!-- tomado de https://open-eid.github.io/hwcrypto.js/sign.html -->
+	<script>
+
+    	function log_text(s) {
+      		var d = document.createElement("div");
+      		d.innerHTML = s;
+      		document.getElementById('log').appendChild(d);
+    	}
+
+    	function debug() {
+    		window.hwcrypto.debug().then(function(response) {log_text("Debug: " + response);});
+    	}
+    	
+    	function sign() {
+    		
+    		alert("sign()");
+    		// Clear log
+	    	document.getElementById('log').innerHTML = '';
+    		// Timestamp
+    		log_text("sign() clicked on " + new Date().toUTCString());
+    		
+    		// Select hash
+    		//var hashtype = $("input[name=hash]:checked").val();
+    		var hashtype = "SHA-256";
+    		
+    		// Set backend if asked
+    		//var backend =  $("input[name=backend]:checked").val()
+    		var backend = "autodetect";
+    		
+    		// get language
+    		var lang = "en";
+    		if (!window.hwcrypto.use(backend)) {
+	      		log_text("Selecting backend failed.");
+    		}
+
+   			var hash = $("#hashvalue").val();
+   			log_text("Signing " + hashtype + ": " + hash);
+    		// debug
+    		window.hwcrypto.debug().then(function(response) {
+      			log_text("Debug: " + response);
+	    		}, function(err) {
+      				log_text("debug() failed: " + err);
+      				return;
+	    		});
+    		// Sign
+	    	window.hwcrypto.getCertificate({lang: lang}).then(function(response) {
+    	  		var cert = response;
+      			log_text("Using certificate:\n" + hexToPem(response.hex));
+      			
+      			
+      			window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(response) {
+	        		log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n"));
+    	  			}, function(err) {
+	    	    		log_text("sign() failed: " + err);
+    	  			});
+	    		}, function(err) {
+    	  			log_text("getCertificate() failed: " + err);
+    			}
+	    		
+	    		);
+  		}
+	</script>
+	
+	<script>
+	function logGetCertificate() {
+		
+		alert("logGetCertificate()");
+		// Clear log
+    	document.getElementById('log').innerHTML = '';
+		// Timestamp
+		log_text("sign() clicked on " + new Date().toUTCString());
+		
+		// Select hash
+		//var hashtype = $("input[name=hash]:checked").val();
+		var hashtype = "SHA-256";
+		
+		// Set backend if asked
+		//var backend =  $("input[name=backend]:checked").val()
+		var backend = "autodetect";
+		
+		// get language
+		var lang = "en";
+		if (!window.hwcrypto.use(backend)) {
+      		log_text("Selecting backend failed.");
+		}
+
+			var hash = $("#hashvalue").val();
+			log_text("Signing " + hashtype + ": " + hash);
+		// debug
+		window.hwcrypto.debug().then(function(response) {
+  			log_text("Debug: " + response);
+    		}, function(err) {
+  				log_text("debug() failed: " + err);
+  				return;
+    		});
+		// Sign
+    	window.hwcrypto.getCertificate({lang: lang}).then(function(response) {
+	  		var cert = response;
+  			log_text("Using certificate:\n" + hexToPem(response.hex));
+    	});
+    }
+	
+	
+	function getCertificate() {
+		
+		alert("getCertificate()");
+		// Clear log
+    	document.getElementById('log').innerHTML = '';
+		// Timestamp
+		log_text("sign() clicked on " + new Date().toUTCString());
+		
+		// Set backend if asked
+		//var backend =  $("input[name=backend]:checked").val()
+		var backend = "autodetect";
+		
+		// get language
+		var lang = "en";
+		if (!window.hwcrypto.use(backend)) {
+      		log_text("Selecting backend failed.");
+		}
+    	window.hwcrypto.getCertificate({lang: lang}).then(function(response) {
+	  		var cert = response;
+  			log_text("Using certificate:\n" + hexToPem(response.hex));
+  			return cert;
+    	});
+    }
+	</script>
+
+	<!-- Función que se conecta al servicio web de verificación de la firma electrónica 
+		captura el evento submit y toma el formulario para firmar -->
+	
+	<script>
+    $(function(){
+        $("#firmar").on("submit", function(e){
+            e.preventDefault();
+            var f = $(this);
+            // inicio control de los botones radio en el formulario firmar (pdf,bdoc)--------------------------------------------  
+
+	    //alert("manejo de JsonPDF");
+            
+        // FIRMA DE PDF
+	    if(document.SignFormat.optradio[0].checked) // chequea si el botón radio PDF esta seleccionado y entra a la sección en caso contrario va al otro if (botón radio BDOC)
+	   	{
+	    	alert(document.SignFormat.optradio[0].value);
+			//alert("se presiono firmar pdf")
+            
+            //var formData = new FormData(document.getElementById("verificar"));
+            var formData = new FormData();
+            
+            //formData.append("dato", "valor");
+            formData.append("upload", $("#file-sign")[0].files[0]);
+            //formData.append(f.attr("name"), $(this)[0].files[0]);
+            
+            //alert("antes de ajax");
+            
+            $.ajax({
+                //url: "https://192.168.12.125:8443/Murachi/0.1/archivos",                
+                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos",
+                type: "post",
+                dataType: "json",
+                data: formData,
+                cache: false,
+                contentType: false,
+				processData: false,
+				headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+				success: function(response) {
+						//alert(JSON.stringify(response));
+						var html = manejoJsonPDF(JSON.stringify(response));
+						//alert(html);
+						//alert("ver respuesta")
+						document.getElementById("respuesta").innerHTML = html;
+						
+						// identificador del archivo en el servidor
+						var fileId = response.fileId.toString();
+						//alert("fileId: "+ fileId);
+																		
+						// seleccionar certificado del firmante
+						//alert("va a seleccionar certificado");
+						var cert;
+						window.hwcrypto.getCertificate({lang: "en"}).then(function(response) {
+					  		var cert = response;
+				  			//log_text("Using certificate:\n" + hexToPem(response.hex));
+				  									
+							//alert("cert: "+ cert.hex);
+							
+							var parameters = JSON.stringify({
+								"fileId":fileId,
+								"certificate":cert.hex,
+								"reason":"prueba firma web",
+								"location":"Oficina",
+								"contact":"582746574336",
+								"signatureVisible":"true"
+								});
+							
+							// ahora llamar al ajax de obtener la resena del pdf
+							$.ajax({
+								type: 'POST',
+								contentType: 'application/json',				
+								//url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs",
+								url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
+								dataType: "json",
+								data: parameters,		
+								headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+								success: function(data, textStatus, jqXHR){
+									var json_x = data;
+									var hash = json_x['hash']; 
+									//alert("hash recibido del servidor "+hash);
+									
+									var hashtype = "SHA-256";
+									var lang = "eng";
+									
+									window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(signature) {
+										
+										//var signature = response.hex.match(/.{1,64}/g).join("\n");
+						        		//log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n"));
+						        		//log_text("Generated signature:\n" + signature.hex);
+						        		
+						        		//alert("valor de la firma: " + signature.hex);
+						        		
+						        		$.ajax({
+											type: 'POST',
+											contentType: 'application/json',
+											//url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs/resenas",
+											url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
+											dataType: 'json',
+											data: JSON.stringify({"signature":signature.hex}),
+											headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+											success: function(data, textStatus, jqXHR){
+												/*
+												var json_x = data;
+												var msg = json_x['message'];												
+												alert('Archivo firmado en el servidor: ' + msg);
+												*/
+												alert('Archivo firmado correctamente: ' + data['signedFileId']);
+												
+												alert("ver respuesta");
+												//var linkToDownload = "<a href=\"https://192.168.12.125:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>"; 
+												//var linkToDownload = "<a href=\"https://172.16.137.11:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
+												var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
+												//alert(linkToDownload);
+												document.getElementById("respuesta").innerHTML = linkToDownload;  
+												
+												
+												//descargar el archivo
+												/*
+												//var urlToDownload =	"https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'];
+												$.ajax({
+													type: 'GET',
+													contentType: false,
+													url: "https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'],
+													dataType: false,
+													data: false,
+													success: function(data, textStatus, jqXHR){
+														alert("descargo el archivo");
+													},
+													error: function(jqXHR, textStatus, errorThrown){
+														alert('error en descarga de archivo: ' + textStatus);
+														$("#respuesta").html("error en descarga de archivo: " + textStatus);
+													}
+												});
+												*/
+												// fin de descarga de archivo
+																								
+												
+											},
+											error: function(jqXHR, textStatus, errorThrown){
+												alert('error en pdfs/resenas: ' + textStatus);
+												$("#respuesta").html("error en pdfs/resenas: " + textStatus);
+											}
+										});
+						        					        		
+						      			}, function(err) {
+							        		log_text("sign() failed: " + err);
+							        		alert("sign() failed: " + err);
+							        		$("#respuesta").html("sign() failed: " + err);
+						    	  	});
+									
+								},								
+								error: function(jqXHR, textStatus, errorThrown){
+									//alert('error: ' + textStatus);
+									//var responseText = jQuery.parseJSON(jqXHR.responseText);
+									alert('ajax error function: ' + jqXHR.responseText);
+									$("#respuesta").html("error function: " + jqXHR.responseText);
+								}
+								
+						
+							});
+							
+							
+							
+						}, function(err) {
+				      			log_text("getCertificate() failed: " + err);
+				      			alert("getCertificate() failed: " + err);
+				      			$("#respuesta").html("getCertificate() failed: " + err);
+				    		});
+						
+						
+						
+            	    },
+             		error: function(response) {
+             			//Que se ejecuta cuando finalice la petición de con error
+						$("#respuesta").html('Error...!!!');
+             			alert("ocurrio un error")
+					}
+            });
+	   	}
+        
+        // FIRMA DE BDOC	        
+	    if(document.SignFormat.optradio[1].checked) //chequea si el botón radio BDOC esta seleccionado y entra
+	    {
+	    	alert(document.SignFormat.optradio[1].value);
+			//alert("se presiono firmar")
+            
+            //var formData = new FormData(document.getElementById("verificar"));
+            var formData = new FormData();
+            var fileInput = document.getElementById("file-sign");
+            var list = fileInput.files;
+            for (var i=0; i<list.length; i++){
+				formData.append("upload", $("#file-sign")[0].files[i]);
+			}
+			//alert(list.length);
+            //formData.append("dato", "valor");
+            // TODO: identificar una manera de pasar varios archivos a la vez
+            //formData.append("upload", $("#file-sign")[0].files[0]);
+            
+            
+            
+            $.ajax({
+                //url: "https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/cargas",
+                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/cargas",
+                //url: "https://172.16.137.11:8443/Murachi/0.1/archivos/bdocs/cargas",
+                type: "post",
+                dataType: "json",
+                data: formData,
+                cache: false,
+                contentType: false,
+				processData: false,
+				headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+				success: function(response) {
+						//alert(JSON.stringify(response));
+						
+						//var aux = JSON.stringify(response);
+						//alert("aux: " + aux);
+
+						// identificador del archivo en el servidor
+						var fileId = response.containerId.toString();
+						//alert("fileId: "+ fileId);
+						
+						// seleccionar certificado del firmante
+						//alert("va a seleccionar certificado");
+						var cert;
+						window.hwcrypto.getCertificate({lang: "en"}).then(function(response) {
+					  		var cert = response;
+				  			//log_text("Using certificate:\n" + hexToPem(response.hex));
+				  									
+							//alert("cert: "+ cert.hex);
+							
+							var parameters = JSON.stringify({
+								"fileId":fileId,
+								"certificate":cert.hex,
+								"city":"Rubio",
+								"state":"Tachira",
+								"postalCode":"1234",
+								"country":"Venezuela",
+								"role":"Militar",
+								"addSignature":false
+								});
+							
+							// ahora llamar al ajax de obtener la resena del bdoc
+							$.ajax({
+								type: 'POST',
+								contentType: 'application/json',				
+								//url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs",
+								//url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/firmas/pre",
+								url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/pre",
+								dataType: "json",
+								data: parameters,
+								headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+								success: function(data, textStatus, jqXHR){
+									var json_x = data;
+									var hash = json_x['hash']; 
+									//alert("hash recibido del servidor "+hash);
+									
+									var hashtype = "SHA-256";
+									var lang = "eng";
+									
+									window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(signature) {
+										
+										//var signature = response.hex.match(/.{1,64}/g).join("\n");
+						        		//log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n"));
+						        		//log_text("Generated signature:\n" + signature.hex);
+						        		
+						        		//alert("valor de la firma: " + signature.hex);						        		
+						        		
+						        		$.ajax({
+											type: 'POST',
+											contentType: 'application/json',
+											//url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/resenas",
+											//url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/firmas/post",
+											url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/post",
+											dataType: 'json',
+											data: JSON.stringify({"signature":signature.hex, "containerId":fileId}),
+											headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+											success: function(data, textStatus, jqXHR){
+												/*
+												var json_x = data;
+												var msg = json_x['message'];												
+												alert('Archivo firmado en el servidor: ' + msg);
+												*/
+												alert('Archivo firmado correctamente: ' + data['signedFileId']);
+												
+												alert("ver respuesta");
+												//var linkToDownload = "<a href=\"https://192.168.12.125:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>"; 
+												//var linkToDownload = "<a href=\"https://172.16.137.11:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
+												var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
+												//alert(linkToDownload);
+												document.getElementById("respuesta").innerHTML = linkToDownload;  
+												
+												
+												//descargar el archivo
+												/*
+												//var urlToDownload =	"https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'];
+												$.ajax({
+													type: 'GET',
+													url: "https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'],
+													contentType: false,
+													headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},													
+													dataType: false,
+													data: false,													
+													success: function(data, textStatus, jqXHR){
+														alert("descargo el archivo");
+													},
+													error: function(jqXHR, textStatus, errorThrown){
+														alert('error en descarga de archivo: ' + textStatus);
+														$("#respuesta").html("error en descarga de archivo: " + textStatus);
+													}
+												});
+												*/
+												// fin de descarga de archivo
+																								
+												
+											},
+											error: function(jqXHR, textStatus, errorThrown){
+												alert('error en /bdocs/resenas: ' + textStatus);
+												$("#respuesta").html("error en /bdocs/resenas: " + textStatus);
+											}
+										});
+						        					        		
+						      			}, function(err) {
+							        		log_text("sign() failed: " + err);
+							        		alert("sign() failed: " + err);
+							        		$("#respuesta").html("sign() failed: " + err);
+						    	  	});
+									
+								},								
+								error: function(jqXHR, textStatus, errorThrown){
+									//alert('error: ' + textStatus);
+									//var responseText = jQuery.parseJSON(jqXHR.responseText);
+									alert('ajax error function: ' + jqXHR.responseText);
+									$("#respuesta").html("error function: " + jqXHR.responseText);
+								}
+								
+							});
+														
+						}, function(err) {
+				      			log_text("getCertificate() failed: " + err);
+				      			alert("getCertificate() failed: " + err);
+				      			$("#respuesta").html("getCertificate() failed: " + err);
+				    		});
+												
+            	},
+             	//error: function(response) {
+                error: function(xhr, status, error) {
+             		//Que se ejecuta cuando finalice la petición de con error
+					$("#respuesta").html('Error...!!!');
+             		
+					alert(xhr.responseText);
+					alert(error);
+             		
+					alert("ocurrio un error en cargas");
+					
+					
+             		             		
+				}
+            });
+	    	
+	    	
+	    }
+	        
+	    //fin de control de los botones radio en el formulario firmar (pdf,bdoc)----------------------------------------------
+
+	
+            
+        });
+    });
+    </script>
+    
+
+
+
+	<!-- Función que se conecta se servicio web de verificación de la firma electrónica 
+		captura el evento submit y toma el formulario para enviar el servicio web -->
+	
+	<script>
+    $(function(){
+        $("#verificar").on("submit", function(e){
+            e.preventDefault();
+            var f = $(this);
+            
+            //var formData = new FormData(document.getElementById("verificar"));
+            var formData = new FormData();
+            
+            //formData.append("dato", "valor");
+            formData.append("upload", $("#file-check-sign")[0].files[0]);
+            //formData.append(f.attr("name"), $(this)[0].files[0]);
+            
+            $.ajax({
+                //url: "https://192.168.12.125:8443/Murachi/0.1/archivos/firmados",
+                //url: "https://172.16.137.11:8443/Murachi/murachi/archivos/firmados",                
+                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados",
+                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
+                type: "post",
+                dataType: "json",
+                data: formData,
+                cache: false,
+                contentType: false,
+				processData: false,				
+				success: function(response) {
+						//alert(JSON.stringify(response));
+						var html = manejoJsonPDF(JSON.stringify(response));
+						//alert(html);
+						alert("ver respuesta")
+						document.getElementById("respuestaVerificacion").innerHTML = html;
+						$('table.display').dataTable();
+            	    },
+             		error: function(response) {
+             			//Que se ejecuta cuando finalice la petición de con error
+						$("#respuestaVerificacion").html('Error...!!!');
+					}
+            });
+        });
+    });
+    </script>
+	
+	
+	<!--Función que captura el evento del button reset del formulario verificar
+		y limpia el div respuesta (tabla de la verificación de la firmna)-->
+	
+	<script>
+		$(document).ready(function() {
+		$("#resetVerificacion").click(function() {       // apply to reset button's click event
+			$("#respuestaVerificacion").html(''); 
+		});
+	});
+	</script>
+	
+	 <!--Función que captura el evento del button reset del formulario firmar
+            y limpia el div respuesta (tabla de la firma)-->
+       <script>
+                $(document).ready(function() {
+                $("#reset").click(function() {       // apply to reset button's click event
+                        $("#respuesta").html(''); 
+                });
+        });
+        </script>
+
+	
+	<!--Funcion para el manejo de un archivo json
+		Recibe el json (verificación de una firma pdf), 
+		lo introduce en una tabla 
+		y devuelve una un cadena de texto -->
+		
+		
+	<script>
+		function manejoJsonPDF(json) {
+			
+			var fielJsonEs = {fileId: "Identificador único del archivo en el servidor", fileExist:"El archivo se cargó exitosamente en el servidor", mimeType:"Tipo MIME del archivo verificado", error:"Extension not supported. En caso de que el archivo sea diferente de PDF y BDOC", numberOfSignatures:"Número de firmas existentes en el archivo", signatures:"Lista de firmas", signatureType:"Tipo de firma de archivo PDF", signedOn:"Fecha en que se realiza la firma", integrityCheck:"Chequea la integridad de la firma", timeStamp:"Estampilla de tiempo", reason:"Razón de la firma", location:"Ubicación donde se realiza la firma", alternativeNameOfTheSigner:"Nombre alternativo del firmante", signerCertificateValidFrom:"Fecha de inicio de validez del certificado", signerCertificateStillValid:"El certificado todavía está válido", signerCertificateHasExpired:"El certificado expiró", signatureCoversWholeDocument:"La firma abarca todo el documento PDF", filterSubtype:"Tipo de subfiltro: /adbe.pkcs7.sha1, /adbe.pkcs7.detached", signerCertificateSubject:"Sujeto firmante", signerCertificateValidAtTimeOfSigning:"El certificado es válido en el momento de la firma", encryptionAlgorithm:"Algoritmo de cifrado", timeStampService:"Servicio de estampillado de tiempo", digestAlgorithm:"Algoritmo hash (reseña)", certificatesVerifiedAgainstTheKeyStore:"Certificado verificado contra el repositorio de certificados confiables", documentRevision:"Número de revisión del documento PDF", nameOfTheSigner:"Nombre del firmante", totalDocumentRevisions:"Número total de revisiones del documento PDF", contactInfo:"Información de contacto del firmante", timeStampVerified:"Estampilla de tiempo verificada", signerCertificateIssuer:"Emisor del certificado firmante", signerCertificateValidTo:"Fecha de fin de validez del certificado", signerCertificateSerial:"BDOC: Serial del certificado del firmante", signatureProfile:"BDOC: Perfil de la firma", signatureMethod:"BDOC: Algoritmo de firma utilizado", signatureId:"BDOC: identificador de la firma", signatureSigningTime:"BDOC: Hora y fecha en que se realiza la firma", signerCertificateIsValid:"BDOC: El certificado firmante es válido", signatureValidationException:"BDOC: Exepciones de la validación de la firma", isValid:"BDOC: Firma electrónica válida", signerCertificateSubjectName:"BDOC: Nombre del sujeto firmante", containerValidation:"BDOC: Especifica si el contenedor posee una estructura válida", numberOfDataFiles:"BDOC: Cantidad de archivos incluidos en el contenedor BDOC", dataFiles:"BDOC: Lista de archivos incluidos en el contenedor", name:"BDOC: Nombre del archivo incluido en el contenedor", dataFileSize:"BDOC: Tamaño del archivo incluido en el contenedor", filename:"BDOC: Nombre del archivo incluido en el contenedor", mediaType:"BDOC: Tipo MIME del archivo incluido en el contenedor"};
+			var objVarVerifique = JSON.parse(json);
+			var signatures = ''; //variable que maneja las firmas
+			var fields = ''; //variable que maneja los campos de la firma
+			var title = '<h2> Información de la firma electronica </h2> \n ';
+			var head = '<div class=\'container\'> \n <table id=\' \' class=\'display table table-striped table-bordered\' cellspacing=\'0\' width=\'100%\' > \n <thead> \n <tr>\n <th>#</th>\n <th>Campo</th>\n <th>Descripción</th> \n </tr>\n </thead>\n <tbody> \n';
+			var footer = '</tbody> \n </table> \n </div> \n </div>';
+			var html = title;
+			var numsign = 0; 
+				
+			$.each(objVarVerifique, function(idx, obj) {
+				
+				if(idx == "error") {
+					html = '<h4> Extensión no soportada, verifique el archivo </h4>';       
+                    return(html);
+                    }
+                    
+				if(idx == "numberOfSignatures"){
+					numsign = obj;
+					html += '<h4>' + fielJsonEs[idx] + ': ' + obj +' </h4>\n <br><br>';
+					}
+					
+				if(idx == "signatures") { 
+				signatures = obj; //se almacena la(s) cabecera(s) de las firmas
+				}
+				});
+						
+				var contsing = 1; // variable que indica la firma donde esta posicionado 
+						
+				<!-- recorre las firmas signatures -->
+		
+				$.each(signatures, function(idx, obj) {	
+					html += '<h4> Información de la firma: '+contsing+'<h4> \n';
+					html += head;
+					var contfiels = 1; // variable que indica el campo de la firma
+					fields = obj; // variable que almacena los campos de la firma
+					$.each(fields, function(id, objx) { <!-- Recorreo los campos de la firma -->
+						html += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
+						contfiels++;
+					});
+					contsing++;
+					html += footer;
+					//if(contsing>numsign) html += footer;
+					//else html += footer + head				
+				});
+				//html += footer;
+				return(html);
+            }
+	</script>
+
+        <!--Funcion para el manejo de la extensión de los archivos en el momento de firmar de acuerdo a la selección del tipo de formato de firma 
+            electronica que se vaya a utilizar señalada en el button radio (pdf,bdoc)-->
+
+       <script>
+		function manejoExtension() {
+			if(document.SignFormat.optradio[0].checked)
+				document.getElementById("file-sign").accept=".pdf";
+			else {
+			    document.getElementById("file-sign").accept=".*";
+			    document.getElementById("file-sign").multiple="multiple";
+			    }
+		}
+     </script>
+
+
+   
+<!--Final Funciones que utiliza el sistema -->
+
+	<body>
+		<noscript><h1>Por favor habilite JavaScript!</h1></noscript>
+		
+		<div class="container">
+			<div id="operation">
+				<ul id="tabs-operation" class="nav nav-tabs" data-tabs="tabs">
+					<li class="active"><a href="#firmar" data-toggle="tab">Firmar</a></li>
+					<li><a href="#verificar" data-toggle="tab">Verificar</a></li>
+				</ul>
+				<div id="operation-tab-content" class="tab-content">
+					
+					<!-------------------Sección para firmar (formulario)------------------------->
+					
+					<div class="tab-pane active" id="firmar">
+						<h1>Firmar Electrónicamente</h1>
+						<div class="container kv-main">
+						    <!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat"> -->
+							<!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/murachi/archivos" method="post" id="firmar"> -->
+							<!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos" method="post" id="firmar">  -->
+							<form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat">
+								<h2>Formato para la Firma</h2>
+								<p>Seleccione el tipo de formato que va a utilizar para firmar electrónicamente</p>			
+								<div class="radio">
+									<label><input type="radio" name="optradio" value="pdf" checked >PDF</label>
+								</div>
+								<div class="radio">
+									<label><input type="radio" name="optradio" value="bdoc" >BDOC</label>
+								</div>
+								<br>
+    							<input id="file-sign" class="file" type="file" data-min-file-count="1" onclick="manejoExtension()" name="upload" >
+								<br>
+								<button type="submit" class="btn btn-primary">Enviar</button>
+								<button type="reset" id="reset"  class="btn btn-default">Limpiar</button>
+  								<br>
+                                <br>
+                                <div id="respuesta"> </div>
+
+							</form>
+							<br>
+						</div>
+					</div>
+					
+					<!--------------------Sección para verificar (formulario)---------------------------->
+					
+					<div class="tab-pane" id="verificar">
+						<h1>Verificar la firma electrónica</h1>
+						<div class="container kv-main">
+							<!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos/firmados" method="post" id="verificar"> -->
+							<!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos/firmados" method="post" id="verificar"> -->
+							<form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados" method="post" id="verificar"> 
+								<input id="file-check-sign" class="file" type="file" multiple data-min-file-count="1" name="upload">
+								<br>
+								<button type="submit" class="btn btn-primary">Enviar</button>
+								<button type="reset" id="resetVerificacion" class="btn btn-default">Limpiar</button>
+   								<br>
+                                                                <br>
+                                                                <div id="respuestaVerificacion"> </div>
+
+							</form>
+						</div>
+					</div>
+				</div>
+			</div>
+			<script type="text/javascript">
+				jQuery(document).ready(function ($) {
+					$('#tabs').tab();
+				});
+			</script>
+		</div> 
+		<!-- container -->
+		
+		<!--
+		<p><button id="click1" onclick='sign();'>Click here to invoke <b>sign()</b></button></p>
+		
+		<p><button id="click2" onclick='logGetCertificate();'>get Certificate</button></p>
+		-->
+		
+		<p>
+		<div id="log" style="white-space: pre; font-family: monospace;"></div>
+		
+	</body>
+</html>
Index: WebContent/index.html
===================================================================
--- WebContent/index.html	(revision 853bc8d52ecdc75ef3ae708ba7662a047dfc4d4e)
+++ WebContent/index.html	(revision ce7309f870ec4a6462f4b046eda45e3df9997e3a)
@@ -27,4 +27,33 @@
         </script>
 
+	<style>
+
+            .file-preview-thumbnails .file-preview-frame,
+            .file-preview-thumbnails .file-preview-frame object {
+                min-height: 300px !important;
+                width: 98% !important;
+             }
+
+             .file-preview-thumbnails .file-preview-frame video {
+                 min-height: 300px !important;
+                 width: 98% !important;
+              }
+
+              .file-preview-thumbnails .file-preview-frame audio {
+                  min-height: 300px !important;
+                  width: 98% !important;
+              }
+
+              .file-preview-thumbnails .file-preview-frame .file-preview-image {
+                  min-height: 300px !important;
+                  width: 98% !important;
+              }
+
+              .file-preview-thumbnails .file-preview-frame .file-preview-text {
+                  min-height: 300px !important;
+                  width: 98% !important;
+              }
+        </style>
+
         
 	</head> <!--fin del head  -->
@@ -55,5 +84,5 @@
 <!-- End Header -->
 	
-	<div class="container">
+<!--	<div class="container">
 		<div class="jumbotron">
 			
@@ -63,5 +92,11 @@
 		</div>
 	</div>
-
+-->
+<div class="container">
+    <div class="jumbotron">
+        <h2 align="center"><img src="Banner_4.png" width="100%" height="50%"><I>Portal de firma electrónica y verificación</I></h2    >
+        <!--<p>Sistema para firmar electrónicamente documentos y verificar los documentos firmados</p></h1> -->
+    </div>
+</div>
 
 
@@ -212,5 +247,5 @@
 	    if(document.SignFormat.optradio[0].checked) // chequea si el botón radio PDF esta seleccionado y entra a la sección en caso contrario va al otro if (botón radio BDOC)
 	   	{
-	    	alert(document.SignFormat.optradio[0].value);
+	    	//alert(document.SignFormat.optradio[0].value);
 			//alert("se presiono firmar pdf")
             
@@ -220,4 +255,6 @@
             //formData.append("dato", "valor");
             formData.append("upload", $("#file-sign")[0].files[0]);
+//            console.log(formData);
+            console.log($("#file-sign")[0].files[0]);
             //formData.append(f.attr("name"), $(this)[0].files[0]);
             
@@ -304,5 +341,5 @@
 												alert('Archivo firmado correctamente: ' + data['signedFileId']);
 												
-												alert("ver respuesta");
+												//alert("ver respuesta");
 												//var linkToDownload = "<a href=\"https://192.168.12.125:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>"; 
 												//var linkToDownload = "<a href=\"https://172.16.137.11:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
@@ -379,5 +416,5 @@
 	    if(document.SignFormat.optradio[1].checked) //chequea si el botón radio BDOC esta seleccionado y entra
 	    {
-	    	alert(document.SignFormat.optradio[1].value);
+	    	//alert(document.SignFormat.optradio[1].value);
 			//alert("se presiono firmar")
             
@@ -389,4 +426,5 @@
 				formData.append("upload", $("#file-sign")[0].files[i]);
 			}
+            //console.log($("#file-sign"));
 			//alert(list.length);
             //formData.append("dato", "valor");
@@ -480,5 +518,5 @@
 												alert('Archivo firmado correctamente: ' + data['signedFileId']);
 												
-												alert("ver respuesta");
+												//alert("ver respuesta");
 												//var linkToDownload = "<a href=\"https://192.168.12.125:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>"; 
 												//var linkToDownload = "<a href=\"https://172.16.137.11:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
@@ -598,7 +636,14 @@
 				success: function(response) {
 						//alert(JSON.stringify(response));
-						var html = manejoJsonPDF(JSON.stringify(response));
+                                                var tempJson = JSON.stringify(response);
+                                                var jsonparsed = JSON.parse(tempJson);
+
+                                                var fileType = jsonparsed['mimeType'];
+                                                //alert(fileType);     
+						var html;
+                                                if(fileType == 'application/pdf'){ html = manejoJsonPDF(JSON.stringify(response));}
+                                                else { html = manejoJsonBDOC(JSON.stringify(response));}
 						//alert(html);
-						alert("ver respuesta")
+						//alert("ver respuesta")
 						document.getElementById("respuestaVerificacion").innerHTML = html;
 						$('table.display').dataTable();
@@ -645,5 +690,5 @@
 		function manejoJsonPDF(json) {
 			
-			var fielJsonEs = {fileId: "Identificador único del archivo en el servidor", fileExist:"El archivo se cargó exitosamente en el servidor", mimeType:"Tipo MIME del archivo verificado", error:"Extension not supported. En caso de que el archivo sea diferente de PDF y BDOC", numberOfSignatures:"Número de firmas existentes en el archivo", signatures:"Lista de firmas", signatureType:"Tipo de firma de archivo PDF", signedOn:"Fecha en que se realiza la firma", integrityCheck:"Chequea la integridad de la firma", timeStamp:"Estampilla de tiempo", reason:"Razón de la firma", location:"Ubicación donde se realiza la firma", alternativeNameOfTheSigner:"Nombre alternativo del firmante", signerCertificateValidFrom:"Fecha de inicio de validez del certificado", signerCertificateStillValid:"El certificado todavía está válido", signerCertificateHasExpired:"El certificado expiró", signatureCoversWholeDocument:"La firma abarca todo el documento PDF", filterSubtype:"Tipo de subfiltro: /adbe.pkcs7.sha1, /adbe.pkcs7.detached", signerCertificateSubject:"Sujeto firmante", signerCertificateValidAtTimeOfSigning:"El certificado es válido en el momento de la firma", encryptionAlgorithm:"Algoritmo de cifrado", timeStampService:"Servicio de estampillado de tiempo", digestAlgorithm:"Algoritmo hash (reseña)", certificatesVerifiedAgainstTheKeyStore:"Certificado verificado contra el repositorio de certificados confiables", documentRevision:"Número de revisión del documento PDF", nameOfTheSigner:"Nombre del firmante", totalDocumentRevisions:"Número total de revisiones del documento PDF", contactInfo:"Información de contacto del firmante", timeStampVerified:"Estampilla de tiempo verificada", signerCertificateIssuer:"Emisor del certificado firmante", signerCertificateValidTo:"Fecha de fin de validez del certificado", signerCertificateSerial:"BDOC: Serial del certificado del firmante", signatureProfile:"BDOC: Perfil de la firma", signatureMethod:"BDOC: Algoritmo de firma utilizado", signatureId:"BDOC: identificador de la firma", signatureSigningTime:"BDOC: Hora y fecha en que se realiza la firma", signerCertificateIsValid:"BDOC: El certificado firmante es válido", signatureValidationException:"BDOC: Exepciones de la validación de la firma", isValid:"BDOC: Firma electrónica válida", signerCertificateSubjectName:"BDOC: Nombre del sujeto firmante", containerValidation:"BDOC: Especifica si el contenedor posee una estructura válida", numberOfDataFiles:"BDOC: Cantidad de archivos incluidos en el contenedor BDOC", dataFiles:"BDOC: Lista de archivos incluidos en el contenedor", name:"BDOC: Nombre del archivo incluido en el contenedor", dataFileSize:"BDOC: Tamaño del archivo incluido en el contenedor", filename:"BDOC: Nombre del archivo incluido en el contenedor", mediaType:"BDOC: Tipo MIME del archivo incluido en el contenedor"};
+			var fielJsonEs = {fileId: "Identificador único del archivo en el servidor", fileExist:"El archivo se cargó exitosamente en el servidor", mimeType:"Tipo MIME del archivo verificado", error:"Extension not supported. En caso de que el archivo sea diferente de PDF y BDOC", numberOfSignatures:"Número de firmas existentes en el archivo", signatures:"Lista de firmas", signatureType:"Tipo de firma de archivo PDF", signedOn:"Fecha en que se realiza la firma", integrityCheck:"Chequea la integridad de la firma", timeStamp:"Estampilla de tiempo", reason:"Razón de la firma", location:"Ubicación donde se realiza la firma", alternativeNameOfTheSigner:"Nombre alternativo del firmante", signerCertificateValidFrom:"Fecha de inicio de validez del certificado", signerCertificateStillValid:"El certificado todavía está válido", signerCertificateHasExpired:"El certificado expiró", signatureCoversWholeDocument:"La firma abarca todo el documento PDF", filterSubtype:"Tipo de subfiltro: /adbe.pkcs7.sha1, /adbe.pkcs7.detached", signerCertificateSubject:"Sujeto firmante", signerCertificateValidAtTimeOfSigning:"El certificado es válido en el momento de la firma", encryptionAlgorithm:"Algoritmo de cifrado", timeStampService:"Servicio de estampillado de tiempo", digestAlgorithm:"Algoritmo hash (reseña)", certificatesVerifiedAgainstTheKeyStore:"Certificado verificado contra el repositorio de certificados confiables", documentRevision:"Número de revisión del documento PDF", nameOfTheSigner:"Nombre del firmante", totalDocumentRevisions:"Número total de revisiones del documento PDF", contactInfo:"Información de contacto del firmante", timeStampVerified:"Estampilla de tiempo verificada", signerCertificateIssuer:"Emisor del certificado firmante", signerCertificateValidTo:"Fecha de fin de validez del certificado", signerCertificateSerial:"BDOC: Serial del certificado del firmante", signatureProfile:"BDOC: Perfil de la firma", signatureMethod:"BDOC: Algoritmo de firma utilizado", signatureId:"BDOC: identificador de la firma", signatureSigningTime:"Fecha en que se realiza la firma", signerCertificateIsValid:"El certificado todavía está válido", signatureValidationException:"BDOC: Exepciones de la validación de la firma", isValid:"BDOC: Firma electrónica válida", signerCertificateSubjectName:"Nombre del firmante", containerValidation:"BDOC: Especifica si el contenedor posee una estructura válida", numberOfDataFiles:"BDOC: Cantidad de archivos incluidos en el contenedor BDOC", dataFiles:"BDOC: Lista de archivos incluidos en el contenedor", name:"BDOC: Nombre del archivo incluido en el contenedor", dataFileSize:"BDOC: Tamaño del archivo incluido en el contenedor", filename:"BDOC: Nombre del archivo incluido en el contenedor", mediaType:"BDOC: Tipo MIME del archivo incluido en el contenedor"};
 			var objVarVerifique = JSON.parse(json);
 			var signatures = ''; //variable que maneja las firmas
@@ -654,5 +699,7 @@
 			var html = title;
 			var numsign = 0; 
-				
+		        var htmltemp = '';
+                        var objxEsp = '';
+		
 			$.each(objVarVerifique, function(idx, obj) {
 				
@@ -679,11 +726,149 @@
 					html += '<h4> Información de la firma: '+contsing+'<h4> \n';
 					html += head;
-					var contfiels = 1; // variable que indica el campo de la firma
+					var contfiels = 8; // variable que indica el campo de la firma -- arranca en el campo 6 porque necesitamos que muestre de primero las 5 campos requeridos
 					fields = obj; // variable que almacena los campos de la firma
 					$.each(fields, function(id, objx) { <!-- Recorreo los campos de la firma -->
-						html += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
-						contfiels++;
+                                          //alert('entro firma: ' + fielJsonEs[id]);
+                                             if(fielJsonEs[id]=='Nombre del firmante') {
+                                                        //alert('entro campos de firma');
+							html += '<tr>\n<td>'+'1'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
+							//contfiels++;
+						}
+                                             else if(fielJsonEs[id]=='Fecha en que se realiza la firma') {
+                                                       //alert('entro campos de firma');
+                                                       html += '<tr>\n<td>'+'2'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +'     </td>\n</tr>\n';
+                                                       //contfiels++;
+                                               }
+
+					     else if(fielJsonEs[id]=='Chequea la integridad de la firma') {
+                                                       //alert('entro campos de firma');
+                                                      if(objx == 'true') { objxEsp = 'verdadero';}                                                                                                  else {objxEsp='falso';}
+                                                      html += '<tr>\n<td>'+'3'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objxEsp +'         </td>\n</tr>\n';
+                                                       //contfiels++;
+                                               }
+                                             else if(fielJsonEs[id]=='El certificado todavía está válido') {
+                                                     if(objx == 'true') { objxEsp = 'verdadero';}                                                                                                  else {objxEsp='falso';}
+                                                     html += '<tr>\n<td>'+'4'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objxEsp +'             </td>\n</tr>\n';
+                                                     //contfiels++;
+}  
+                                             else if(fielJsonEs[id]=='Fecha de inicio de validez del certificado') {
+                                                     html += '<tr>\n<td>'+'5'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +'             </td>\n</tr>\n';
+                                                     //contfiels++;
+}  	
+                                             else if(fielJsonEs[id]=='Fecha de fin de validez del certificado') {
+                                                     html += '<tr>\n<td>'+'6'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +'             </td>\n</tr>\n';
+                                                     //contfiels++;
+} 
+                                             else if(fielJsonEs[id]=='El certificado es válido en el momento de la firma') {
+                                                     if(objx == 'true') { objxEsp = 'verdadero';}                                                                                                  else {objxEsp='falso';}
+                                                     html += '<tr>\n<td>'+'7'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objxEsp +'             </td>\n</tr>\n';
+                                                     //contfiels++;
+}  
+				             else { if(objx == 'true' ) { htmltemp += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td    >' + 'verdadero' +' </td>\n</tr>\n';}
+                                                    else if(objx == 'false')  { htmltemp += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id    ] + '</td>\n<td    >' + 'falso' +' </td>\n</tr>\n';}
+                                                    else { htmltemp += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n'; }
+							contfiels++;}     
+					//	html += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
+					//	contfiels++;
 					});
 					contsing++;
+                                         //alert('html:' + html);
+                                         //alert('htmltemp: ' + htmltemp);
+                                        html += htmltemp;
+                                        htmltemp = '';
+                                         //alert('html fin: ' + html);
+					html += footer;
+					//if(contsing>numsign) html += footer;
+					//else html += footer + head				
+				});
+				//html += footer;
+				return(html);
+            }
+	</script>
+
+        <!--Funcion para el manejo de un archivo json
+            Recibe el json (verificación de una firma bdoc), 
+            lo introduce en una tabla 
+            y devuelve una un cadena de texto -->
+
+
+        <script>
+		function manejoJsonBDOC(json) {
+		        var fielJsonEs = {numberOfSignatures:"Número de firma(s)", signaturePostalCode:"Código postal", signerCertificateSerial:"Serial del certificado del firmante", signatureProfile:"Perfil de la firma", signatureState:"Estado donde se realiza la firma", signatureMethod:"Algoritmo de firma utilizado", signatureId:"Identificador de la firma", signatureSigningTime:"Fecha y hora de la firma", signerCertificateIsValid:"El certificado todavía está válido", signerCertificateIssuer:"Emisor del certificado firmante", signatureCity:"Ciudad donde se realiza la firma", signatureS0ValidationException1:"Excepción de validación", isValid:"Firma válida", signerCertificateSubjectName:"Nombre del firmante", signatureCountry:"País donde se realiza la firma" };
+	
+			var objVarVerifique = JSON.parse(json);
+			var signatures = ''; //variable que maneja las firmas
+			var fields = ''; //variable que maneja los campos de la firma
+			var title = '<h2> Información de la firma electronica </h2> \n ';
+			var head = '<div class=\'container\'> \n <table id=\' \' class=\'display table table-striped table-bordered\' cellspacing=\'0\' width=\'100%\' > \n <thead> \n <tr>\n <th>#</th>\n <th>Campo</th>\n <th>Descripción</th> \n </tr>\n </thead>\n <tbody> \n';
+			var footer = '</tbody> \n </table> \n </div> \n </div>';
+			var html = title;
+			var numsign = 0; 
+		        var htmltemp = '';
+                        var objxEsp = '';
+		
+			$.each(objVarVerifique, function(idx, obj) {
+				
+				if(idx == "error") {
+					html = '<h4> Extensión no soportada, verifique el archivo </h4>';       
+                    return(html);
+                    }
+                    
+				if(idx == "numberOfSignatures"){
+					numsign = obj;
+					html += '<h4>' + fielJsonEs[idx] + ': ' + obj +' </h4>\n <br><br>';
+					}
+					
+				if(idx == "signatures") { 
+				signatures = obj; //se almacena la(s) cabecera(s) de las firmas
+				}
+				});
+						
+				var contsing = 1; // variable que indica la firma donde esta posicionado 
+						
+				<!-- recorre las firmas signatures -->
+		
+				$.each(signatures, function(idx, obj) {	
+					html += '<h4> Información de la firma: '+contsing+'<h4> \n';
+					html += head;
+					var contfiels = 5; // variable que indica el campo de la firma -- arranca en el campo 6 porque necesitamos que muestre de primero las 5 campos requeridos
+					fields = obj; // variable que almacena los campos de la firma
+					$.each(fields, function(id, objx) { <!-- Recorreo los campos de la firma -->
+                  
+                                          //alert('entro firma: ' + fielJsonEs[id]);
+                                             if(fielJsonEs[id]=='Nombre del firmante') {
+                                                        //alert('entro campos de firma');
+							html += '<tr>\n<td>'+'1'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
+							//contfiels++;
+						}
+                                             else if(fielJsonEs[id]=='Fecha y hora de la firma') {
+                                                       //alert('entro campos de firma');
+                                                       html += '<tr>\n<td>'+'2'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +'     </td>\n</tr>\n';
+                                                       //contfiels++;
+                                               }
+
+					     else if(fielJsonEs[id]=='Firma válida') {
+                                                       //alert('entro campos de firma');
+                                                      if(objx == 'true') { objxEsp = 'verdadero';}
+                                                      else {objxEsp='falso';}
+                                                      html += '<tr>\n<td>'+'3'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objxEsp +'         </td>\n</tr>\n';
+                                                       //contfiels++;
+                                               }
+                                             else if(fielJsonEs[id]=='El certificado todavía está válido') {
+                                                     if(objx == 'true') { objxEsp = 'verdadero';}                                                                                              else {objxEsp='falso';}
+                                                     html += '<tr>\n<td>'+'4'+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objxEsp +'             </td>\n</tr>\n';
+                                                     //contfiels++;
+}  
+						else { htmltemp += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
+							contfiels++;}     
+					//	html += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
+					//	contfiels++;
+					});
+					contsing++;
+                                         //alert('html:' + html);
+                                         //alert('htmltemp: ' + htmltemp);
+                                        html += htmltemp;
+                                        htmltemp = '';
+                                         //alert('html fin: ' + html);
 					html += footer;
 					//if(contsing>numsign) html += footer;
@@ -713,67 +898,65 @@
 <!--Final Funciones que utiliza el sistema -->
 
-	<body>
-		<noscript><h1>Por favor habilite JavaScript!</h1></noscript>
-		
-		<div class="container">
-			<div id="operation">
-				<ul id="tabs-operation" class="nav nav-tabs" data-tabs="tabs">
-					<li class="active"><a href="#firmar" data-toggle="tab">Firmar</a></li>
-					<li><a href="#verificar" data-toggle="tab">Verificar</a></li>
-				</ul>
-				<div id="operation-tab-content" class="tab-content">
+    <body>
+    <noscript><h1>Por favor habilite JavaScript!</h1></noscript>
+		
+    <div class="container">
+    <div id="operation">
+        <ul id="tabs-operation" class="nav nav-tabs" data-tabs="tabs">
+	    <li class="active"><a href="#firmar" data-toggle="tab">Firmar</a></li>
+            <li><a href="#verificar" data-toggle="tab">Verificar</a></li>
+	</ul>
+	<div id="operation-tab-content" class="tab-content">
 					
-					<!-------------------Sección para firmar (formulario)------------------------->
+	<!-------------------Sección para firmar (formulario)---------->
 					
-					<div class="tab-pane active" id="firmar">
-						<h1>Firmar Electrónicamente</h1>
-						<div class="container kv-main">
-						    <!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat"> -->
-							<!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/murachi/archivos" method="post" id="firmar"> -->
-							<!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos" method="post" id="firmar">  -->
-							<form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat">
-								<h2>Formato para la Firma</h2>
-								<p>Seleccione el tipo de formato que va a utilizar para firmar electrónicamente</p>			
-								<div class="radio">
-									<label><input type="radio" name="optradio" value="pdf" checked >PDF</label>
-								</div>
-								<div class="radio">
-									<label><input type="radio" name="optradio" value="bdoc" >BDOC</label>
-								</div>
-								<br>
-    							<input id="file-sign" class="file" type="file" data-min-file-count="1" onclick="manejoExtension()" name="upload" >
-								<br>
-								<button type="submit" class="btn btn-primary">Enviar</button>
-								<button type="reset" id="reset"  class="btn btn-default">Limpiar</button>
-  								<br>
-                                <br>
-                                <div id="respuesta"> </div>
-
-							</form>
-							<br>
-						</div>
-					</div>
+	    <div class="tab-pane active" id="firmar">
+	        <h1>Firmar Electrónicamente</h1>
+		<div class="container kv-main">
+		<!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat"> -->
+		<!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/murachi/archivos" method="post" id="firmar"> -->
+		<!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos" method="post" id="firmar">  -->
+		<form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat">
+		    <h2>Formato para la Firma</h2>
+		    <p>Seleccione el tipo de formato que va a utilizar para firmar electrónicamente</p>			
+		    <div class="radio">
+			<label><input type="radio" name="optradio" value="pdf" checked >PDF</label>
+		    </div>
+		    <div class="radio">
+			<label><input type="radio" name="optradio" value="bdoc" >BDOC</label>
+		    </div>
+		    <br>
+    		    <input id="file-sign" class="file" type="file" data-min-file-count="1" onclick="manejoExtension()" name="upload" >
+		    <br>
+		    <button type="submit" class="btn btn-primary">Enviar</button>
+		    <button type="reset" id="reset"  class="btn btn-default">Limpiar</button>
+  		    <br>
+                    <br>
+                    <div id="respuesta"> </div>
+		</form>
+		<br>
+	    </div>
+        </div>
 					
-					<!--------------------Sección para verificar (formulario)---------------------------->
-					
-					<div class="tab-pane" id="verificar">
-						<h1>Verificar la firma electrónica</h1>
-						<div class="container kv-main">
-							<!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos/firmados" method="post" id="verificar"> -->
-							<!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos/firmados" method="post" id="verificar"> -->
-							<form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados" method="post" id="verificar"> 
-								<input id="file-check-sign" class="file" type="file" multiple data-min-file-count="1" name="upload">
-								<br>
-								<button type="submit" class="btn btn-primary">Enviar</button>
-								<button type="reset" id="resetVerificacion" class="btn btn-default">Limpiar</button>
-   								<br>
-                                                                <br>
-                                                                <div id="respuestaVerificacion"> </div>
-
-							</form>
-						</div>
-					</div>
-				</div>
-			</div>
+	<!--------------------Sección para verificar (formulario)---------------------------->
+				
+	<div class="tab-pane" id="verificar">
+	    <h1>Verificar la firma electrónica</h1>
+	    <div class="container kv-main">
+	    <!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos/firmados" method="post" id="verificar"> -->
+	    <!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos/firmados" method="post" id="verificar"> -->
+	    <form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados" method="post" id="verificar"> 
+	        <input id="file-check-sign" class="file" type="file" multiple data-min-file-count="1" name="upload">
+	        <br>
+		<button type="submit" class="btn btn-primary">Enviar</button>
+		<button type="reset" id="resetVerificacion" class="btn btn-default">Limpiar</button>
+   		<br>
+                <br>
+                <div id="respuestaVerificacion"> </div>
+            </form>
+	</div>
+    </div>
+</div>
+</div>
 			<script type="text/javascript">
 				jQuery(document).ready(function ($) {
