TPDFlibSigner
Security and Signatures
Opis
TPDFlibSigner to samodzielny silnik podpisywania, który paruje cel TPDFlibSignDoc z tożsamością TPDFlibPFXFile i zapisuje gotowy podpis jako nową rewizję przyrostową
Otwórz PDF z pliku, strumienia albo łańcucha, zwiąż tożsamość jedną z metod otwarcia, wybierz pole docelowe, skonfiguruj podpis, a potem zakończ przez AppendToFile, AppendToStream albo ApplySignature
Klasa pokrywa pełny zestaw funkcji podpisywania: wybór skrótu, rezerwację i szacowanie zawartości, informacje o odwołaniu, typy zobowiązań, polityki podpisu, atesty prawne, poziomy certyfikacji DocMDP, blokady pól, znaczniki czasu dokumentu i podpisy przelotowe o stałej długości
Fasada wystawia ten sam potok przez udokumentowane funkcje SignProcess; sięgaj po tę klasę bezpośrednio, gdy przepływ podpisywania ma być osadzony w większym własnym zapisie rewizji
Składnia
Delphi
TPDFlibSigner = Class
Public
Constructor Create;
Destructor Destroy; Override;
Function OpenPDF(Const FileName: WideString; Const Password: WideString): TPDFlibSignerResult;
Function OpenPDFStream(SourceStream: TStream; Const Password: WideString): TPDFlibSignerResult;
Function OpenPDFString(Const SourceString: AnsiString; Const Password: WideString): TPDFlibSignerResult;
Function OpenPFX(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
Function OpenCertStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
Function OpenCertContext(CertContext: Pointer): TPDFlibSignerResult;
Function OpenEd25519(Const CertificateDER, PrivateKeyDER: AnsiString): TPDFlibSignerResult;
Function OpenEd25519FromFile(Const CertificateFile, PrivateKeyFile: WideString): TPDFlibSignerResult;
Function OpenCNGKey(Const CertificateDER: AnsiString;
Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): TPDFlibSignerResult;
Function OpenCNGKeyHandle(Const CertificateDER: AnsiString; KeyHandle: TPLIntPtr; AllowUI: Boolean): TPDFlibSignerResult;
Function OpenExternalDigestSigner(Const CertificateDER: AnsiString;
Signer: TPDFlibExternalDigestSignEvent; Sender: TObject;
SignProcessID, SignatureAlgorithm, SignatureReserveBytes: Integer): TPDFlibSignerResult;
Procedure SetPrivateKeyUI(AllowUI: Boolean);
Procedure SetRSAPSSPadding(Enable: Boolean);
Procedure SetLegalAttestation(Const Value: WideString);
Procedure SelectField(Const FieldName: WideString; FieldPage: Integer);
Procedure SetSignatureProperty(SignatureProperty: TPDFlibSignatureProperty; Const NewValue: AnsiString);
Procedure SetAppearanceText(Const Text: WideString; FontSize, FontRed, FontGreen, FontBlue: Double);
Procedure SetSignatureBounds(Left, Top, Width, Height: Double);
Procedure SetPassthrough(SignatureLength: Integer);
Procedure SetDocTimeStamp(SignatureLength: Integer);
Procedure SetDigestAlgorithm(Algorithm: TPDFlibDigestAlgorithm);
Procedure SetContentsReserveBytes(ExtraBytes: Integer);
Procedure SetContentsEstimate(ChainBytes, CRLBytes, OCSPBytes, TimeStampBytes, SafetyMarginPercent: Integer);
Procedure SetRevocationInfo(Const RevocationInfoDER: AnsiString);
Procedure SetCommitmentType(CommitmentType: Integer);
Procedure SetDocMDP(Level: Integer);
Function SetFieldLock(Const Action: AnsiString; Const Fields: TArray): Boolean;
Procedure SetSignaturePolicy(Const PolicyOID: AnsiString; Const PolicyHashBytes: AnsiString; HashAlgorithm: TPDFlibDigestAlgorithm);
Function AppendToFile(Const FileName: WideString): Boolean;
Function AppendToStream(TargetStream: TStream): Boolean;
Function ApplySignature: Boolean;
Function GetByteRange(Index: Integer): Int64;
Function GetEstimatedContentsBytes: Integer;
Procedure SetInPlace;
Property IsDocTimeStamp: Boolean Read FIsDocTimeStamp;
End; Metody
| OpenPDF, OpenPDFStream, OpenPDFString | Otwiera dokument do podpisania z pliku, strumienia albo łańcucha ANSI |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Wiąże plik PFX, certyfikat magazynu systemowego po nazwie wyświetlanej albo zewnętrzny kontekst certyfikatu |
| OpenEd25519, OpenEd25519FromFile | Wiąże parę kluczy Ed25519 z pamięci albo z plików |
| OpenCNGKey, OpenCNGKeyHandle | Wiąże klucz CNG po dostawcy i nazwie klucza albo po uchwycie klucza |
| OpenExternalDigestSigner | Deleguje podpis skrótu do zewnętrznego callbacku |
| SelectField | Wybiera pole podpisu po w pełni kwalifikowanej nazwie i stronie |
| SetSignatureProperty | Ustawia jedno z spReason, spLocation, spContactInfo, spFieldImage, spSubFilter i spFieldImageOptions |
| SetAppearanceText | Przechowuje automatycznie wygenerowany widoczny blok tekstu zapisywany do wyglądu pola przy dopisywaniu |
| SetSignatureBounds | Umieszcza pole pod jawnymi współrzędnymi |
| SetPassthrough | Wytwarza podpis przelotowy o dokładnie podanej długości dla podpisywania zewnętrznego |
| SetDocTimeStamp | Przełącza podpis na znacznik czasu dokumentu |
| SetDigestAlgorithm | Wybiera skrót używany do podpisu |
| SetContentsReserveBytes, SetContentsEstimate | Rezerwuje dodatkowe bajty albo wymiaruje rezerwację z oszacowań łańcucha, CRL, OCSP i znacznika czasu plus margines bezpieczeństwa |
| SetRevocationInfo | Osadza wcześniej zebrane dane o odwołaniu w formie DER |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | Deklaruje intencję podpisania, politykę i atest prawny |
| SetDocMDP | Włącza podpis poświadczający na poziomie DocMDP 1, 2 albo 3; wywołać przed SelectField |
| SetFieldLock | Zapisuje słownik blokady pola z akcją i listą nazw pól |
| AppendToFile, AppendToStream | Zapisuje podpisaną rewizję do nowego pliku lub strumienia |
| ApplySignature | Nakłada podpis na dokument otwarty w miejscu |
| GetByteRange, GetEstimatedContentsBytes | Odczytuje po fakcie wpis ByteRange i oszacowany rozmiar zawartości po zbudowaniu rewizji |
| SetInPlace | Oznacza rewizję jako aktualizację otwartego dokumentu w miejscu |
Parametry
| IsDocTimeStamp | True, gdy silnik wytwarza znacznik czasu dokumentu |
|---|
Uwagi
Każda metoda otwarcia zwraca TPDFlibSignerResult
Poziomy DocMDP mapują się na wartość P transformacji z ISO 32000: 1 brak zmian, 2 wypełnianie formularzy, 3 adnotacje; gdy poziom jest niezerowy, w AcroForm ustawiany jest bit AppendOnly w /SigFlags, by przeglądarki przestrzegały certyfikacji
Zobacz również
TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP