Analyze SignResult result to check newly created signatures if needed.
This example shows how to setup extra digital signature look. See SignResult
using(Signaturesignature=newSignature("sample.docx")){DigitalSignOptionsoptions=newDigitalSignOptions("certificate.pfx"){// certifiate passwordPassword="1234567890",// digital certificate detailsReason="Sign",Contact="JohnSmith",Location="Office1",// image as digital certificate appearance on document pagesImageFilePath=imagePath,//AllPages=true,Width=80,Height=60,VerticalAlignment=VerticalAlignment.Bottom,HorizontalAlignment=HorizontalAlignment.Right,Margin=newPadding(){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=newDigitalSignatureAppearance("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(Signaturesignature=newSignature("sample.pdf")){TextSignOptionsoptions=newTextSignOptions("John Smith"){// set signature positionLeft=100,Top=100,// set signature rectangleWidth=100,Height=30,// setup proper signature implementationSignatureImplementation=TextSignatureImplementation.Sticker,Appearance=newPdfTextStickerAppearance(){// select sticker iconIcon=PdfTextStickerIcon.Star,// setup if popup annotation will be opened by defaultOpened=false,// text content of an annotationContents="Sample",Subject="Sample subject",Title="Sample Title"},// set signature alignmentVerticalAlignment=VerticalAlignment.Bottom,HorizontalAlignment=HorizontalAlignment.Right,Margin=newPadding(){Bottom=20,Right=20},// set text color and FontForeColor=Color.Red,Font=newSignatureFont{Size=12,FamilyName="Comic Sans MS"},};// sign document to filesignature.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(Signaturesignature=newSignature("sample.docx")){// PFX file with an ML-DSA-65 key and its certificateDigitalSignOptionsoptions=newDigitalSignOptions("mldsa65.pfx"){Password="1234567890"};SignResultresult=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: