PPTX Digital Signature in C# and VB.NET

A PPTX digital signature enables you to authenticate a PPTX file to establish that the sender of the file is who they say they are and the content of the PPTX file hasn’t been tampered with. It’s a crucial step that adds an additional layer of security to your PowerPoint presentation.

Before running any of the following examples on your machine, please read the Dependency notes.

The example below shows how you can create a digitally signed PPTX file in C# and VB.NET.

PPTX file digitally signed with GemBox.Presentation
Screenshot of PPTX file digitally signed with GemBox.Presentation
Upload your file (Drag file here)
using GemBox.Presentation;

class Program
{
    static void Main()
    {
        // If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var presentation = PresentationDocument.Load("%InputFileName%");

        var saveOptions = new PptxSaveOptions();
        saveOptions.DigitalSignatures.Add(new PptxDigitalSignatureSaveOptions()
        {
            CertificatePath = "%InputDigitalId%",
            CertificatePassword = "GemBoxPassword"
        });

        presentation.Save("PPTX Digital Signature.pptx", saveOptions);
    }
}
Imports GemBox.Presentation

Module Program

    Sub Main()

        ' If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Dim presentation = PresentationDocument.Load("%InputFileName%")

        Dim saveOptions As New PptxSaveOptions()
        saveOptions.DigitalSignatures.Add(New PptxDigitalSignatureSaveOptions() With
        {
            .CertificatePath = "%InputDigitalId%",
            .CertificatePassword = "GemBoxPassword"
        })

        presentation.Save("PPTX Digital Signature.pptx", saveOptions)
    End Sub
End Module

To get a valid signature in MS PowerPoint, as seen in the screenshot above, you will have to install GemBoxCA.crt certificate as a trusted root certification authority and install either GemBoxRSA.crt or GemBoxECDsa.crt certificate as an Intermediate Certification Authority, as described in the Digital ID notes.

To avoid installing the whole certificate chain, you can embed certificates in the signature. With this approach only the root certificate (GemBoxCA.crt) needs to be installed.

The following example shows how to add multiple signatures, set additional signature properties and embed an intermediate certificate.

Upload your file (Drag file here)
using GemBox.Presentation;
using GemBox.Presentation.Security;

class Program
{
    static void Main()
    {
        // If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var presentation = PresentationDocument.Load("%InputFileName%");

        var signature1 = new PptxDigitalSignatureSaveOptions()
        {
            CertificatePath = "%#GemBoxECDsa521.pfx%",
            CertificatePassword = "GemBoxPassword",
            CommitmentType = DigitalSignatureCommitmentType.Created,
            SignerRole = "Developer"
        };
        // Embed intermediate certificate.
        signature1.Certificates.Add(new Certificate("%#GemBoxECDsa.crt%"));

        var signature2 = new PptxDigitalSignatureSaveOptions()
        {
            CertificatePath = "%#GemBoxRSA4096.pfx%",
            CertificatePassword = "GemBoxPassword",
            CommitmentType = DigitalSignatureCommitmentType.Approved,
            SignerRole = "Manager"
        };
        // Embed intermediate certificate.
        signature2.Certificates.Add(new Certificate("%#GemBoxRSA.crt%"));

        var saveOptions = new PptxSaveOptions();
        saveOptions.DigitalSignatures.Add(signature1);
        saveOptions.DigitalSignatures.Add(signature2);

        presentation.Save("PPTX Digital Signatures.pptx", saveOptions);
    }
}
Imports GemBox.Presentation
Imports GemBox.Presentation.Security

Module Program

    Sub Main()

        ' If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Dim presentation = PresentationDocument.Load("%InputFileName%")

        Dim signature1 As New PptxDigitalSignatureSaveOptions() With
        {
            .CertificatePath = "%#GemBoxECDsa521.pfx%",
            .CertificatePassword = "GemBoxPassword",
            .CommitmentType = DigitalSignatureCommitmentType.Created,
            .SignerRole = "Developer"
        }
        ' Embed intermediate certificate.
        signature1.Certificates.Add(New Certificate("%#GemBoxECDsa.crt%"))

        Dim signature2 As New PptxDigitalSignatureSaveOptions() With
        {
            .CertificatePath = "%#GemBoxRSA4096.pfx%",
            .CertificatePassword = "GemBoxPassword",
            .CommitmentType = DigitalSignatureCommitmentType.Approved,
            .SignerRole = "Manager"
        }
        ' Embed intermediate certificate.
        signature2.Certificates.Add(New Certificate("%#GemBoxRSA.crt%"))

        Dim saveOptions As New PptxSaveOptions()
        saveOptions.DigitalSignatures.Add(signature1)
        saveOptions.DigitalSignatures.Add(signature2)

        presentation.Save("PPTX Digital Signatures.pptx", saveOptions)
    End Sub
End Module

Remove a PPTX Digital Signature

You can also remove the existing digital signature in a PowerPoint document in C# and VB.NET using GemBox.Presentation.

The following example shows how to remove a digital signature from a PowerPoint presentation.

Upload your file (Drag file here)
using GemBox.Presentation;

class Program
{
    static void Main()
    {
        // If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");
        
        // Load signed presentation file.
        var presentation = PresentationDocument.Load("%InputFileName%");

        // Signature is removed by simply saving the presentation with default save options.
        presentation.Save("Unsigned.pptx");
    }
}
Imports GemBox.Presentation

Module Program

    Sub Main()

        ' If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        ' Load signed presentation file.
        Dim presentation = PresentationDocument.Load("%InputFileName%")

        ' Signature is removed by simply saving the presentation with default save options.
        presentation.Save("Unsigned.pptx")
    End Sub
End Module

Digital ID notes

Digital ID files used in the preceding example are part of a simple Public Key Infrastructure (PKI) created just for this demonstration which contains the following hierarchy of certificates and CRLs:

To get a valid signature in an MS Office Application, as seen in the screenshot above, you will have to add GemBoxCA.crt certificate to the list of Trusted Certificates on your machine using the following steps:

  1. Download GemBoxCA.crt certificate.
  2. Open the file and click Install Certificate....
  3. If you are adding a Root Certificate, choose the option "Place all certificates in the following store" and Browse for "Trusted Root Certification Authorities".
  4. After the installation is finished, you can see the certificate under "User Accounts" > "Manage User Certificates" in the Control Panel.
  5. Once you finish the verification it is safer to uninstall the certificate.

Dependency notes

Except for GemBox.Presentation, your project should reference Portable.BouncyCastle or BouncyCastle if your project targets .NET Framework (required for any advanced digital signature scenario, like using Elliptic Curve keys).

Want more?

Next example GitHub

Check the next example or select an example from the menu. You can also download our examples from the GitHub.


Like it?

Download Buy

If you want to try the GemBox.Presentation yourself, you can download the free version. It delivers the same performance and set of features as the professional version, but with some operations limited. To remove the limitation, you need to purchase a license.