Ajouter une signature numérique ou signer numériquement un PDF en C#

Aspose.PDF pour .NET prend en charge la fonctionnalité de signature numérique des fichiers PDF en utilisant la classe SignatureField. Vous pouvez également certifier un fichier PDF avec un certificat PKCS12. Quelque chose de similaire à Ajouter des signatures et de la sécurité dans Adobe Acrobat.

Lorsque vous signez un document PDF en utilisant une signature, vous confirmez essentiellement son contenu “tel quel”. Par conséquent, tout autre changement effectué par la suite invalide la signature et ainsi, vous sauriez si le document a été modifié. Alors qu’en certifiant un document d’abord, cela vous permet de spécifier les modifications qu’un utilisateur peut apporter au document sans invalider la certification.

En d’autres termes, le document serait toujours considéré comme conservant son intégrité et le destinataire pourrait toujours faire confiance au document. Pour plus de détails, veuillez visiter Certifier et signer un PDF. En général, certifier un document peut être comparé à la signature de code d’un exécutable .NET.

Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing. Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.

Fonctionnalités de signature Aspose.PDF pour .NET

Nous pouvons utiliser les classes et méthodes suivantes pour la signature de PDF

Signer un PDF avec des signatures numériques

public static void SignDocument()
{
    string inFile = System.IO.Path.Combine(_dataDir,"DigitallySign.pdf");
    string outFile = System.IO.Path.Combine(_dataDir,"DigitallySign_out.pdf");
    using (Document document = new Document(inFile))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Pa$$w0rd2020"); // Utiliser les objets PKCS7/PKCS7Detached
            signature.Sign(1, true, new System.Drawing.Rectangle(300, 100, 400, 200),pkcs);
            // Enregistrer le fichier PDF de sortie
            signature.Save(outFile);
        }
    }
}

Ajouter un horodatage à la signature numérique

Comment signer numériquement un PDF avec horodatage

Aspose.PDF pour .NET prend en charge la signature numérique du PDF avec un serveur d’horodatage ou un service Web.

Pour répondre à cette exigence, la classe TimestampSettings a été ajoutée à l’espace de noms Aspose.PDF. Veuillez regarder le fragment de code suivant qui obtient l’horodatage et l’ajoute au document PDF :

public static void SignWithTimeStampServer()
{
    using (Document document = new Document(System.IO.Path.Combine(_dataDir,"SimpleResume.pdf")))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Start2020");
            TimestampSettings timestampSettings = new TimestampSettings("https://freetsa.org/tsr", string.Empty); // Le nom d'utilisateur/le mot de passe peuvent être omis
            pkcs.TimestampSettings = timestampSettings;
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
            // Créer l'un des trois types de signature
            signature.Sign(1, "Raison de la signature", "Contact", "Lieu", true, rect, pkcs);
            // Enregistrer le fichier PDF de sortie
            signature.Save(System.IO.Path.Combine(_dataDir, "DigitallySignWithTimeStamp_out.pdf"));
        }
    }
}