• Mathews Stark
  • NEWBIE
  • 0 Points
  • Member since 2021

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 1
    Replies
Hi All

We have requirement to add digial signature authrozied by CA in PDF to ensure the security of the document send in email. 

I have created Apex class and Apex page to implement this functionality. I am not sure how to attach the signature created by Crypto.sign method in pdf document. Can anyone help me to attach certificate to PDF document?

Apex class:
public class CryptoSign {
    public static void generateCryptoSign(){
        PageReference pageRef = Page.ApexCryptoTest;
        Blob pdfDoc = pageRef.getContentAsPDF();
        
        String algorithmName = 'RSA-SHA1';
        String key = 'PKCS12 Key';
        Blob privateKey = EncodingUtil.base64Decode(key);
        
        // Using Crypto.sign PDF document generated from Apex page is digital signing
        Blob pdfDocSigned = Crypto.sign(algorithmName, pdfDoc, privateKey);
       
        Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
        mail.setSubject('Email Subject');
        mail.setHtmlBody('Email with Signed PDF attachment');
        List<String> toAddr = new List<String>();
        toAddr.add('test@test.com');
        mail.setToAddresses(toAddr);
        
        List<Messaging.Emailfileattachment> attachments = new List<Messaging.Emailfileattachment>();
                
        Messaging.Emailfileattachment attach = new Messaging.Emailfileattachment();
        attach = new Messaging.Emailfileattachment();
        attach.setFileName('SignedPDF.pdf');
        attach.setBody(pdfDocSigned);
        attachments.add(attach);
        mail.setFileAttachments(attachments);
        
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
    }
}

Apex Page:
<apex:page >
    Test Apex page
</apex:page>