SignWithP12.vb
''
'' This code is part of Document Solutions for PDF .NET demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System
Imports System.IO
Imports System.Drawing
Imports System.Text
Imports System.Collections.Generic
Imports System.Security.Cryptography
Imports System.Security.Cryptography.X509Certificates
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.Security
Imports GrapeCity.Documents.Pdf.AcroForms
Imports GrapeCity.Documents.Text

'' This sample shows how to sign a PDF with a .p12 file
'' containing a digital certificate that uses PKCS#12
'' (Public Key Cryptography Standard #12) encryption.
Public Class SignWithP12
    Function CreatePDF(ByVal stream As Stream) As Integer
        Dim doc = New GcPdfDocument()
        Using s = File.OpenRead(Path.Combine("Resources", "PDFs", "SignWithP12.pdf"))
            doc.Load(s)

            Dim p12 = Path.Combine("Resources", "Misc", "DsPdfTest2KeyStore.p12")
            Dim sp = New SignatureProperties() With {
                .SignatureBuilder = New Pkcs7SignatureBuilder() With {
                    .CertificateChain = SecurityUtils.GetCertificateChain(p12, "qq")
                },
                .SignatureField = doc.AcroForm.Fields(0)
            }
            sp.SignatureAppearance.Caption = "PKCS #12"
            doc.Sign(sp, stream)
        End Using

        '' Done.
        Return doc.Pages.Count
    End Function
End Class