-
-
Save sabomichal/58e9fc12f26761e2636cc6c68b3cdfd2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (typeof (dsigner) == "undefined") { | |
dsigner = {}; | |
dsigner.supportedPlatforms = ""; | |
dsigner.signatureId = "signatureId"; | |
dsigner.digestAlgUri = "http://www.w3.org/2001/04/xmlenc#sha256"; | |
dsigner.signaturePolicyIdentifier = "urn:oid:1.3.158.36061701.1.2.1"; | |
dsigner.xmlObjectId = "XML"; | |
dsigner.xmlObjectDescription = "XML"; | |
dsigner.xsdReference = "http://data.gov.sk/doc/eform/151513.ZiadostItms/1.0"; | |
dsigner.xslReference = "http://data.gov.sk/doc/eform/151513.ZiadostItms/1.0"; | |
dsigner.transformType = "HTML"; | |
dsigner.pdfObjectId = "PDF"; | |
dsigner.pdfObjectDescription = "PDF"; | |
dsigner.objectFormatIdentifier = "http://example.com/objectFormatIdentifier"; | |
dsigner.password = ""; | |
dsigner.reqLevel = 0; | |
dsigner.convert = false; | |
dsigner.successCallback = function (successCallbackUrl, val) { | |
var blob = new Blob([val], {type: "text/xml"}); | |
var data = new FormData(); | |
data.append('signedXml', blob); | |
var headers = { | |
'Wicket-Ajax': 'true', | |
'Wicket-Ajax-BaseURL': Wicket.Ajax.baseUrl | |
}; | |
var opts = { | |
url: successCallbackUrl, | |
data: data, | |
cache: false, | |
contentType: false, | |
processData: false, | |
type: 'POST', | |
headers: headers, | |
success: function (xml) { | |
$(xml).find('component').each(function () { | |
var idcko = $(this).attr('id'); | |
$('#' + idcko).replaceWith($(this).text()); | |
}); | |
$(xml).find('evaluate').each(function(){ | |
eval($(this).text()); | |
}); | |
} | |
}; | |
jQuery.ajax(opts); | |
}; | |
dsigner.getAjaxContent = function (requestUrl, callback) { | |
var opts = { | |
url: requestUrl, | |
cache: false, | |
contentType: false, | |
processData: false, | |
type: 'GET', | |
success: callback | |
}; | |
jQuery.ajax(opts); | |
}; | |
dsigner.getSupportedPlatforms = function (callback, error) { | |
ditec.dSigXadesJs.detectSupportedPlatforms(dsigner.supportedPlatforms, new dsigner.XmlCallback(function (platforms) { | |
/** | |
* 000, 0001, 010, ..., 111 | |
* aaX <=> ak X == 1 -> tak sa pouziva .Net | |
* aXa <=> ak X == 1 -> tak sa pouziva Java | |
* Xaa <=> ak X == 1 -> tak sa pouziva dLauncher | |
*/ | |
var result = 0; | |
if (platforms.length == 0) { | |
return result; | |
} else { | |
for (var i = 0; i < platforms.length; i++) { | |
switch (platforms[i]) { | |
/* 110 */ | |
case "dLauncherJava": | |
result = result | 6; | |
break; | |
/* 101 */ | |
case "dLauncherDotNet": | |
result = result | 5; | |
break; | |
/* 010 */ | |
case "java": | |
result = result | 2; | |
break; | |
/* 001 */ | |
case "dotNet": | |
result = result | 1; | |
break; | |
} | |
} | |
} | |
callback(error, result); | |
})); | |
}; | |
dsigner.PdfCallback = function (onSuccess, onError) { | |
this.onSuccess = onSuccess; | |
if (this.onSuccess == null) { | |
this.onSuccess = function (value) { | |
dsigner.successCallback(pdfSuccessCallbackUrl, value); | |
}; | |
} | |
this.onError = onError; | |
}; | |
dsigner.XmlCallback = function (onSuccess, onError) { | |
this.onSuccess = onSuccess; | |
if (this.onSuccess == null) { | |
this.onSuccess = function (value) { | |
dsigner.successCallback(xmlSuccessCallbackUrl, value); | |
}; | |
} | |
this.onError = onError; | |
}; | |
dsigner.onXmlDeployError = function (error) { | |
dsigner.getSupportedPlatforms(xmlDeployErrorCallback, error); | |
}; | |
dsigner.onXmlGeneralError = function (error) { | |
xmlGeneralErrorCallback(error); | |
}; | |
dsigner.onPdfDeployError = function (error) { | |
dsigner.getSupportedPlatforms(pdfDeployErrorCallback, error); | |
}; | |
dsigner.onPdfGeneralError = function (error) { | |
pdfGeneralErrorCallback(error); | |
}; | |
dsigner.signXml = function (namespaceUri) { | |
dsigner.getAjaxContent(xmlContentCallbackUrl, function (sourceXml) { | |
dsigner.getAjaxContent(xsdContentCallbackUrl, function (sourceXsd) { | |
dsigner.getAjaxContent(xsltContentCallbackUrl, function (sourceXslt) { | |
dsigner.doSignXml(sourceXml, sourceXsd, sourceXslt, namespaceUri); | |
}); | |
}); | |
}); | |
}; | |
dsigner.doSignXml = function (sourceXml, sourceXsd, sourceXslt, namespaceUri) { | |
if ("ActiveXObject" in window) { | |
try { | |
var xmlPlugin = new ActiveXObject("DSig.XmlPluginAtl"); | |
var obj = xmlPlugin.CreateObject2(dsigner.xmlObjectId, | |
dsigner.xmlObjectDescription, | |
sourceXml, | |
sourceXsd, | |
namespaceUri, | |
dsigner.xsdReference, | |
sourceXslt, | |
dsigner.xslReference, | |
dsigner.transformType | |
); | |
dsigner.signActiveX(obj, xmlSuccessCallbackUrl, xmlGeneralErrorCallback); | |
} catch(e) { | |
dsigner.doSignXmlNonActiveX(sourceXml, sourceXsd, sourceXslt, namespaceUri); | |
} | |
} else { | |
dsigner.doSignXmlNonActiveX(sourceXml, sourceXsd, sourceXslt, namespaceUri); | |
} | |
}; | |
dsigner.signActiveX = function(object, successCallback, errorCallback) { | |
var dSigner = new ActiveXObject("DSig.XadesSigAtl"); | |
if (object == null) { | |
errorCallback(error); | |
} | |
var addObj = dSigner.AddObject(object); | |
if (addObj != 0) { | |
errorCallback(error); | |
} | |
dSigner.SetSigningTimeProcessing(0, 0); | |
var res = dSigner.Sign(dsigner.signatureId, dsigner.digestAlgUri, dsigner.signaturePolicyIdentifier); | |
if (res == 0) { | |
dsigner.successCallback(successCallback, dSigner.SignedXMLWithEnvelope); | |
} | |
else { | |
errorCallback(dSigner.ErrorMessage); | |
} | |
} | |
dsigner.doSignXmlNonActiveX = function (sourceXml, sourceXsd, sourceXslt, namespaceUri) { | |
ditec.dSigXadesJs.detectSupportedPlatforms(dsigner.supportedPlatforms, new dsigner.XmlCallback(function (platforms) { | |
ditec.dSigXadesJs.deploy({"platforms": platforms}, new dsigner.XmlCallback(function () { | |
ditec.dSigXadesJs.initialize(new dsigner.XmlCallback(function () { | |
ditec.dSigXadesJs.addXmlObject2(dsigner.xmlObjectId, dsigner.xmlObjectDescription, sourceXml, sourceXsd, namespaceUri, dsigner.xsdReference, sourceXslt, dsigner.xslReference, dsigner.transformType, new dsigner.XmlCallback(function () { | |
ditec.dSigXadesJs.sign(dsigner.signatureId, dsigner.digestAlgUri, dsigner.signaturePolicyIdentifier, new dsigner.XmlCallback(function () { | |
ditec.dSigXadesJs.getSignedXmlWithEnvelope(new dsigner.XmlCallback(null, dsigner.onXmlGeneralError)); | |
}, dsigner.onXmlGeneralError)); | |
}, dsigner.onXmlGeneralError)); | |
}, dsigner.onXmlDeployError)); | |
}, dsigner.onXmlDeployError)); | |
}, dsigner.onXmlDeployError)); | |
}; | |
dsigner.signPdf = function () { | |
dsigner.getAjaxContent(pdfContentCallbackUrl, function (sourcePdfBase64) { | |
dsigner.doSignPdf(sourcePdfBase64); | |
}); | |
}; | |
dsigner.doSignPdf = function (sourcePdfBase64) { | |
if ("ActiveXObject" in window) { | |
try { | |
var pdfPlugin = new ActiveXObject("DSig.PdfPluginAtl"); | |
var isPDFACompliance = pdfPlugin.CheckPDFACompliance(sourcePdfBase64, '', dsigner.reqLevel); | |
var convertedSourcePdfBase64; | |
if (isPDFACompliance != 0) { | |
var convertPDFAResult = pdfPlugin.ConvertToPDFA(sourcePdfBase64, '', dsigner.reqLevel); | |
if (convertPDFAResult != 0) { | |
pdfGeneralErrorCallback('Váš dokument nebol transformovaný do formátu PDF/A-1.'); | |
} | |
convertedSourcePdfBase64 = pdfPlugin.ConvertedPDFA; | |
} | |
var obj = pdfPlugin.CreateObject(dsigner.pdfObjectId, dsigner.pdfObjectDescription, convertedSourcePdfBase64, '', dsigner.objectFormatIdentifier, dsigner.reqLevel, false); | |
dsigner.signActiveX(obj, pdfSuccessCallbackUrl, pdfGeneralErrorCallback); | |
} catch(e) { | |
dsigner.doSignPdfNonActiveX(sourcePdfBase64); | |
} | |
} else { | |
dsigner.doSignPdfNonActiveX(sourcePdfBase64); | |
} | |
} | |
dsigner.doSignPdfNonActiveX = function (sourcePdfBase64) { | |
ditec.dSigXadesJs.detectSupportedPlatforms(dsigner.supportedPlatforms, new dsigner.PdfCallback(function (platforms) { | |
ditec.dSigXadesJs.deploy({"platforms": platforms}, new dsigner.PdfCallback(function () { | |
ditec.dSigXadesJs.initialize(new dsigner.PdfCallback(function () { | |
ditec.dSigXadesJs.convertToPDFA(sourcePdfBase64, dsigner.password, dsigner.reqLevel, new dsigner.PdfCallback(function () { | |
ditec.dSigXadesJs.getConvertedPDFA(new dsigner.PdfCallback(function (convertedSourcePdfBase64) { | |
ditec.dSigXadesJs.addPdfObject(dsigner.pdfObjectId, dsigner.pdfObjectDescription, convertedSourcePdfBase64, dsigner.password, dsigner.objectFormatIdentifier, dsigner.reqLevel, dsigner.convert, new dsigner.PdfCallback(function () { | |
ditec.dSigXadesJs.sign(dsigner.signatureId, dsigner.digestAlgUri, dsigner.signaturePolicyIdentifier, new dsigner.PdfCallback(function () { | |
ditec.dSigXadesJs.getSignedXmlWithEnvelope(new dsigner.PdfCallback(null, dsigner.onPdfGeneralError)); | |
}, dsigner.onPdfGeneralError)); | |
}, dsigner.onPdfGeneralError)); | |
}, dsigner.onPdfGeneralError)); | |
}, dsigner.onPdfGeneralError)); | |
}, dsigner.onPdfDeployError)); | |
}, dsigner.onPdfDeployError)); | |
}, dsigner.onPdfDeployError)); | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment