Index: WebContent/index.html
===================================================================
--- WebContent/index.html	(revision 349c307e9a7a9d7dbd4c359334150c4fef300c31)
+++ WebContent/index.html	(revision f012b7f26a80aab83e97b8ff8964b5a43d152b97)
@@ -580,8 +580,8 @@
             
             $.ajax({
-                url: "https://192.168.12.125:8443/Murachi/0.1/archivos/firmados",
+                //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://172.16.137.11:8443/JAXRS-Murachi/murachi/archivos",
-                //url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados",
+                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados",
                 type: "post",
                 dataType: "json",
Index: WebContent/index.html.original
===================================================================
--- WebContent/index.html.original	(revision f012b7f26a80aab83e97b8ff8964b5a43d152b97)
+++ WebContent/index.html.original	(revision f012b7f26a80aab83e97b8ff8964b5a43d152b97)
@@ -0,0 +1,758 @@
+<!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>
+
+
+
+
+<!--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);
+            
+            //alert("se presiono firmar")
+            
+            //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]);
+            
+            $.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,
+				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,		
+								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}),
+											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")
+					}
+            });
+        });
+    });
+    </script>
+     -->
+
+    <!-- Prueba de firma de BDOC -->
+      
+	<script>
+    $(function(){
+        $("#firmar").on("submit", function(e){
+            e.preventDefault();
+            var f = $(this);
+            
+            //alert("se presiono firmar")
+            
+            //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]);
+            
+            $.ajax({
+                url: "https://192.168.12.125:8443/Murachi/0.1/archivos",
+                //url: "https://172.16.137.11:8443/Murachi/murachi/archivos",                
+                //url: "https://172.16.137.11:8443/JAXRS-Murachi/murachi/archivos",
+                //url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos",
+                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("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,
+								"city":"Merida",
+								"state":"Merida",
+								"postalCode":"5101",
+								"country":"Venezuela",
+								"role":"Desarrollador",
+								"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://172.16.137.11:8443/Murachi/murachi/archivos/pdfs",
+								//url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
+								dataType: "json",
+								data: parameters,		
+								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://172.16.137.11:8443/Murachi/murachi/archivos/pdfs/resenas",
+											//url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
+											dataType: 'json',
+											data: JSON.stringify({"signature":signature.hex}),
+											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 /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) {
+             			//Que se ejecuta cuando finalice la petición de con error
+						$("#respuesta").html('Error...!!!');
+             			alert("ocurrio un error")
+					}
+            });
+        });
+    });
+    </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/murachi/archivos/firmados",
+                //url: "https://172.16.137.11:8443/Murachi/murachi/archivos/firmados",                
+                //url: "https://172.16.137.11:8443/JAXRS-Murachi/murachi/archivos",
+                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados",
+                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 cactura 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 cactura 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>
+
+
+
+   
+<!--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/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">
+								<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">PDF</label>
+								</div>
+								<div class="radio">
+									<label><input type="radio" name="optradio">BDOC</label>
+								</div>
+								<br>
+    							<input id="file-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="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/murachi/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>
