@eid-easy/eideasy-browser-js
Version:
Official eID Easy javascript helper library for web browsers
40 lines (34 loc) • 1.21 kB
JavaScript
import JSZip from 'jszip';
const getSignatureFilename = function getSignatureFilename(signatureId) {
return `signatures${signatureId}.xml`;
};
/**
*
* @param {JSZip|Blob} containerFile - the container file
* @param {string} xadesSignature - XAdES signature
* @returns {Promise<JSZip>}
*/
const addSignatureAsice = function addSignatureAsice(containerFile, xadesSignature) {
let xmlDoc;
if (window.DOMParser) {
const parser = new DOMParser();
xmlDoc = parser.parseFromString(xadesSignature, 'text/xml');
} else {
/* eslint-disable */
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
/* eslint-enable */
xmlDoc.async = false;
xmlDoc.loadXML(xadesSignature);
}
const signatureId = xmlDoc.getElementsByTagName('ds:Signature')[0].getAttribute('Id');
if (containerFile instanceof JSZip) {
containerFile.file(`META-INF/${getSignatureFilename(signatureId)}`, xadesSignature);
return Promise.resolve(containerFile);
}
return JSZip.loadAsync(containerFile)
.then((zip) => {
zip.file(`META-INF/${getSignatureFilename(signatureId)}`, xadesSignature);
return zip;
});
};
export default addSignatureAsice;