I have developed a function to sign a PDF created in memorystream and write it to a PDF. Now I'm looking to expand the function and instead of creating a PDF that is signed physically, I want to create the signed PDF in memory, so I can attach it to an email.
This is what I have:
Using myPdfReader As New PdfReader(sourcePDFStream)
Using myFileStream As New MemoryStream()
Using myPdfStamper As PdfStamper = PdfStamper.CreateSignature(myPdfReader, myFileStream, "0"c)
Dim myPdfSignatureAppearance As PdfSignatureAppearance = myPdfStamper.SignatureAppearance
myPdfSignatureAppearance.SetVisibleSignature(New iTextSharp.text.Rectangle(100, 100, 250, 150), myPdfReader.NumberOfPages, "Digital Signature")
Dim myExternalSignature As IExternalSignature = New PrivateKeySignature(pk, "SHA-256")
MakeSignature.SignDetached(myPdfSignatureAppearance, myExternalSignature, chain, Nothing, Nothing, Nothing, 0, CryptoStandard.CMS)
clsMail.SendHTMLMailPackStream("niels@email.be", "EFFFFactuurFEB", "NL", "docname", myVars, myFileStream)
End Using
End Using
End Using
The problem I'm facing is that when I'm calling my 'SendHTMLMailPackStream' method, 'myfilestream' is already closed.
Does anyone knows an answer to this?
EDIT:
I found that everytime the MakeSignature.SignDetached() method is hit, it closes all my streams. But I have no idea how to cancel that..