In today’s digital age, ensuring the authenticity and integrity of electronic documents is crucial. One highly effective method for achieving this is through the use of digital signatures. In this guide, we will explore the world of digital signatures, explaining what they are, why they are essential, and how you can utilize GroupDocs.Signature for Python via .NET to seamlessly eSign your documents.
What is a Digital Signature?
A digital signature is a cryptographic mechanism for verifying the authenticity and integrity of electronic documents. It provides strong assurance that the document originated from a known sender and has not been tampered with by unauthorized sources. Digital signatures are typically represented by certificates containing private (for signing) and public (for verification) keys. Various public key cryptography standards, such as PFX format, are commonly used for this purpose.
The picture below shows how a digital signature looks on a PDF document page by default.
Why Use Digital Signatures?
Enhanced Security: Digital signatures provide a higher level of document security, making it extremely challenging for unauthorized parties to alter the content.
Authentication: They offer a reliable way to verify the identity of the document sender.
Non-repudiation: Digital signatures prevent senders from denying the authenticity of the signed document.
How to Sign a Document with a Digital Signature
GroupDocs.Signature for Python via .NET supports the creation of digital signatures based on existing PFX certificates. To specify various settings the library provides the DigitalSignOptions class that allows adjusting digital signature properties in the document:
The example below shows how to sign a PDF document with a digital e-signature using Python. We can sign any other supported document format in the same way.
importgroupdocs.signatureassignaturefromgroupdocs.signature.optionsimportDigitalSignOptions# Initialize signaturewithsignature.Signature("sample.pdf")assign:# Create digital signature optionsoptions=DigitalSignOptions("certificate.pfx")# Set certificate passwordoptions.password="1234567890"# Optional: setup image file pathoptions.image_file_path="sample.jpg"# Set signature positionoptions.left=100options.top=100# Sign documentsign.sign("sampleSigned.pdf",options)
Advanced Digital Signature Options
You can customize the digital signature further with additional options:
importgroupdocs.signatureassignaturefromgroupdocs.signature.optionsimportDigitalSignOptions# Initialize signaturewithsignature.Signature("sample.pdf")assign:# Create digital signature optionsoptions=DigitalSignOptions("certificate.pfx")# Set certificate passwordoptions.password="1234567890"# Set signature appearanceoptions.visible=Trueoptions.image_file_path="signature.jpg"# Set signature position and sizeoptions.left=100options.top=100options.width=200options.height=100# Set additional informationoptions.contact="John Smith"options.reason="Approval"options.location="New York"# Set XAdES typeoptions.xades_type=signature.XAdESType.XAdES# Sign documentsign.sign("sampleSigned.pdf",options)
Loading Certificate from Stream
You can also load the certificate from a stream:
importgroupdocs.signatureassignaturefromgroupdocs.signature.optionsimportDigitalSignOptions# Initialize signaturewithsignature.Signature("sample.pdf")assign:# Load certificate from streamwithopen("certificate.pfx","rb")ascert_stream:# Create digital signature optionsoptions=DigitalSignOptions(cert_stream)# Set certificate passwordoptions.password="1234567890"# Set signature positionoptions.left=100options.top=100# Sign documentsign.sign("sampleSigned.pdf",options)
Summary
This guide demonstrates how to use GroupDocs.Signature for Python via .NET to sign documents with digital signatures. It explains how to load documents, configure certificate-based signatures, and save signed files securely. Advanced features, including signature appearance customization and validation, are also covered. Refer to related resources for additional details on digital signing workflows.
More Resources
GitHub Examples
You may easily run the code above and see the feature in action in our GitHub examples: