Skip to content
Snippets Groups Projects
Commit b60c8694 authored by Otto Zaiser's avatar Otto Zaiser
Browse files

Nuevo tab y nueva funcionalidad de botón

parent 009b53a1
No related branches found
No related tags found
No related merge requests found
<!doctype html> <!doctype html>
<html ng-app> <html>
<head> <head>
<meta charset="utf-8"> <title>Sello de Tiempo - Blockchain Federal Argentina</title>
<link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css"> <meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="lib/css/style.css"> <link href="https://fonts.googleapis.com/css?family=Raleway:400,400i,700,700i" rel="stylesheet">
<script src="lib/js/angular.min.js"></script> <link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css">
<script src="lib/js/bower_components/js-sha256/src/sha256.js"></script> <link rel="stylesheet" type="text/css" href="lib/css/style.css">
<script src="lib/js/jquery.min.js"></script> <meta name="MobileOptimized" content="width" />
<script src="lib/js/index.js"></script> <meta name="HandheldFriendly" content="true" />
<script src="lib/js/bootstrap.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TSA - Blockchain Federal Argentina</title> </head>
</head> <body>
<body> <nav id="navbar" role="banner" class="navbar navbar-default">
<nav class="navbar navbar-default"> <div class="container">
<div class="container"> <div class="navbar-header">
<div class="navbar-header"> <a class="logo navbar-btn pull-left" href="/" rel="home">
<a class="navbar-brand" href="#"> <img id="logo" src="lib/images/logo.svg" alt="Blockchain Federal Argentina">
<img alt="Blockchain Federal Argentina" src="lib/images/logo.svg" width="140" height="100">
</a> </a>
</div> <!-- Descomentar en caso de agregar menú para volver a BFA.ar
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
-->
</div> </div>
</nav> <!-- <div id="navbar-collapse" class="navbar-collapse collapse">
<main> <nav role="navigation">
<div class="container"> <ul class="menu nav navbar-nav navbar-right">
<h1>Time Stamp Authority</h1> <li>
<form class="box" method="post" action="" enctype="multipart/form-data"> <a href="/">Ir a BFA.ar</a>
<h2>Stamp</h2> </li>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> </ul>
<div id="stamp" class="dropArea" ondrop="drop(event)" ondragover="allowDrop(event)"> </nav>
<div><span class=" glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div> </div>
<div class="droptxt">Soltá un archivo aquí<br>ó</div> -->
<div><button type="button" class="btn btn-primary">Seleccioná un archivo</button></div> </div>
</nav>
<main>
<div class="container">
<h1>Sello de Tiempo</h1>
<p>El servicio de Sello de Tiempo de BFA permite demostrar digitalmente que el contenido de cualquier documento existió en un momento y que desde entonces, no ha cambiado.</p>
<ul class="nav nav-tabs nav-justified" role="tablist">
<li role="presentation" class="active"><a href="#tab_1" aria-controls="tab_1" role="tab"
data-toggle="tab">1. Sellar</a></li>
<li role="presentation"><a href="#tab_2" aria-controls="tab_2" role="tab" data-toggle="tab">2. Obtener recibo</a></li>
<li role="presentation"><a href="#tab_3" aria-controls="tab_3" role="tab" data-toggle="tab">Verificar</a></li>
</ul>
<form class="box tab-content" method="post" action="" enctype="multipart/form-data">
<div role="tabpanel" class="tab-pane active" id="tab_1">
<h2>Paso 1: Iniciar sellado</h2>
<p>Seleccioná un archivo para generar un Sello de Tiempo. El servicio generará un <i>hash</i> (un
código criptográfico asociado a dicho documento) y lo enviará a la blockchain. A continuación,
se descargará automáticamente un recibo digital <b>temporario</b> (.rdt) que luego podrás
usar para obtener el recibo digital <b>definitivo</b> (.rdd) en la pestaña <i>Obtener recibo</i>.</p>
<p>Importante: El documento seleccionado nunca se sube a la red, garantizando su privacidad.</p>
<div id="selectOriginalArea_1" class="dropArea" ondrop="dropStamp(event)" ondragover="allowDrop(event)">
<div id="originalInfo_1" class="replacedTxt">
<div><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá un archivo aquí<br>ó</div>
</div>
<div><button type="button" id="selectOriginal_1" class="btn btn-primary btn-pill">Seleccioná un archivo <span class="sr-only">para Sellar</span></button></div>
</div>
<input type="file" id="fileUploadOriginal_1" hidden/>
<!-- <div id="ots_div" class="loading"></div> -->
<div id="response_1" role="alert"></div>
</div>
<div role="tabpanel" class="tab-pane certificadoTab" id="tab_2">
<h2>Paso 2: Obtener recibo digital definitivo</h2>
<p>Para obtener el recibo definitivo de un Sello de Tiempo se debe tener el documento original y el recibo digital temporal (.rdt), el servicio le devolverá el recibo digital definitivo (.rdd) junto con el día y la hora en que el hash del documento original fue sellado en la Blockchain Federal Argentina.</p>
<input type="hidden" name="hidden_original_file_hash_2" id="hidden_original_file_hash_2" />
<input type="hidden" name="hidden_original_file_name_2" id="hidden_original_file_name_2" />
<div class="row">
<div class="col-md-6">
<h3>Seleccioná el archivo original</h3>
<div id="selectOriginalArea_2" class="dropArea" ondrop="dropOriginalFile(event)"
ondragover="allowDrop(event)">
<div id="originalInfo_2" class="replacedTxt">
<div><span class=" glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>original</b> aquí<br>ó</div>
</div>
<div><button type="button" id="selectOriginal_2" class="btn btn-primary btn-pill">Seleccioná un archivo <span class="sr-only">original</span></button></div>
</div>
<input type="file" id="fileUploadOriginal_2" hidden/>
</div>
<div class="col-md-6">
<h3>Seleccioná el recibo digital temporario</h3>
<div id="selectReciboArea_2" class="dropArea" ondrop="dropOTSFile(event)" ondragover="allowDrop(event)">
<div class="replacedTxt">
<div id="reciboInfo_2"></div>
<div id="reciboInstructions_2">
<div><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>.rdt</b> aquí<br>ó</div>
</div>
</div>
<div><button type="button" id="selectRecibo_2" class="btn btn-primary btn-pill">Seleccioná un archivo <span class="sr-only">.rdt</span></button></div>
</div>
<input type="file" id="fileUploadRecibo_2" hidden/>
</div>
</div>
<div id="response_2" role="alert"></div>
</div> </div>
<div id="ots_div" class="loading"></div> <div role="tabpanel" class="tab-pane verificarTab" id="tab_3">
<hr> <h2>Verificar un sello de tiempo</h2>
<h2>Verify</h2> <p>Para verificar un Sello de Tiempo se debe tener el documento original y el recibo digital definitivo (.rdd). Podrá verificar el día y la hora en que el hash del documento original fue sellado en la Blockchain Federal Argentina.</p>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> <input type="hidden" name="hidden_original_file_hash_3" id="hidden_original_file_hash_3" />
<div class="form-group"> <input type="hidden" name="hidden_original_file_name_3" id="hidden_original_file_name_3" />
<textarea id="verify_ots" class="form-control" rows="3" readonly></textarea> <div class="row">
<div class="col-md-6">
<h3>Seleccioná el archivo original</h3>
<div id="selectOriginalArea_3" class="dropArea dropAreaVerify" ondrop="dropOriginalFile(event)"
ondragover="allowDrop(event)">
<div id="originalInfo_3" class="replacedTxt">
<div><span class=" glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>original</b> aquí<br>ó</div>
</div>
<div><button type="button" id="selectOriginal_3" class="btn btn-success btn-pill">Seleccioná un archivo <span class="sr-only">original</span></button></div>
</div>
<input type="file" id="fileUploadOriginal_3" hidden/>
</div>
<div class="col-md-6">
<h3>Seleccioná el recibo digital definitivo</h3>
<div id="selectReciboArea_3" class="dropArea dropAreaVerify" ondrop="dropOTSFile(event)" ondragover="allowDrop(event)">
<div class="replacedTxt">
<div id="reciboInfo_3"></div>
<div id="reciboInstructions_3">
<div><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span></div>
<div class="droptxt">Arrastrá el archivo <b>.rdd</b> aquí<br>ó</div>
</div>
</div>
<div><button type="button" id="selectRecibo_3" class="btn btn-success btn-pill">Seleccioná un archivo <span class="sr-only">.rdd</span></button></div>
</div>
<input type="file" id="fileUploadRecibo_3" hidden/>
</div>
</div>
<div id="response_3" role="alert"></div>
</div> </div>
<div id="response" role="alert"></div>
<div class="form-group">
<button type="button" id="btn_verify" class="btn btn-primary btn-lg">Verify</button>
</div>
</form> </form>
</div> </div>
</main> </main>
</body> </body>
<script src="lib/js/bower_components/js-sha256/src/sha256.js"></script>
<script src="lib/js/jquery.min.js"></script>
<script src="lib/js/index.js"></script>
<script src="lib/js/bootstrap.min.js"></script>
</html> </html>
\ No newline at end of file
textarea {
width: 95%;
height: 95%;
border: none;
resize: none;
outline: none;
}
h1{
text-align: center;
}
#stamp{
border: 1px solid #ccc;
width: 50%;
height: 200px;
}
#verify{
border: 1px solid #ccc;
width: 50%;
height: 200px;
margin-top: 5px;
}
#ots_div{
width: 50%;
border: 1px solid #ccc;
height: 100px;
margin-top: 5px;
display: none;
overflow-y: overlay;
}
.center_div{
margin: 0 auto;
}
.title{
float: left;
width: 24%;
text-align: right;
font-size: 18px;
font-weight: bold;
}
#btn_verify{
margin-top: 5px;
}
.bg-dark{
background-color: #5a5a5a;
color:white;
}
\ No newline at end of file
body{ html {
background-color: #f9f9f9; font-size: 0.9em;
} }
body {
font-family: 'Raleway', sans-serif;
font-size: 1.125em;
background-color: #ffffff;
line-height: 1.45;
margin-top: 0;
}
h1,
h2,
h3,
h4 {
margin: 1.414em 0 0.5em;
font-weight: bold;
line-height: 1.2;
}
h1 {
margin-top: 20px;
font-size: 2.441em;
}
h2 {
font-size: 1.953em;
}
h3 {
font-size: 1.563em;
margin-top: 10px;
}
h4 {
font-size: 1.25em;
}
small,
.font_small {
font-size: 0.8em;
}
p {
margin-bottom: 20px;
}
.btn-pill {
border-radius: 50px;
}
.navbar-default { .navbar-default {
background-color: #ffffff; background-color: #ffffff;
border-color: #e7e7e7; border-color: #e7e7e7;
} }
.navbar-brand{
.navbar-brand {
height: 130px; height: 130px;
} }
.dropArea{
.dropArea {
border: 1px dashed #0094D4; border: 1px dashed #0094D4;
background-color: #ffffff;
padding: 50px; padding: 50px;
text-align: center; text-align: center;
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
transition: 0.3s; transition: 0.3s;
} }
.dropArea:hover{
.hash {
word-wrap: break-word;
}
.replacedTxt {
margin-bottom: 20px;
}
.dropArea p {
margin-bottom: 5px;
}
.dropAreaVerify {
border: 1px dashed #4cae4c;
}
.dropArea:hover {
background-color: #f0f7ff; background-color: #f0f7ff;
border-style: solid; border-style: solid;
} }
.dropArea .droptxt{
font-size: 1.25em; .dropAreaVerify:hover {
margin-bottom: 15px; background-color: #e5fce5;
border-style: solid;
}
.dropArea .droptxt {
font-size: 1.2em;
margin-bottom: -5px;
} }
.dropArea .glyphicon{
.dropArea .glyphicon-cloud-upload {
font-size: 8em; font-size: 8em;
margin-bottom: 40px; margin-bottom: 40px;
color: #ccc; color: #ccc;
} }
.loading{
@media screen and (max-width: 768px) {
.dropArea .glyphicon-cloud-upload {
font-size: 4em;
margin-bottom: 20px;
}
.dropArea {
padding: 20px;
}
}
.loading {
background-color: #0094D4; background-color: #0094D4;
margin-top: 5px; margin-top: 5px;
display: none; display: none;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
}
[hidden]{
display: none !important;
} }
.btn-lg{
.btn-lg {
min-width: 200px; min-width: 200px;
} }
\ No newline at end of file
.tab-pane {
background-color: #f8f8f8;
border: 1px solid #ddd;
border-top: 0px;
padding: 40px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
}
.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover{
background-color: #f8f8f8;
}
.nav-tabs.nav-justified>.active>a, .nav-tabs.nav-justified>.active>a:focus, .nav-tabs.nav-justified>.active>a:hover{
border-bottom-color: #f8f8f8;
}
.tab-pane h2 {
margin-top: 0px;
}
.nav-tabs {
font-size: 1.953em;
}
.alert {
margin-top: 15px;
}
@media screen and (max-width: 768px) {
.tab-pane {
border-top: 1px solid #ddd;
}
}
@media screen and (max-width: 992px) {
h3 {
margin-top: 30px;
}
.nav-tabs {
font-size: 1.5em;
}
}
@media screen and (max-width: 1200px) {
.dropArea .droptxt {
font-size: 1em;
margin-bottom: 15px;
}
}
.navbar-header .logo img {
height: 100px;
width: 140px;
}
.navbar .logo {
margin-right: -15px;
padding-left: 15px;
padding-right: 15px;
}
@media screen and (min-width: 768px){
.navbar .logo {
margin-right: 0;
padding-left: 0;
}
}
.navbar-default {
background-color: #fff;
border-color: #e7e7e7;
padding-top: 30px;
}
.navbar-default .navbar-nav li>a {
color: #0094D4;
font-weight: 400;
font-size: 1.25em;
}
.navbar-default .navbar-nav>.active>a,
.navbar-default .navbar-nav>.active>a:hover,
.navbar-default .navbar-nav>.active>a:focus {
color: #2e2f30;
background-color: transparent;
border-bottom: 2px solid #2e2f30;
}
@media (min-width: 768px) {
.navbar-default .navbar-nav li>a {
color: #0094D4;
padding-bottom: 8px;
padding-left: 4px;
padding-right: 4px;
margin-left: 20px;
border-bottom: 2px solid transparent;
}
.navbar-default .navbar-nav li>a:hover,
.navbar-default .navbar-nav li>a:focus {
color: #0094D4;
border-bottom: 2px solid #0094D4;
}
.navbar-default .navbar-nav li:last-child>a:hover,
.navbar-default .navbar-nav li:last-child>a:focus {
color: #0094D4;
background-color: #fff;
}
}
.navbar-default .navbar-toggle {
border-color: #0094D4;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #0094D4;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #0094D4;
}
.navbar-default .navbar-toggle:hover .icon-bar,
.navbar-default .navbar-toggle:focus .icon-bar {
background-color: #fff;
}
.navbar-default .menu {
margin-top: 40px;
}
@media (max-width: 768px) {
.navbar-default .navbar-nav li>a:hover,
.navbar-default .navbar-nav li>a:focus {
color: #0094D4;
text-decoration: underline;
}
.navbar-default {
padding-top: 0px;
}
.navbar-default .navbar-collapse {
-webkit-box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px 5px 5px 0px rgba(0, 0, 0, 0.2);
background-color: #fff;
}
.navbar-default .menu {
margin-top: 0;
}
}
$(document).ready(function(){ var tsa_api = 'https://tsaapi.bfa.ar/api/tsa/';
$('#btn_verify').click(function(){
if($('#verify_ots').val() == ''){
$('#response').html('<span class="glyphicon glyphicon-remove text-danger" aria-hidden="true"></span> Debe ingresar el comprobante');
$('#response').addClass('alert alert-danger');
}
verify($('#verify_ots').val());
});
});
var tsa_api = 'http://tsaapi.pp.bfa.local/api/tsa/';
var loader_gif = 'lib/images/loader.svg'; var loader_gif = 'lib/images/loader.svg';
var ots_api = ''; var ots_api = '';
var deadline_date = new Date('2018-09-03 00:00:00'); var deadline_date = new Date('2018-09-03 00:00:00');
var current_date = new Date(); var current_date = new Date();
var whash = window.location.hash;
var currentTab = whash.substring(5, 6);
$(function () {
whash && $('ul.nav a[href="' + whash + '"]').tab('show');
$('.nav-tabs a').click(function (e) {
$(this).tab('show');
var scrollmem = $('body').scrollTop() || $('html').scrollTop();
whash = this.hash;
currentTab = whash.substring(5, 6);
window.location.hash = whash;
$('html,body').scrollTop(scrollmem);
});
if(deadline_date>current_date){
a = 1;
}
else{
a=2;
}
for (let i = 1; i < 4; i++) {
$('#selectOriginal_' + i+', #selectOriginalArea_' + i).on('click', function () {
$('#fileUploadOriginal_' + i).click();
return false;
});
if (i == 1) {
$('#fileUploadOriginal_' + i).change(
function () {
var file = $(this).prop('files')[0];
stamp(file);
}
);
} else {
$('#fileUploadOriginal_' + i).change(
function () {
var file = $(this).prop('files')[0];
original_file_check(file);
}
);
$('#selectRecibo_' + i+', #selectReciboArea_' + i).on('click', function () {
$('#fileUploadRecibo_' + i).click();
return false;
});
$('#fileUploadRecibo_' + i).change(
function () {
var file = $(this).prop('files')[0];
ots_check(file);
}
);
}
}
});
console.log(current_date);
function allowDrop(e) { function allowDrop(e) {
e.preventDefault(); e.preventDefault();
} }
function drop(e){ function dropStamp(e) {
e.preventDefault(); e.preventDefault();
var file = e.dataTransfer.items[0].getAsFile();
$('#ots_div').html('<img src="' + loader_gif + '">'); stamp(file);
$('#ots_div').fadeIn('fast'); }
var file = e.dataTransfer.items[0].getAsFile(); function stamp(file) {
var reader = new FileReader();
var reader = new FileReader(); reader.readAsArrayBuffer(file, "UTF-8")
reader.readAsArrayBuffer(file, "UTF-8")
reader.onload = function (evt) { reader.onload = function (evt) {
var file_contents = evt.target.result; var file_contents = evt.target.result;
var hash = sha256.create(); var hash = sha256.create();
hash.update(file_contents); hash.update(file_contents);
var file_hash = hash.hex(); var file_hash = hash.hex();
$('#stamp_info').html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> '+file.name ); $('#originalInfo_1').html('<p>Nombre del archivo: <b>' + file.name + '</b></p><p>Hash del archivo: <b><span class="hash">' + file_hash + '</span></b></p>');
$('#selectOriginal_1').html('Seleccioná otro archivo <span class="sr-only">para marcar</span>');
$.ajax({ $.ajax({
url: tsa_api + "stamp/", url: tsa_api + "stamp/",
type: "POST", type: "POST",
data: {"file_hash" : file_hash}, data: {
dataType: "json", "file_hash": file_hash
success: function(response){ },
console.log(response); dataType: "json",
success: function (response) {
var ots = ' {"file_hash": "' + file_hash + '", "ots": "' + response.temporay_ots + '"}';
$('#ots_div').html(ots); var ots = ' {"file_hash": "' + file_hash + '", "rd": "' + response.temporary_ots + '"}';
$('#ots_div').fadeIn('fast');
}
});
}
}
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {
type: "octet/stream"
}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = response.temporary_rd
fileName = file.name + ".rd.temp";
function verify(json_ots){ saveData(data, fileName);
$('#response').removeClass();
try{
var ots = JSON.parse(json_ots);
}
catch(err){
$('#response').html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Parámetros inválidos');
$('#response').addClass('alert alert-danger');
return;
}
$('#response').html('<img src="' + loader_gif + '">'); }
$('#response').addClass('loading'); });
if(deadline_date<current_date){
verify_bfa(ots);
}
else{
a=2;
} }
} }
function verify_bfa(ots){
function verify_bfa(ots) {
var pending = false; var pending = false;
var message = ''; var message = '';
$('#response_' + currentTab).removeClass();
$.ajax({ $.ajax({
url: tsa_api + "verify/", url: tsa_api + "verify/",
type: "POST", type: "POST",
data: {"file_hash" : ots.file_hash, "ots": ots.ots}, data: {
"file_hash": ots.file_hash,
"rd": ots.rd
},
dataType: "json", dataType: "json",
success: function(response){ success: function (response) {
if(response.status == 'success'){ if (response.status == 'success') {
icon = 'glyphicon-ok'; icon = 'glyphicon-ok';
st = 'alert alert-success'; st = 'alert alert-success';
}else if(response.status == 'pending'){ response_messages = response.messages.replace(ots.file_hash, $('#hidden_original_file_name_' + currentTab).val());
} else if (response.status == 'pending') {
pending = true; pending = true;
icon = 'glyphicon-time'; icon = 'glyphicon-time';
st = 'alert alert-warning'; st = 'alert alert-warning';
}else{ response_messages = response.messages;
} else {
icon = 'glyphicon-remove'; icon = 'glyphicon-remove';
st = 'alert alert-danger'; st = 'alert alert-danger';
} response_messages = response.messages;
}
message = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span> ' + response_messages;
$('#response_' + currentTab).addClass(st);
$('#response_' + currentTab).html(message);
if (!pending) {
var saveData = (function () {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var json = JSON.stringify(data),
blob = new Blob([json], {
type: "octet/stream"
}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
var data = response.permanent_rd;
fileName = $('#hidden_original_file_name_' + currentTab).val() + ".rd";
if (currentTab == '2') {
ms = 'Seleccioná otro archivo <span class="sr-only">.rd.temp</span>';
} else if (currentTab == '3') {
ms = 'Seleccioná otro archivo <span class="sr-only">.rd</span>';
}
$('#selectRecibo_' + currentTab).html(ms);
$('#reciboInstructions_' + currentTab).hide();
if ($('#reciboInfo_' + currentTab).html().includes('.temp')) {
saveData(data, fileName);
}
message = '<span class="glyphicon ' + icon + '" aria-hidden="true"></span> ' + response.messages;
if(!pending){
message += ' - ots definitivo:' + response.permanent_ots;
} }
$('#response').html(message);
$('#response').addClass(st);
}, },
error:function(jqXHR, textStatus, errorThrown){ error: function (jqXHR, textStatus, errorThrown) {
responseText = 'No se encontró el archivo'; responseText = 'No se encontró el archivo';
if(errorThrown == 'timeout'){ if (errorThrown == 'timeout') {
responseText = 'No se pudo conectar a la Blockchain'; responseText = 'No se pudo conectar a Blockchain Federal Argentina';
} }
if (whash == '#certificado-tab') {
$('#response').html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> ' + responseText); rp_id = "#response_cert";
$('#response').addClass('alert alert-danger'); } else {
rp_id = "#response";
}
$('#response_' + currentTab).html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> ' + responseText);
$('#response_' + currentTab).addClass('alert alert-danger');
}, },
timeout:5000 timeout: 5000
}); });
} }
function verify_ots(){
function dropOriginalFile(e) {
e.preventDefault();
var file = e.dataTransfer.items[0].getAsFile();
original_file_check(file);
}
function original_file_check(file) {
$('#response_' + currentTab).html('');
$('#response_' + currentTab).removeClass();
$('#reciboInfo_' + currentTab).html('');
$('#reciboInstructions_' + currentTab).show();
var reader = new FileReader();
reader.readAsArrayBuffer(file, "UTF-8")
reader.onload = function (evt) {
var file_contents = evt.target.result;
var hash = sha256.create();
hash.update(file_contents);
var file_hash = hash.hex();
$('#hidden_original_file_hash_' + currentTab).val(file_hash);
$('#hidden_original_file_name_' + currentTab).val(file.name);
$('#originalInfo_' + currentTab).html('<p>Nombre del archivo: <b>' + file.name + '</b></p><p>Hash del archivo: <b><span class="hash">' + file_hash + '</span></b></p>');
$('#selectOriginal_' + currentTab).html('Seleccioná otro archivo <span class="sr-only">original</span>');
};
}
function dropOTSFile(e) {
e.preventDefault();
var file = e.dataTransfer.items[0].getAsFile();
ots_check(file);
}
function ots_check(file) {
$('#response_' + currentTab).html('');
$('#response_' + currentTab).removeClass();
var file_contents = '';
var file_hash = $('#hidden_original_file_hash_' + currentTab).val();
if (file_hash == '') {
$('#response_' + currentTab).html('<span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Debe ingresar el archivo original');
$('#response_' + currentTab).addClass('alert alert-danger');
return;
}
var reader = new FileReader();
reader.readAsText(file, "UTF-8")
reader.onload = function (evt) {
file_contents = evt.target.result;
$('#reciboInstructions_' + currentTab).hide();
$('#reciboInfo_' + currentTab).html(file.name);
var ots = {
"file_hash": file_hash,
"rd": file_contents
}
verify_bfa(ots);
};
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment