;(function ($, window, document, undefined) { window.method = null; method = sha3_512; $(document).ready(function () { var input = $('#input'); var result = $('#result'); var summary = $('#summary'); var dropzone = $('#droppable-zone'); var option = $('[data-option]'); var execute = function () { try { summary.val(method(input.val(), option.val())); } catch (e) { summary.val(e); } } function autoUpdate() { execute(); } if (dropzone.length > 0) { var dropzonetext = $('#droppable-zone-text'); $(document.body).bind('dragover drop', function (e) { e.preventDefault(); return false; }); if (!window.FileReader) { dropzonetext.text('Ihr Brwoser wird nicht unterstützt.'); $('input').attr('disabled', true); return; } dropzone.bind('dragover', function () { dropzone.addClass('hover'); }); dropzone.bind('dragleave', function () { dropzone.removeClass('hover'); }); dropzone.bind('drop', function (e) { dropzone.removeClass('hover'); file = e.originalEvent.dataTransfer.files[0]; dropzonetext.text(file.name); autoUpdate(); }); input.bind('change', function () { file = input[0].files[0]; dropzonetext.text(file.name); autoUpdate(); }); var file; execute = function () { summary.html(''); result.html(''); reader = new FileReader(); var value = option.val(); if (method.update) { var batch = 1024 * 1024 * 2; var start = 0; var total = file.size; var current = method; reader.onload = function (event) { try { current = current.update(event.target.result, value); asyncUpdate(); } catch (e) { summary.val(e); } }; var asyncUpdate = function () { if (start < total) { summary.val('Checksumme wird berechnet...' + (start / total * 100).toFixed(2) + '%'); var end = Math.min(start + batch, total); reader.readAsArrayBuffer(file.slice(start, end)); start = end; } else { var hash = current.hex(); summary.val(hash); var url = '/hydra/rest/signature/' + hash; console.log("url is " + url); $.ajax({ url: url, dataType: 'json', success: function (resp) { if (resp && resp.errorMessage && resp.errorMessage === 'UNKNOWN') { summary.html("unbekannte Datei"); result.html("unbekannte Datei"); } else { console.log("response is " + resp); var sigType = resp.signatureType; if (sigType === "public") { var text = ""; var resultText = ""; var date = new Date(+resp.bcBlockCreated); var scriptoDate = new Date(+resp.signed); var sideChainFile = '' + resp.sideChain + ''; text = text + '

Ergebnisse

'; text = text + 'Die Checksumme (SHA3-512) dieser Datei ist:

'; text = text + resp.hash + "

"; if ( resp.bcBlockCreated ) { text = text + 'Diese Checksumme befindet sich in der Side Chain Datei '; text = text + sideChainFile + '. '; text = text + 'Die Checksumme (SHA3-512) der Side Chain Datei ' + sideChainFile + ' ist:

'; text = text + resp.sideChainHash + "

"; text = text + 'Diese Checksumme ist vermerkt als Eingabewert der Ethereum Transaktion '; text = text + '' + resp.bcTransaction + '.
'; text = text + 'Diese Transaktion wurde in der Block Chain '; text = text + resp.bcBlock + ' eingetragen, welche am '; text = text + date.toLocaleDateString() + ' ' + date.toLocaleTimeString() + ' (' + date.toUTCString() + ') erstellt wurde.
'; text = text + 'Dieser Zeitstempel ist manipulationssicher, da das Ethereum System und der SHA3-512 manipulationssicher sind.
'; text = text + '
'; } else { text = text + 'Der zertifizierte Zeitstempel wurde noch nicht im Ethereum System eingetragen. Bitte versuchen Sie es später nochmal.
'; } text = text + 'Die Zertifizierung wurde am ' + scriptoDate.toLocaleDateString() + ' ' + scriptoDate.toLocaleTimeString() + ' (' + scriptoDate.toUTCString() + ') beantragt.'; text = text + '
'; text = text + 'Der Zeitpunkt des Zertifizierungs Antrags kann nicht garantiert werden, da es technisch immer möglich sein kann, dass unser System manipuliert wurde.'; if ( resp.bcBlockCreated ) { resultText = resultText + ' zertifizierter Zeitstempel ' + date.toLocaleDateString() + ' ' + date.toLocaleTimeString() + ' (' + date.toUTCString() + ')'; resultText = resultText + ' '; resultText = resultText + ' '; resultText = resultText + '
'; } else { resultText = resultText + ' Der zertifizierte Zeitstempel wurde noch nicht im Ethereum System eingetragen. Bitte versuchen Sie es später nochmal.'; resultText = resultText + '
'; } resultText = resultText + '
weitere Informationen finden Sie unten'; summary.html(text); result.html(resultText); } else { var text = ""; var resultText = ""; var scriptoDate = new Date(+resp.signed); var sideChainFile = '' + resp.sideChain + ''; text = text + '

Ergebnisse

'; text = text + 'Die Checksumme (SHA3-512) dieser Datei ist:

'; text = text + resp.hash + "

"; text = text + 'Ein zertifizierte Zeitstempel wurde vom Benutzer nicht angefordert.
'; text = text + 'Die Zertifizierung wurde am ' + scriptoDate.toLocaleDateString() + ' ' + scriptoDate.toLocaleTimeString() + ' (' + scriptoDate.toUTCString() + ') beantragt.'; text = text + '
'; text = text + 'Der Zeitpunkt des Zertifizierungs Antrags kann nicht garantiert werden, da es technisch immer möglich sein kann, dass unser System manipuliert wurde.'; resultText = resultText + 'Ein zertifizierte Zeitstempel wurde vom Benutzer nicht angefordert.
'; resultText = resultText + '
weitere Informationen finden Sie unten'; summary.html(text); result.html(resultText); } } }, error: function (req, status, err) { summary.val("an error occurred please retry later"); console.log('an error occurred please retry later', status, err); } }); } }; asyncUpdate(); } else { summary.val('Checksumme wird erstellt...'); reader.onload = function (event) { try { summary.val(method(event.target.result, value)); } catch (e) { summary.val(e); } }; reader.readAsArrayBuffer(file); } }; } $('#execute').click(execute); var parts = location.pathname.split('/'); $('a[href="' + parts[parts.length - 1] + '"]').addClass('active'); }); })(jQuery, window, document);