Podpisy cyfrowe

Podpisy cyfrowe

Aspose.Words FOSS dla .NET może przeglądać i weryfikować cyfrowe podpisy, które są już dołączone do a .docx dokumentu poprzez the Aspose.Words.DigitalSignatures przestrzeni nazw. Ta edycja obejmuje podpis verification — odczytywanie metadanych podpisu, sprawdzanie ważności oraz badanie certyfikatu podpisującego. Nie obejmuje możliwości tworzenia nowych podpisów w dokumencie.


Odczytywanie podpisów z dokumentu

Każdy Document udostępnia właściwość DigitalSignatures, zwracającą DigitalSignatureCollection — kolekcję tylko do odczytu, wyliczalną DigitalSignature obiektów już obecnych w załadowanym pliku. DigitalSignatureUtil.LoadSignatures(fileName) (oraz przeciążenie LoadSignatures(stream)) odczytuje podpisy bezpośrednio z pliku lub strumienia, bez ładowania pełnego dokumentu do obiektu Document, co jest przydatne, gdy potrzebujesz jedynie sprawdzić status podpisu. Właściwość IsValid kolekcji informuje, czy każdy zawarty w niej podpis jest ważny, a Count podaje, ile podpisów zostało znalezionych.


Badanie pojedynczego podpisu

Każdy DigitalSignature udostępnia IsValid (czy podpis jest kryptograficznie ważny), SignatureType (wartość DigitalSignatureType — CryptoApi, XmlDsig lub Unknown), SignTime, Comments, SubjectName, IssuerName oraz surowe bajty SignatureValue. Właściwość CertificateHolder zwraca obiekt CertificateHolder opakowujący certyfikat podpisującego; jego właściwość Certificate udostępnia podstawowy X509Certificate2, abyś mógł przeglądać standardowe pola certyfikatu (wydawca, podmiot, okres ważności) przy użyciu własnych interfejsów API certyfikatów .NET.


Co nie jest obsługiwane w tej edycji

Powierzchnia API wciąż deklaruje członków związanych z podpisywaniem — DigitalSignatureUtil.Sign(), SignOptions, oraz XmlDsigLevel — w celu zachowania zgodności strukturalnej z komercyjnym modelem obiektowym Aspose.Words dla .NET, ale tworzenie nowego cyfrowego podpisu w dokumencie nie jest funkcjonalne w tej edycji FOSS. Użyj tej edycji do verify podpisów, które już istnieją w dokumencie; przepływ pracy podpisywania wymaga Aspose.Words dla .NET.


Wskazówki i najlepsze praktyki

  • Preferuj DigitalSignatureUtil.LoadSignatures() zamiast otwierania pełnego Document, gdy potrzebujesz jedynie sprawdzić, czy plik jest podpisany — unika to kosztu parsowania całego ciała dokumentu.
  • Sprawdź najpierw DigitalSignatureCollection.IsValid w celu szybkiego określenia sukcesu/porażki, zanim przejdziesz do iteracji poszczególnych wartości DigitalSignature.IsValid.
  • SignatureType informuje, który mechanizm podpisu wygenerował podpis (CryptoApi vs. XmlDsig); ma to wpływ na to, które pola certyfikatu są istotne.
  • Traktuj IsValid == false jako warunek twardej awarii w każdym zautomatyzowanym pipeline’ie przyjmowania dokumentów — nie prezentuj metadanych podpisu z nieprawidłowego podpisu jako godnych zaufania.

Typowe problemy

ProblemPrzyczynaNaprawa
DigitalSignatures.Count jest 0 w podpisanym .docxPlik został ponownie zapisany przez narzędzie, które usunęło część podpisuZweryfikuj względem oryginalnego podpisanego pliku, a nie ponownie zapisanego egzemplarza
Podpis raportuje IsValid = falseZawartość dokumentu zmieniła się po podpisaniu lub certyfikat jest niezaufany/przedawnionyTraktuj jako nieważny; nie próbuj „repair” podpisu
Próba podpisania dokumentu nie ma skutkuPodpisywanie nie jest zaimplementowane w tej edycji FOSSUżyj Aspose.Words dla .NET (komercyjny) w przepływach podpisywania
CertificateHolder.Certificate rzuca wyjątek podczas inspekcjiPodstawowe dane certyfikatu są nieprawidłowe lub część podpisu jest uszkodzonaPotwierdź, że plik źródłowy jest autentycznym, niezmodyfikowanym podpisanym dokumentem

FAQ

Czy Aspose.Words FOSS dla .NET może podpisać dokument?

Nie. Ta edycja może weryfikować istniejące podpisy cyfrowe, ale nie może tworzyć nowych. Metoda DigitalSignatureUtil.Sign() i klasa SignOptions istnieją w warstwie API w celu zachowania kompatybilności strukturalnej, jednak podpisywanie nie jest tutaj funkcjonalne.

Jak sprawdzić, czy dokument jest podpisany, bez pełnego wczytywania?

Wywołaj DigitalSignatureUtil.LoadSignatures(fileName), który zwraca DigitalSignatureCollection bezpośrednio z pliku.

Co oznacza DigitalSignatureCollection.IsValid?

Jest true tylko wtedy, gdy każdy podpis w zbiorze jest indywidualnie ważny — szybki sposób na sprawdzenie ogólnej integralności podpisu dokumentu przed przeglądaniem każdego DigitalSignature.

Gdzie mogę uzyskać szczegóły certyfikatu dla podpisu?

Poprzez DigitalSignature.CertificateHolder.Certificate, który zwraca standardowy .NET X509Certificate2.


API Reference Podsumowanie

Klasa / MetodaOpis
Document.DigitalSignaturesPodpisy już dołączone do wczytanego dokumentu
DigitalSignatureUtil.LoadSignatures()Odczytaj podpisy z pliku lub strumienia bez ładowania pełnego dokumentu
DigitalSignatureCollectionKolekcja tylko do odczytu obiektów DigitalSignature; IsValid, Count
DigitalSignaturePojedynczy podpis: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureTypeWyliczenie: CryptoApi, XmlDsig, Unknown
CertificateHolderOpakowuje podpis X509Certificate2

Zobacz także

 Polski