Sign documents with extra Digital Signature properties

GroupDocs.Signature contains DigitalSignatureAppearance class that implements extra settings for digital signature of Word Processing and Spreadsheets documents

Base signature options SignOptions property SignOptions.Appearance should be set with instance of DigitalSignatureAppearance class to provide additional digital signature look

Here are the steps to setup extra image appearance with GroupDocs.Signature:

This example shows how to setup extra digital signature look. See SignResult

using (Signature signature = new Signature("sample.docx"))
{
    DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
    {
        // certifiate password
        Password = "1234567890",
        // digital certificate details
        Reason = "Sign",
        Contact = "JohnSmith",
        Location = "Office1",

        // image as digital certificate appearance on document pages
        ImageFilePath = imagePath,
        //
        AllPages = true,
        Width = 80,
        Height = 60,
        VerticalAlignment = VerticalAlignment.Bottom,
        HorizontalAlignment = HorizontalAlignment.Right,
        Margin = new Padding() { Bottom = 10, Right = 10 },
        // Setup signature line appearance.
        // This appearance will add Signature Line on the first page.
        // Could be useful for .xlsx files.
        Appearance = new DigitalSignatureAppearance("John Smith", "Title", "jonny@test.com")

    };
    signature.Sign("signed.docx", options);
}

Sign Pdf document with Text signature Sticker appearance

This example shows how to add Text signature to Pdf document with sticker look. See SignResult

using (Signature signature = new Signature("sample.pdf"))
{
    TextSignOptions options = new TextSignOptions("John Smith")
    {
        // set signature position
        Left = 100,
        Top = 100,
        // set signature rectangle
        Width = 100,
        Height = 30,
        // setup proper signature implementation
        SignatureImplementation = TextSignatureImplementation.Sticker,
        Appearance = new PdfTextStickerAppearance()
        {
            // select sticker icon
            Icon = PdfTextStickerIcon.Star,
            // setup if popup annotation will be opened by default
            Opened = false,
            // text content of an annotation
            Contents = "Sample",
            Subject = "Sample subject",
            Title = "Sample Title"
        },
        // set signature alignment
        VerticalAlignment = VerticalAlignment.Bottom,
        HorizontalAlignment = HorizontalAlignment.Right,
        Margin = new Padding() { Bottom = 20, Right = 20 },
        // set text color and Font
        ForeColor = Color.Red,
        Font = new SignatureFont { Size = 12, FamilyName = "Comic Sans MS" },
    };
    // sign document to file
    signature.Sign("signed.pdf", options);
}

Sign Word documents with post-quantum (ML-DSA) certificates

Starting with GroupDocs.Signature for .NET 26.9, Word Processing documents can be signed with a certificate that has a post-quantum ML-DSA key (ML-DSA-44, ML-DSA-65 or ML-DSA-87, defined in FIPS 204). The PFX file is used in the same way as any other certificate:

using (Signature signature = new Signature("sample.docx"))
{
    // PFX file with an ML-DSA-65 key and its certificate
    DigitalSignOptions options = new DigitalSignOptions("mldsa65.pfx")
    {
        Password = "1234567890"
    };
    SignResult result = signature.Sign("signed.docx", options);
}

This works on every supported platform. .NET itself reads ML-DSA keys only on some systems (for example, it cannot on Linux with .NET 6 or .NET 8). Where it cannot, GroupDocs.Signature uses the certificate as read by the Word Processing engine. Verifying the signed document with DigitalVerifyOptions and the PFX file, or its public .cer certificate, works in the same way.

Limits:

  • Only Word Processing documents (for example DOCX, DOC and ODT) can be signed with ML-DSA. PDF, Spreadsheet and Presentation documents cannot yet.
  • ML-KEM keys are for key agreement and cannot sign.
  • There is no standard XML-DSig identifier for ML-DSA yet, so the signature names the algorithm by its object identifier (for example urn:oid:2.16.840.1.101.3.4.3.18 for ML-DSA-65). Microsoft Word and LibreOffice may not validate such a signature. Check with the software your recipients use before you rely on it.
  • Where .NET cannot read the key, the certificate returned in SignResult (DigitalSignature.Certificate) is the public certificate, without its private key.
  • Expired and not-yet-valid ML-DSA certificates are rejected in the same way as any other certificate. See “Certificates outside their validity period” in Pdf Digitally signing.

More resources

GitHub Examples

You may easily run the code above and see the feature in action in our GitHub examples:

Free Online Apps

Along with the full-featured .NET library, we provide simple but powerful free online apps.

To sign PDF, Word, Excel, PowerPoint, and other documents you can use the online apps from the GroupDocs.Signature App Product Family.

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.