Hello,
with reference to an older post from 2009 (https://forum.aspose.com/t/119198), I am trying to do sign and encrypt a document using the current version of Aspose.Pdf for .NET.
Is this still possible, and could you provide me with an example on how this can be done? When I have tried a modified version of the example in the older post, I manage to both encrypt and sign the document, but Adobe Reader displays an error "Certification by XXX is Invalid." (Se attached screenshot)
When I just adds a signature or just encrypts the file all seems to work as desired but not both features together. This is the code I have written to modify my Pdf:
private void ApplySecurityToPdfFile(byte[] originalPdfFile, out byte[] securedPdfFile, ISignature signatureSignature, IPrivileges privileges) { securedPdfFile = null;<span style="color:blue;">using</span> (<span style="color:blue;">var</span> l_originalPdfStream = <span style="color:blue;">new</span> <span style="color:#2b91af;">MemoryStream</span>(originalPdfFile)) { <span style="color:blue;">using</span> (<span style="color:blue;">var</span> l_Originaldocument = <span style="color:blue;">new</span> Aspose.Pdf.<span style="color:#2b91af;">Document</span>(l_originalPdfStream)) { <span style="color:blue;">using</span> (<span style="color:blue;">var</span> l_securedPdfStream = <span style="color:blue;">new</span> <span style="color:#2b91af;">MemoryStream</span>()) { <span style="color:#2b91af;">PdfFileSecurity</span> l_fileSecurity = <span style="color:blue;">new</span> <span style="color:#2b91af;">PdfFileSecurity</span>(l_Originaldocument); <span style="color:blue;">var</span> l_documentPrivilege = Aspose.Pdf.Facades.<span style="color:#2b91af;">DocumentPrivilege</span>.AllowAll; l_documentPrivilege.AllowAssembly = <span style="color:blue;">false</span>; l_documentPrivilege.AllowCopy = <span style="color:blue;">false</span>; l_documentPrivilege.AllowDegradedPrinting = <span style="color:blue;">false</span>; l_documentPrivilege.AllowFillIn = <span style="color:blue;">true</span>; l_documentPrivilege.AllowModifyAnnotations = <span style="color:blue;">false</span>; l_documentPrivilege.AllowModifyContents = <span style="color:blue;">false</span>; l_documentPrivilege.AllowPrint = <span style="color:blue;">false</span>; l_documentPrivilege.AllowScreenReaders = <span style="color:blue;">false</span>; l_documentPrivilege.CopyAllowLevel = 0; l_documentPrivilege.PrintAllowLevel = 0; l_documentPrivilege.ChangeAllowLevel = 2; l_fileSecurity.EncryptFile(<span style="color:#a31515;">""</span>, <span style="color:#a31515;">"ownerpassword"</span>, l_documentPrivilege, <span style="color:#2b91af;">KeySize</span>.x128); l_fileSecurity.Save(l_securedPdfStream); <span style="color:blue;">using</span> (<span style="color:blue;">var</span> l_signedPdfStream = <span style="color:blue;">new</span> <span style="color:#2b91af;">MemoryStream</span>()) { <span style="color:blue;">using</span> (<span style="color:blue;">var</span> l_certificateStream = <span style="color:blue;">new</span> <span style="color:#2b91af;">MemoryStream</span>()) { <span style="color:blue;">var</span> l_signatureData = signatureSignature <span style="color:blue;">as</span> <span style="color:#2b91af;">Signature</span>; l_signatureData.SaveToStream(l_certificateStream); l_certificateStream.Position = 0; <span style="color:blue;">var</span> l_certificate = <span style="color:blue;">new</span> Aspose.Pdf.InteractiveFeatures.Forms.<span style="color:#2b91af;">PKCS7</span>(l_certificateStream, l_signatureData.CertificatePassword); <span style="color:blue;">var</span> l_signature = <span style="color:blue;">new</span> Aspose.Pdf.Facades.<span style="color:#2b91af;">PdfFileSignature</span>(); l_signature.BindPdf(l_securedPdfStream); <span style="color:blue;">var</span> l_docMdpSignature = <span style="color:blue;">new</span> Aspose.Pdf.InteractiveFeatures.Forms.<span style="color:#2b91af;">DocMDPSignature</span>(l_certificate, <span style="color:#2b91af;">DocMDPAccessPermissions</span>.NoChanges); l_signature.Certify(1, <span style="color:#a31515;">"Signature Reason"</span>, <span style="color:#a31515;">"Contact"</span>, <span style="color:#a31515;">"Location"</span>, <span style="color:blue;">false</span>, <span style="color:blue;">new</span> System.Drawing.<span style="color:#2b91af;">Rectangle</span>(100, 100, 200, 100), l_docMdpSignature); l_signature.Save(l_signedPdfStream); securedPdfFile = l_signedPdfStream.ToArray(); } } } } }
}
thanks,
Henrik