Skip to content
Snippets Groups Projects

269 implement workflow for signing already uploaded document dev

1 file
+ 25
9
Compare changes
  • Side-by-side
  • Inline
@@ -634,6 +634,7 @@ function loadPdf(pdfArray) {
//data must be Uint8Array
async function sign_pki(signingCert, certificateChain, privateKey, data, date) {
console.log("Calling sign_pki");
const crypto = getCrypto();
@@ -719,6 +720,8 @@ async function sign_pki(signingCert, certificateChain, privateKey, data, date) {
async function signPdfObjects (pdfRaw, signingCert, certificateChain, privateKey, date) {
console.log("Calling signPdfObjects");
date = ((typeof date !== 'undefined') && (date !== null)) ? date : new Date();
if (pdfRaw instanceof Buffer) {
@@ -727,26 +730,39 @@ async function signPdfObjects (pdfRaw, signingCert, certificateChain, privateKey
if(pdfRaw instanceof ArrayBuffer) {
pdfRaw = new Uint8Array(pdfRaw);
}
console.log("Calling loadPdf");
var pdf = loadPdf(pdfRaw);
var root = findRootEntry(pdf.xref);
var rootSuccessor = findSuccessorEntry(pdf.xref.entries, root);
if(!isSigInRoot(pdf)) {
console.log("Calling newSig");
return await newSig(pdf, root, rootSuccessor, date, signingCert, certificateChain, privateKey);
} else {
console.log("Calling appendSig");
return await appendSig(pdf, root, rootSuccessor, date, signingCert, certificateChain, privateKey);
}
}
export function signPdf(pdfRaw, signingCert, certificateChain, privateKey) {
const signingCertObj = parseCertificate(signingCert);
const certificateChainObj = [];
certificateChainObj[0] = parseCertificate(signingCert);
for (let i = 0; i < certificateChain.length; i++) {
certificateChainObj[i + 1] = parseCertificate(certificateChain[i])
export async function signPdf(pdfRaw, signingCert, certificateChain, privateKey) {
console.log("Calling signPdf");
const signingCertObj = parseCertificate(signingCert);
const certificateChainObj = [];
certificateChainObj[0] = parseCertificate(signingCert);
for (let i = 0; i < certificateChain.length; i++) {
certificateChainObj[i + 1] = parseCertificate(certificateChain[i])
}
let privateKeyDecoded;
try {
console.log("Calling parsePrivateKey");
privateKeyDecoded = await parsePrivateKey(privateKey);
} catch (e) {
console.log("Error decoding private key: ", e);
throw new Error('Error decoding private key: ' + e);
}
return parsePrivateKey(privateKey).then(privateKeyDecoded => {
return signPdfObjects(pdfRaw, signingCertObj, certificateChainObj, privateKeyDecoded);
});
return await signPdfObjects(pdfRaw, signingCertObj, certificateChainObj, privateKeyDecoded);
}
\ No newline at end of file
Loading