TPDFlibSigner

Security and Signatures

Beschreibung

TPDFlibSigner ist die eigenständige Signatur-Engine, die ein TPDFlibSignDoc-Ziel mit einer TPDFlibPFXFile-Identität paart und die fertige Signatur als neue inkrementelle Revision schreibt

Öffnen Sie das PDF aus Datei, Stream oder Zeichenkette, binden Sie die Identität über eine der Open-Methoden, wählen Sie das Zielfeld, konfigurieren Sie die Signatur, und schließen Sie mit AppendToFile, AppendToStream oder ApplySignature ab

Die Klasse deckt den vollen Signatur-Funktionssatz ab: Digest-Auswahl, Inhaltsreservierung und -schätzung, Widerrufsinfo, Commitment-Typen, Signaturrichtlinien, rechtliche Bescheinigungen, DocMDP-Zertifizierungsstufen, Feldsperren, Dokumentzeitstempel und Passthrough-Signaturen fester Länge

Die Fassade stellt dieselbe Pipeline über die dokumentierten SignProcess-Funktionen bereit; verwenden Sie diese Klasse direkt, wenn der Signatur-Workflow in einen größeren eigenen Revisions-Schreiber eingebettet werden muss

Syntax

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;

Methoden

OpenPDF, OpenPDFStream, OpenPDFStringÖffnet das zu signierende Dokument aus Datei, Stream oder ANSI-Zeichenkette
OpenPFX, OpenCertStore, OpenCertContextBindet eine PFX-Datei, ein Systemspeicher-Zertifikat über den Anzeigenamen oder einen externen Zertifikatskontext
OpenEd25519, OpenEd25519FromFileBindet ein Ed25519-Schlüsselpaar aus dem Speicher oder aus Dateien
OpenCNGKey, OpenCNGKeyHandleBindet einen CNG-Schlüssel über Provider und Schlüsselnamen oder über ein Schlüssel-Handle
OpenExternalDigestSignerDelegiert die Digest-Signatur an einen externen Callback
SelectFieldWählt das Signaturfeld über vollqualifizierten Namen und Seite
SetSignaturePropertySetzt einen der Werte spReason, spLocation, spContactInfo, spFieldImage, spSubFilter und spFieldImageOptions
SetAppearanceTextSpeichert den automatisch erzeugten sichtbaren Textblock, der beim Anfügen ins Felderscheinungsbild geschrieben wird
SetSignatureBoundsPlatziert das Feld an expliziten Koordinaten
SetPassthroughErzeugt eine Passthrough-Signatur mit exakt der angegebenen Länge für externes Signieren
SetDocTimeStampSchaltet die Signatur auf einen Dokumentzeitstempel um
SetDigestAlgorithmWählt den für die Signatur verwendeten Digest
SetContentsReserveBytes, SetContentsEstimateReserviert zusätzliche Bytes oder bemisst die Reservierung aus Schätzungen für Kette, CRL, OCSP und Zeitstempel plus Sicherheitszuschlag
SetRevocationInfoBettet vorab gesammelte Widerrufsdaten in DER-Form ein
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDeklariert Signierabsicht, Richtlinie und rechtliche Bescheinigung
SetDocMDPAktiviert eine Zertifizierungssignatur auf DocMDP-Stufe 1, 2 oder 3; muss vor SelectField aufgerufen werden
SetFieldLockSchreibt ein Feldsperren-Wörterbuch mit einer Aktion und einer Feldnamenliste
AppendToFile, AppendToStreamSchreibt die signierte Revision in eine neue Datei oder einen Stream
ApplySignatureWendet die Signatur auf das Dokument an Ort und Stelle an
GetByteRange, GetEstimatedContentsBytesLiest nach dem Bau der Revision den ByteRange-Eintrag und die geschätzte Inhaltsgröße zurück
SetInPlaceMarkiert die Revision als Update des geöffneten Dokuments an Ort und Stelle

Parameter

IsDocTimeStampTrue, wenn ein Dokumentzeitstempel erzeugt wird

Anmerkungen

Jede Open-Methode gibt TPDFlibSignerResult zurück

DocMDP-Stufen entsprechen dem ISO-32000-Transformations-P-Wert: 1 keine Änderungen, 2 Formularausfüllen, 3 Annotationen; bei Werten ungleich null wird das AcroForm-/SigFlags-Bit AppendOnly gesetzt, damit Viewer die Zertifizierung durchsetzen

Siehe auch

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP