source: prototipo_portal_2018/WebContent/1 @ ce7309f

Last change on this file since ce7309f was ce7309f, checked in by Pedro Buitrago <pbuitrago@…>, 8 years ago

se agrego a la pagina index.html la sección de <style> para el manejo de visualizacion de los documentos

  • Property mode set to 100644
File size: 32.5 KB
Line 
1<!DOCTYPE html>
2<!-- release v4.1.8, copyright 2014 - 2015 Kartik Visweswaran -->
3<html lang="en">
4    <head> <!--Inicio del head  -->
5        <meta charset="UTF-8"/>
6        <link href="bootstrap.min.css" rel="stylesheet">
7        <link rel="stylesheet" type="text/css" href="css/dataTables.bootstrap.css">
8        <link rel="stylesheet" type="text/css" href="css/font-awesome.css">
9       
10        <script type="text/javascript" src="jquery.min.js"></script>
11        <script type="text/javascript" src="js/jquery.dataTables.min.js"></script>
12        <script type="text/javascript" src="js/dataTables.bootstrap.js"></script>
13        <script src="bootstrap.min.js" type="text/javascript"></script>
14       
15        <link href="css/fileinput.css" media="all" rel="stylesheet" type="text/css" />
16        <script src="js/jquery.form.js" type="text/javascript"></script>
17        <script src="js/fileinput.js" type="text/javascript"></script>
18        <script type="text/javascript" src="gitversion.js"></script>
19        <script type="text/javascript" src="hwcrypto-legacy.js"></script>
20        <script type="text/javascript" src="hwcrypto.js"></script>
21        <script type="text/javascript" src="hex2base.js"></script>
22       
23        <script type="text/javascript" charset="utf-8">
24            $(document).ready(function() {
25                $('table.display').dataTable();
26            } );
27        </script>
28
29       
30        </head> <!--fin del head  -->
31       
32        <!-- Header -->
33        <header>
34                <div id="barner">
35                        <center>
36                        <img class="img-responsive" alt="Cinque Terre" src="cabecera.png">
37                       
38                </div>
39       
40                <nav class="navbar navbar-inverse">
41                <div class="container-fluid">
42                        <div class="navbar-header">
43                                <a class="navbar-brand" href="https://www.cenditel.gob.ve/">CENDITEL</a>
44                        </div>
45                        <div>
46                                <ul class="nav navbar-nav navbar-right">
47                                        <li class="active"><a href="#">Home</a></li>
48                                        <li><a href="https://tibisay.cenditel.gob.ve/murachi">Wiki</a></li>
49                                        <li><a href="#">Contacto</a></li>
50                                </ul>
51                        </div>
52                </div>
53        </nav>
54        </header>
55<!-- End Header -->
56       
57<!--    <div class="container">
58                <div class="jumbotron">
59                       
60
61                        <h1><img src="version-beta2.png">Portal de firma electrónica y verificación</h1>
62                        <p>Sistema para firmar electrónicamente documentos y verificar los documentos firmados</p>
63                </div>
64        </div>
65-->
66
67<div class="container">
68    <div class="jumbotron">
69        <h2 align="center"><img src="Banner_1.png" width="100%" height="50%"><I>Portal de firma electrónica y verificación</I></h2    >
70        <!--<p>Sistema para firmar electrónicamente documentos y verificar los documentos firmados</p></h1> -->
71    </div>
72</div>
73
74
75
76<!--Inicio Funciones que utiliza el sistema -->
77       
78        <!-- tomado de https://open-eid.github.io/hwcrypto.js/sign.html -->
79        <script>
80
81        function log_text(s) {
82                var d = document.createElement("div");
83                d.innerHTML = s;
84                document.getElementById('log').appendChild(d);
85        }
86
87        function debug() {
88                window.hwcrypto.debug().then(function(response) {log_text("Debug: " + response);});
89        }
90       
91        function sign() {
92               
93                alert("sign()");
94                // Clear log
95                document.getElementById('log').innerHTML = '';
96                // Timestamp
97                log_text("sign() clicked on " + new Date().toUTCString());
98               
99                // Select hash
100                //var hashtype = $("input[name=hash]:checked").val();
101                var hashtype = "SHA-256";
102               
103                // Set backend if asked
104                //var backend =  $("input[name=backend]:checked").val()
105                var backend = "autodetect";
106               
107                // get language
108                var lang = "en";
109                if (!window.hwcrypto.use(backend)) {
110                        log_text("Selecting backend failed.");
111                }
112
113                        var hash = $("#hashvalue").val();
114                        log_text("Signing " + hashtype + ": " + hash);
115                // debug
116                window.hwcrypto.debug().then(function(response) {
117                        log_text("Debug: " + response);
118                        }, function(err) {
119                                log_text("debug() failed: " + err);
120                                return;
121                        });
122                // Sign
123                window.hwcrypto.getCertificate({lang: lang}).then(function(response) {
124                        var cert = response;
125                        log_text("Using certificate:\n" + hexToPem(response.hex));
126                       
127                       
128                        window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(response) {
129                                log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n"));
130                                }, function(err) {
131                                log_text("sign() failed: " + err);
132                                });
133                        }, function(err) {
134                                log_text("getCertificate() failed: " + err);
135                        }
136                       
137                        );
138                }
139        </script>
140       
141        <script>
142        function logGetCertificate() {
143               
144                alert("logGetCertificate()");
145                // Clear log
146        document.getElementById('log').innerHTML = '';
147                // Timestamp
148                log_text("sign() clicked on " + new Date().toUTCString());
149               
150                // Select hash
151                //var hashtype = $("input[name=hash]:checked").val();
152                var hashtype = "SHA-256";
153               
154                // Set backend if asked
155                //var backend =  $("input[name=backend]:checked").val()
156                var backend = "autodetect";
157               
158                // get language
159                var lang = "en";
160                if (!window.hwcrypto.use(backend)) {
161                log_text("Selecting backend failed.");
162                }
163
164                        var hash = $("#hashvalue").val();
165                        log_text("Signing " + hashtype + ": " + hash);
166                // debug
167                window.hwcrypto.debug().then(function(response) {
168                        log_text("Debug: " + response);
169                }, function(err) {
170                                log_text("debug() failed: " + err);
171                                return;
172                });
173                // Sign
174        window.hwcrypto.getCertificate({lang: lang}).then(function(response) {
175                        var cert = response;
176                        log_text("Using certificate:\n" + hexToPem(response.hex));
177        });
178    }
179       
180       
181        function getCertificate() {
182               
183                alert("getCertificate()");
184                // Clear log
185        document.getElementById('log').innerHTML = '';
186                // Timestamp
187                log_text("sign() clicked on " + new Date().toUTCString());
188               
189                // Set backend if asked
190                //var backend =  $("input[name=backend]:checked").val()
191                var backend = "autodetect";
192               
193                // get language
194                var lang = "en";
195                if (!window.hwcrypto.use(backend)) {
196                log_text("Selecting backend failed.");
197                }
198        window.hwcrypto.getCertificate({lang: lang}).then(function(response) {
199                        var cert = response;
200                        log_text("Using certificate:\n" + hexToPem(response.hex));
201                        return cert;
202        });
203    }
204        </script>
205
206        <!-- Función que se conecta al servicio web de verificación de la firma electrónica
207                captura el evento submit y toma el formulario para firmar -->
208       
209        <script>
210    $(function(){
211        $("#firmar").on("submit", function(e){
212            e.preventDefault();
213            var f = $(this);
214            // inicio control de los botones radio en el formulario firmar (pdf,bdoc)-------------------------------------------- 
215
216            //alert("manejo de JsonPDF");
217           
218        // FIRMA DE PDF
219            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)
220                {
221                alert(document.SignFormat.optradio[0].value);
222                        //alert("se presiono firmar pdf")
223           
224            //var formData = new FormData(document.getElementById("verificar"));
225            var formData = new FormData();
226           
227            //formData.append("dato", "valor");
228            formData.append("upload", $("#file-sign")[0].files[0]);
229            //formData.append(f.attr("name"), $(this)[0].files[0]);
230           
231            //alert("antes de ajax");
232           
233            $.ajax({
234                //url: "https://192.168.12.125:8443/Murachi/0.1/archivos",               
235                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos",
236                type: "post",
237                dataType: "json",
238                data: formData,
239                cache: false,
240                contentType: false,
241                                processData: false,
242                                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
243                                success: function(response) {
244                                                //alert(JSON.stringify(response));
245                                                var html = manejoJsonPDF(JSON.stringify(response));
246                                                //alert(html);
247                                                //alert("ver respuesta")
248                                                document.getElementById("respuesta").innerHTML = html;
249                                               
250                                                // identificador del archivo en el servidor
251                                                var fileId = response.fileId.toString();
252                                                //alert("fileId: "+ fileId);
253                                                                                                                                               
254                                                // seleccionar certificado del firmante
255                                                //alert("va a seleccionar certificado");
256                                                var cert;
257                                                window.hwcrypto.getCertificate({lang: "en"}).then(function(response) {
258                                                        var cert = response;
259                                                        //log_text("Using certificate:\n" + hexToPem(response.hex));
260                                                                                                       
261                                                        //alert("cert: "+ cert.hex);
262                                                       
263                                                        var parameters = JSON.stringify({
264                                                                "fileId":fileId,
265                                                                "certificate":cert.hex,
266                                                                "reason":"prueba firma web",
267                                                                "location":"Oficina",
268                                                                "contact":"582746574336",
269                                                                "signatureVisible":"true"
270                                                                });
271                                                       
272                                                        // ahora llamar al ajax de obtener la resena del pdf
273                                                        $.ajax({
274                                                                type: 'POST',
275                                                                contentType: 'application/json',                               
276                                                                //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs",
277                                                                url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
278                                                                dataType: "json",
279                                                                data: parameters,               
280                                                                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
281                                                                success: function(data, textStatus, jqXHR){
282                                                                        var json_x = data;
283                                                                        var hash = json_x['hash'];
284                                                                        //alert("hash recibido del servidor "+hash);
285                                                                       
286                                                                        var hashtype = "SHA-256";
287                                                                        var lang = "eng";
288                                                                       
289                                                                        window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(signature) {
290                                                                               
291                                                                                //var signature = response.hex.match(/.{1,64}/g).join("\n");
292                                                                        //log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n"));
293                                                                        //log_text("Generated signature:\n" + signature.hex);
294                                                                       
295                                                                        //alert("valor de la firma: " + signature.hex);
296                                                                       
297                                                                        $.ajax({
298                                                                                        type: 'POST',
299                                                                                        contentType: 'application/json',
300                                                                                        //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs/resenas",
301                                                                                        url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
302                                                                                        dataType: 'json',
303                                                                                        data: JSON.stringify({"signature":signature.hex}),
304                                                                                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
305                                                                                        success: function(data, textStatus, jqXHR){
306                                                                                                /*
307                                                                                                var json_x = data;
308                                                                                                var msg = json_x['message'];                                                                                           
309                                                                                                alert('Archivo firmado en el servidor: ' + msg);
310                                                                                                */
311                                                                                                alert('Archivo firmado correctamente: ' + data['signedFileId']);
312                                                                                               
313                                                                                                alert("ver respuesta");
314                                                                                                //var linkToDownload = "<a href=\"https://192.168.12.125:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
315                                                                                                //var linkToDownload = "<a href=\"https://172.16.137.11:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
316                                                                                                var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
317                                                                                                //alert(linkToDownload);
318                                                                                                document.getElementById("respuesta").innerHTML = linkToDownload; 
319                                                                                               
320                                                                                               
321                                                                                                //descargar el archivo
322                                                                                                /*
323                                                                                                //var urlToDownload =   "https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'];
324                                                                                                $.ajax({
325                                                                                                        type: 'GET',
326                                                                                                        contentType: false,
327                                                                                                        url: "https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'],
328                                                                                                        dataType: false,
329                                                                                                        data: false,
330                                                                                                        success: function(data, textStatus, jqXHR){
331                                                                                                                alert("descargo el archivo");
332                                                                                                        },
333                                                                                                        error: function(jqXHR, textStatus, errorThrown){
334                                                                                                                alert('error en descarga de archivo: ' + textStatus);
335                                                                                                                $("#respuesta").html("error en descarga de archivo: " + textStatus);
336                                                                                                        }
337                                                                                                });
338                                                                                                */
339                                                                                                // fin de descarga de archivo
340                                                                                                                                                                                               
341                                                                                               
342                                                                                        },
343                                                                                        error: function(jqXHR, textStatus, errorThrown){
344                                                                                                alert('error en pdfs/resenas: ' + textStatus);
345                                                                                                $("#respuesta").html("error en pdfs/resenas: " + textStatus);
346                                                                                        }
347                                                                                });
348                                                                                                                       
349                                                                        }, function(err) {
350                                                                                log_text("sign() failed: " + err);
351                                                                                alert("sign() failed: " + err);
352                                                                                $("#respuesta").html("sign() failed: " + err);
353                                                                });
354                                                                       
355                                                                },                                                             
356                                                                error: function(jqXHR, textStatus, errorThrown){
357                                                                        //alert('error: ' + textStatus);
358                                                                        //var responseText = jQuery.parseJSON(jqXHR.responseText);
359                                                                        alert('ajax error function: ' + jqXHR.responseText);
360                                                                        $("#respuesta").html("error function: " + jqXHR.responseText);
361                                                                }
362                                                               
363                                               
364                                                        });
365                                                       
366                                                       
367                                                       
368                                                }, function(err) {
369                                                        log_text("getCertificate() failed: " + err);
370                                                        alert("getCertificate() failed: " + err);
371                                                        $("#respuesta").html("getCertificate() failed: " + err);
372                                                });
373                                               
374                                               
375                                               
376                    },
377                        error: function(response) {
378                                //Que se ejecuta cuando finalice la petición de con error
379                                                $("#respuesta").html('Error...!!!');
380                                alert("ocurrio un error")
381                                        }
382            });
383                }
384       
385        // FIRMA DE BDOC               
386            if(document.SignFormat.optradio[1].checked) //chequea si el botón radio BDOC esta seleccionado y entra
387            {
388                alert(document.SignFormat.optradio[1].value);
389                        //alert("se presiono firmar")
390           
391            //var formData = new FormData(document.getElementById("verificar"));
392            var formData = new FormData();
393            var fileInput = document.getElementById("file-sign");
394            var list = fileInput.files;
395            for (var i=0; i<list.length; i++){
396                                formData.append("upload", $("#file-sign")[0].files[i]);
397                        }
398                        //alert(list.length);
399            //formData.append("dato", "valor");
400            // TODO: identificar una manera de pasar varios archivos a la vez
401            //formData.append("upload", $("#file-sign")[0].files[0]);
402           
403           
404           
405            $.ajax({
406                //url: "https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/cargas",
407                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/cargas",
408                //url: "https://172.16.137.11:8443/Murachi/0.1/archivos/bdocs/cargas",
409                type: "post",
410                dataType: "json",
411                data: formData,
412                cache: false,
413                contentType: false,
414                                processData: false,
415                                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
416                                success: function(response) {
417                                                //alert(JSON.stringify(response));
418                                               
419                                                //var aux = JSON.stringify(response);
420                                                //alert("aux: " + aux);
421
422                                                // identificador del archivo en el servidor
423                                                var fileId = response.containerId.toString();
424                                                //alert("fileId: "+ fileId);
425                                               
426                                                // seleccionar certificado del firmante
427                                                //alert("va a seleccionar certificado");
428                                                var cert;
429                                                window.hwcrypto.getCertificate({lang: "en"}).then(function(response) {
430                                                        var cert = response;
431                                                        //log_text("Using certificate:\n" + hexToPem(response.hex));
432                                                                                                       
433                                                        //alert("cert: "+ cert.hex);
434                                                       
435                                                        var parameters = JSON.stringify({
436                                                                "fileId":fileId,
437                                                                "certificate":cert.hex,
438                                                                "city":"Rubio",
439                                                                "state":"Tachira",
440                                                                "postalCode":"1234",
441                                                                "country":"Venezuela",
442                                                                "role":"Militar",
443                                                                "addSignature":false
444                                                                });
445                                                       
446                                                        // ahora llamar al ajax de obtener la resena del bdoc
447                                                        $.ajax({
448                                                                type: 'POST',
449                                                                contentType: 'application/json',                               
450                                                                //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs",
451                                                                //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/firmas/pre",
452                                                                url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/pre",
453                                                                dataType: "json",
454                                                                data: parameters,
455                                                                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
456                                                                success: function(data, textStatus, jqXHR){
457                                                                        var json_x = data;
458                                                                        var hash = json_x['hash'];
459                                                                        //alert("hash recibido del servidor "+hash);
460                                                                       
461                                                                        var hashtype = "SHA-256";
462                                                                        var lang = "eng";
463                                                                       
464                                                                        window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(signature) {
465                                                                               
466                                                                                //var signature = response.hex.match(/.{1,64}/g).join("\n");
467                                                                        //log_text("Generated signature:\n" + response.hex.match(/.{1,64}/g).join("\n"));
468                                                                        //log_text("Generated signature:\n" + signature.hex);
469                                                                       
470                                                                        //alert("valor de la firma: " + signature.hex);                                                                 
471                                                                       
472                                                                        $.ajax({
473                                                                                        type: 'POST',
474                                                                                        contentType: 'application/json',
475                                                                                        //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/resenas",
476                                                                                        //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/firmas/post",
477                                                                                        url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/firmas/post",
478                                                                                        dataType: 'json',
479                                                                                        data: JSON.stringify({"signature":signature.hex, "containerId":fileId}),
480                                                                                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
481                                                                                        success: function(data, textStatus, jqXHR){
482                                                                                                /*
483                                                                                                var json_x = data;
484                                                                                                var msg = json_x['message'];                                                                                           
485                                                                                                alert('Archivo firmado en el servidor: ' + msg);
486                                                                                                */
487                                                                                                alert('Archivo firmado correctamente: ' + data['signedFileId']);
488                                                                                               
489                                                                                                alert("ver respuesta");
490                                                                                                //var linkToDownload = "<a href=\"https://192.168.12.125:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
491                                                                                                //var linkToDownload = "<a href=\"https://172.16.137.11:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
492                                                                                                var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
493                                                                                                //alert(linkToDownload);
494                                                                                                document.getElementById("respuesta").innerHTML = linkToDownload; 
495                                                                                               
496                                                                                               
497                                                                                                //descargar el archivo
498                                                                                                /*
499                                                                                                //var urlToDownload =   "https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'];
500                                                                                                $.ajax({
501                                                                                                        type: 'GET',
502                                                                                                        url: "https://192.168.12.125:8443/Murachi/murachi/archivos/descargas/" + data['signedFileId'],
503                                                                                                        contentType: false,
504                                                                                                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},                                                                                                   
505                                                                                                        dataType: false,
506                                                                                                        data: false,                                                                                                   
507                                                                                                        success: function(data, textStatus, jqXHR){
508                                                                                                                alert("descargo el archivo");
509                                                                                                        },
510                                                                                                        error: function(jqXHR, textStatus, errorThrown){
511                                                                                                                alert('error en descarga de archivo: ' + textStatus);
512                                                                                                                $("#respuesta").html("error en descarga de archivo: " + textStatus);
513                                                                                                        }
514                                                                                                });
515                                                                                                */
516                                                                                                // fin de descarga de archivo
517                                                                                                                                                                                               
518                                                                                               
519                                                                                        },
520                                                                                        error: function(jqXHR, textStatus, errorThrown){
521                                                                                                alert('error en /bdocs/resenas: ' + textStatus);
522                                                                                                $("#respuesta").html("error en /bdocs/resenas: " + textStatus);
523                                                                                        }
524                                                                                });
525                                                                                                                       
526                                                                        }, function(err) {
527                                                                                log_text("sign() failed: " + err);
528                                                                                alert("sign() failed: " + err);
529                                                                                $("#respuesta").html("sign() failed: " + err);
530                                                                });
531                                                                       
532                                                                },                                                             
533                                                                error: function(jqXHR, textStatus, errorThrown){
534                                                                        //alert('error: ' + textStatus);
535                                                                        //var responseText = jQuery.parseJSON(jqXHR.responseText);
536                                                                        alert('ajax error function: ' + jqXHR.responseText);
537                                                                        $("#respuesta").html("error function: " + jqXHR.responseText);
538                                                                }
539                                                               
540                                                        });
541                                                                                                               
542                                                }, function(err) {
543                                                        log_text("getCertificate() failed: " + err);
544                                                        alert("getCertificate() failed: " + err);
545                                                        $("#respuesta").html("getCertificate() failed: " + err);
546                                                });
547                                                                                               
548                },
549                //error: function(response) {
550                error: function(xhr, status, error) {
551                        //Que se ejecuta cuando finalice la petición de con error
552                                        $("#respuesta").html('Error...!!!');
553                       
554                                        alert(xhr.responseText);
555                                        alert(error);
556                       
557                                        alert("ocurrio un error en cargas");
558                                       
559                                       
560                                               
561                                }
562            });
563               
564               
565            }
566               
567            //fin de control de los botones radio en el formulario firmar (pdf,bdoc)----------------------------------------------
568
569       
570           
571        });
572    });
573    </script>
574   
575
576
577
578        <!-- Función que se conecta se servicio web de verificación de la firma electrónica
579                captura el evento submit y toma el formulario para enviar el servicio web -->
580       
581        <script>
582    $(function(){
583        $("#verificar").on("submit", function(e){
584            e.preventDefault();
585            var f = $(this);
586           
587            //var formData = new FormData(document.getElementById("verificar"));
588            var formData = new FormData();
589           
590            //formData.append("dato", "valor");
591            formData.append("upload", $("#file-check-sign")[0].files[0]);
592            //formData.append(f.attr("name"), $(this)[0].files[0]);
593           
594            $.ajax({
595                //url: "https://192.168.12.125:8443/Murachi/0.1/archivos/firmados",
596                //url: "https://172.16.137.11:8443/Murachi/murachi/archivos/firmados",               
597                url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados",
598                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
599                type: "post",
600                dataType: "json",
601                data: formData,
602                cache: false,
603                contentType: false,
604                                processData: false,                             
605                                success: function(response) {
606                                                //alert(JSON.stringify(response));
607                                                var html = manejoJsonPDF(JSON.stringify(response));
608                                                //alert(html);
609                                                alert("ver respuesta")
610                                                document.getElementById("respuestaVerificacion").innerHTML = html;
611                                                $('table.display').dataTable();
612                    },
613                        error: function(response) {
614                                //Que se ejecuta cuando finalice la petición de con error
615                                                $("#respuestaVerificacion").html('Error...!!!');
616                                        }
617            });
618        });
619    });
620    </script>
621       
622       
623        <!--Función que captura el evento del button reset del formulario verificar
624                y limpia el div respuesta (tabla de la verificación de la firmna)-->
625       
626        <script>
627                $(document).ready(function() {
628                $("#resetVerificacion").click(function() {       // apply to reset button's click event
629                        $("#respuestaVerificacion").html('');
630                });
631        });
632        </script>
633       
634         <!--Función que captura el evento del button reset del formulario firmar
635            y limpia el div respuesta (tabla de la firma)-->
636       <script>
637                $(document).ready(function() {
638                $("#reset").click(function() {       // apply to reset button's click event
639                        $("#respuesta").html('');
640                });
641        });
642        </script>
643
644       
645        <!--Funcion para el manejo de un archivo json
646                Recibe el json (verificación de una firma pdf),
647                lo introduce en una tabla
648                y devuelve una un cadena de texto -->
649               
650               
651        <script>
652                function manejoJsonPDF(json) {
653                       
654                        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"};
655                        var objVarVerifique = JSON.parse(json);
656                        var signatures = ''; //variable que maneja las firmas
657                        var fields = ''; //variable que maneja los campos de la firma
658                        var title = '<h2> Información de la firma electronica </h2> \n ';
659                        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';
660                        var footer = '</tbody> \n </table> \n </div> \n </div>';
661                        var html = title;
662                        var numsign = 0;
663                               
664                        $.each(objVarVerifique, function(idx, obj) {
665                               
666                                if(idx == "error") {
667                                        html = '<h4> Extensión no soportada, verifique el archivo </h4>';       
668                    return(html);
669                    }
670                   
671                                if(idx == "numberOfSignatures"){
672                                        numsign = obj;
673                                        html += '<h4>' + fielJsonEs[idx] + ': ' + obj +' </h4>\n <br><br>';
674                                        }
675                                       
676                                if(idx == "signatures") {
677                                signatures = obj; //se almacena la(s) cabecera(s) de las firmas
678                                }
679                                });
680                                               
681                                var contsing = 1; // variable que indica la firma donde esta posicionado
682                                               
683                                <!-- recorre las firmas signatures -->
684               
685                                $.each(signatures, function(idx, obj) {
686                                        html += '<h4> Información de la firma: '+contsing+'<h4> \n';
687                                        html += head;
688                                        var contfiels = 1; // variable que indica el campo de la firma
689                                        fields = obj; // variable que almacena los campos de la firma
690                                        $.each(fields, function(id, objx) { <!-- Recorreo los campos de la firma -->
691                                                html += '<tr>\n<td>'+contfiels+'</td>\n<td>' + fielJsonEs[id] + '</td>\n<td>' + objx +' </td>\n</tr>\n';
692                                                contfiels++;
693                                        });
694                                        contsing++;
695                                        html += footer;
696                                        //if(contsing>numsign) html += footer;
697                                        //else html += footer + head                           
698                                });
699                                //html += footer;
700                                return(html);
701            }
702        </script>
703
704        <!--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
705            electronica que se vaya a utilizar señalada en el button radio (pdf,bdoc)-->
706
707       <script>
708                function manejoExtension() {
709                        if(document.SignFormat.optradio[0].checked)
710                                document.getElementById("file-sign").accept=".pdf";
711                        else {
712                            document.getElementById("file-sign").accept=".*";
713                            document.getElementById("file-sign").multiple="multiple";
714                            }
715                }
716     </script>
717
718
719   
720<!--Final Funciones que utiliza el sistema -->
721
722        <body>
723                <noscript><h1>Por favor habilite JavaScript!</h1></noscript>
724               
725                <div class="container">
726                        <div id="operation">
727                                <ul id="tabs-operation" class="nav nav-tabs" data-tabs="tabs">
728                                        <li class="active"><a href="#firmar" data-toggle="tab">Firmar</a></li>
729                                        <li><a href="#verificar" data-toggle="tab">Verificar</a></li>
730                                </ul>
731                                <div id="operation-tab-content" class="tab-content">
732                                       
733                                        <!-------------------Sección para firmar (formulario)------------------------->
734                                       
735                                        <div class="tab-pane active" id="firmar">
736                                                <h1>Firmar Electrónicamente</h1>
737                                                <div class="container kv-main">
738                                                    <!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat"> -->
739                                                        <!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/murachi/archivos" method="post" id="firmar"> -->
740                                                        <!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos" method="post" id="firmar">  -->
741                                                        <form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos" method="post" id="firmar" name="SignFormat">
742                                                                <h2>Formato para la Firma</h2>
743                                                                <p>Seleccione el tipo de formato que va a utilizar para firmar electrónicamente</p>                     
744                                                                <div class="radio">
745                                                                        <label><input type="radio" name="optradio" value="pdf" checked >PDF</label>
746                                                                </div>
747                                                                <div class="radio">
748                                                                        <label><input type="radio" name="optradio" value="bdoc" >BDOC</label>
749                                                                </div>
750                                                                <br>
751                                                        <input id="file-sign" class="file" type="file" data-min-file-count="1" onclick="manejoExtension()" name="upload" >
752                                                                <br>
753                                                                <button type="submit" class="btn btn-primary">Enviar</button>
754                                                                <button type="reset" id="reset"  class="btn btn-default">Limpiar</button>
755                                                                <br>
756                                <br>
757                                <div id="respuesta"> </div>
758
759                                                        </form>
760                                                        <br>
761                                                </div>
762                                        </div>
763                                       
764                                        <!--------------------Sección para verificar (formulario)---------------------------->
765                                       
766                                        <div class="tab-pane" id="verificar">
767                                                <h1>Verificar la firma electrónica</h1>
768                                                <div class="container kv-main">
769                                                        <!-- <form enctype="multipart/form-data" action="https://192.168.12.125:8443/Murachi/0.1/archivos/firmados" method="post" id="verificar"> -->
770                                                        <!-- <form enctype="multipart/form-data" action="https://172.16.137.11:8443/Murachi/murachi/archivos/firmados" method="post" id="verificar"> -->
771                                                        <form enctype="multipart/form-data" action="https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/firmados" method="post" id="verificar">
772                                                                <input id="file-check-sign" class="file" type="file" multiple data-min-file-count="1" name="upload">
773                                                                <br>
774                                                                <button type="submit" class="btn btn-primary">Enviar</button>
775                                                                <button type="reset" id="resetVerificacion" class="btn btn-default">Limpiar</button>
776                                                                <br>
777                                                                <br>
778                                                                <div id="respuestaVerificacion"> </div>
779
780                                                        </form>
781                                                </div>
782                                        </div>
783                                </div>
784                        </div>
785                        <script type="text/javascript">
786                                jQuery(document).ready(function ($) {
787                                        $('#tabs').tab();
788                                });
789                        </script>
790                </div>
791                <!-- container -->
792               
793                <!--
794                <p><button id="click1" onclick='sign();'>Click here to invoke <b>sign()</b></button></p>
795               
796                <p><button id="click2" onclick='logGetCertificate();'>get Certificate</button></p>
797                -->
798               
799                <p>
800                <div id="log" style="white-space: pre; font-family: monospace;"></div>
801               
802        </body>
803</html>
Note: See TracBrowser for help on using the repository browser.