;(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);