UNPKG

@eid-easy/eideasy-browser-js

Version:

Official eID Easy javascript helper library for web browsers

40 lines (34 loc) 1.21 kB
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;