Signatures numériques
Signatures numériques
Aspose.Words FOSS pour .NET peut inspecter et vérifier les signatures numériques déjà attachées à un .docx document via le Aspose.Words.DigitalSignatures espace de noms. Cette édition couvre la signature verification — lecture des métadonnées de la signature, vérification de la validité et examen du certificat de signature. Elle n’inclut pas la capacité de créer de nouvelles signatures sur un document.
Lecture des signatures à partir d’un document
Chaque Document expose une propriété DigitalSignatures renvoyant un DigitalSignatureCollection — une collection en lecture seule et énumérable d’objets DigitalSignature déjà présents dans le fichier chargé. DigitalSignatureUtil.LoadSignatures(fileName) (et la surcharge LoadSignatures(stream)) lit les signatures directement depuis un fichier ou un flux sans charger le document complet dans un objet Document, ce qui est utile lorsque vous avez seulement besoin de vérifier l’état des signatures. La propriété IsValid de la collection indique si chaque signature qu’elle contient est valide, et Count indique combien de signatures ont été trouvées.
Inspection d’une signature individuelle
Chaque DigitalSignature expose IsValid (indiquant si la signature est cryptographiquement valide), SignatureType (une valeur DigitalSignatureType — CryptoApi, XmlDsig ou Unknown), SignTime, Comments, SubjectName, IssuerName, et les octets bruts SignatureValue. La propriété CertificateHolder renvoie un objet CertificateHolder encapsulant le certificat de signature; sa propriété Certificate expose le X509Certificate2 sous-jacent afin que vous puissiez inspecter les champs standards du certificat (émetteur, sujet, période de validité) avec les propres API de certificat de .NET.
Ce qui n’est pas pris en charge dans cette édition
La surface API déclare toujours des membres liés à la signature — DigitalSignatureUtil.Sign(), SignOptions, et XmlDsigLevel — pour assurer la compatibilité structurelle avec le modèle d’objet commercial Aspose.Words pour .NET, mais la création d’une nouvelle signature numérique sur un document n’est pas fonctionnelle dans cette édition FOSS. Utilisez cette édition pour verify les signatures qui existent déjà dans un document ; un flux de travail de signature nécessite Aspose.Words pour .NET.
Conseils et bonnes pratiques
- Privilégiez
DigitalSignatureUtil.LoadSignatures()plutôt que d’ouvrir leDocumentcomplet lorsque vous avez seulement besoin de vérifier si un fichier est signé — cela évite le coût de l’analyse de tout le corps du document. - Vérifiez d’abord
DigitalSignatureCollection.IsValidpour un résultat rapide de réussite/échec avant d’itérer les valeurs individuelles deDigitalSignature.IsValid. SignatureTypeindique quel mécanisme de signature a produit la signature (CryptoApivs.XmlDsig); cela influence les champs du certificat qui sont pertinents.- Traitez
IsValid == falsecomme une condition d’échec critique dans tout pipeline d’ingestion automatisée de documents — ne faites pas apparaître les métadonnées de signature d’une signature invalide comme fiables.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
DigitalSignatures.Count est 0 sur un .docx signé | Le fichier a été réenregistré par un outil qui a supprimé la partie signature | Vérifiez avec le fichier signé original, pas avec une copie réenregistrée |
La signature indique IsValid = false | Le contenu du document a été modifié après la signature, ou le certificat n’est pas fiable/expiré | Traiter comme invalide; ne pas tenter de “repair” la signature |
| Tenter de signer un document n’a aucun effet | La signature n’est pas implémentée dans cette édition FOSS | Utilisez Aspose.Words pour .NET (commercial) pour les flux de travail de signature |
CertificateHolder.Certificate lance une exception lors de l’inspection | Les données de certificat sous-jacentes sont mal formées ou la partie signature est corrompue | Confirmez que le fichier source est un document signé authentique et non modifié |
FAQ
Le Aspose.Words FOSS pour .NET peut-il signer un document?
Non. Cette édition peut vérifier les signatures numériques existantes mais ne peut pas en créer de nouvelles. La méthode DigitalSignatureUtil.Sign() et la classe SignOptions existent dans la surface API pour la compatibilité structurelle, mais la signature n’est pas fonctionnelle ici.
Comment vérifier si un document est signé sans le charger complètement?
Appelez DigitalSignatureUtil.LoadSignatures(fileName), qui renvoie un DigitalSignatureCollection directement depuis le fichier.
Que signifie DigitalSignatureCollection.IsValid?
C’est true uniquement lorsque chaque signature de la collection est individuellement valide — une façon rapide de vérifier l’intégrité globale de la signature du document avant d’inspecter chaque DigitalSignature.
Où puis-je obtenir les détails du certificat d’une signature?
Via DigitalSignature.CertificateHolder.Certificate, qui renvoie un .NET X509Certificate2 standard.
API Reference Résumé
| Classe / Méthode | Description |
|---|---|
Document.DigitalSignatures | Signatures déjà jointes à un document chargé |
DigitalSignatureUtil.LoadSignatures() | Lire les signatures à partir d’un fichier ou d’un flux sans charger le document complet |
DigitalSignatureCollection | Collection en lecture seule d’objets DigitalSignature; IsValid, Count |
DigitalSignature | Une signature unique : IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Énumération : CryptoApi, XmlDsig, Unknown |
CertificateHolder | Enveloppe la signature X509Certificate2 |