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, OpenPDFStringOtwiera dokument do podpisania z pliku, strumienia albo łańcucha ANSI
OpenPFX, OpenCertStore, OpenCertContextWiąże plik PFX, certyfikat magazynu systemowego po nazwie wyświetlanej albo zewnętrzny kontekst certyfikatu
OpenEd25519, OpenEd25519FromFileWiąże parę kluczy Ed25519 z pamięci albo z plików
OpenCNGKey, OpenCNGKeyHandleWiąże klucz CNG po dostawcy i nazwie klucza albo po uchwycie klucza
OpenExternalDigestSignerDeleguje podpis skrótu do zewnętrznego callbacku
SelectFieldWybiera pole podpisu po w pełni kwalifikowanej nazwie i stronie
SetSignaturePropertyUstawia jedno z spReason, spLocation, spContactInfo, spFieldImage, spSubFilter i spFieldImageOptions
SetAppearanceTextPrzechowuje automatycznie wygenerowany widoczny blok tekstu zapisywany do wyglądu pola przy dopisywaniu
SetSignatureBoundsUmieszcza pole pod jawnymi współrzędnymi
SetPassthroughWytwarza podpis przelotowy o dokładnie podanej długości dla podpisywania zewnętrznego
SetDocTimeStampPrzełącza podpis na znacznik czasu dokumentu
SetDigestAlgorithmWybiera skrót używany do podpisu
SetContentsReserveBytes, SetContentsEstimateRezerwuje dodatkowe bajty albo wymiaruje rezerwację z oszacowań łańcucha, CRL, OCSP i znacznika czasu plus margines bezpieczeństwa
SetRevocationInfoOsadza wcześniej zebrane dane o odwołaniu w formie DER
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDeklaruje intencję podpisania, politykę i atest prawny
SetDocMDPWłącza podpis poświadczający na poziomie DocMDP 1, 2 albo 3; wywołać przed SelectField
SetFieldLockZapisuje słownik blokady pola z akcją i listą nazw pól
AppendToFile, AppendToStreamZapisuje podpisaną rewizję do nowego pliku lub strumienia
ApplySignatureNakłada podpis na dokument otwarty w miejscu
GetByteRange, GetEstimatedContentsBytesOdczytuje po fakcie wpis ByteRange i oszacowany rozmiar zawartości po zbudowaniu rewizji
SetInPlaceOznacza rewizję jako aktualizację otwartego dokumentu w miejscu

Parametry

IsDocTimeStampTrue, 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