TPDFlibSigner

Security and Signatures

Beschrijving

TPDFlibSigner is de zelfstandige ondertekeningsengine die een TPDFlibSignDoc-doel koppelt aan een TPDFlibPFXFile-identiteit en de voltooide handtekening wegschrijft als een nieuwe incrementele revisie

Open de PDF vanuit bestand, stream of tekenreeks, bind de identiteit met een van de open-methoden, kies het doelveld, stel de handtekening in en rond af met AppendToFile, AppendToStream of ApplySignature

De klasse dekt het volledige ondertekenpakket: digestkeuze, inhoudsreservering en -schatting, intrekkingsinfo, commitment-typen, handtekeningsbeleid, juridische attestaties, DocMDP-certificeringsniveaus, veldvergrendelingen, documenttijdstempels en passthrough-handtekeningen van vaste lengte

De façade stelt dezelfde pijplijn beschikbaar via de gedocumenteerde SignProcess-functies; gebruik deze klasse direct wanneer de ondertekenworkflow in een grotere eigen revisieschrijver moet worden ingebed

Syntaxis

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, OpenPDFStringOpent het te ondertekenen document vanuit bestand, stream of ANSI-tekenreeks
OpenPFX, OpenCertStore, OpenCertContextBindt een PFX-bestand, een systeemstore-certificaat op weergavenaam, of een externe certificaatcontext
OpenEd25519, OpenEd25519FromFileBindt een Ed25519-sleutelpaar uit geheugen of bestanden
OpenCNGKey, OpenCNGKeyHandleBindt een CNG-sleutel op provider en sleutelnaam, of op sleutelhandle
OpenExternalDigestSignerDelegeert de digest-handtekening aan een externe callback
SelectFieldKiest het handtekeningveld op volledig gekwalificeerde naam en pagina
SetSignaturePropertyZet een van spReason, spLocation, spContactInfo, spFieldImage, spSubFilter en spFieldImageOptions
SetAppearanceTextBewaart het automatisch gegenereerde zichtbare tekstblok dat bij het toevoegen in het velduiterlijk wordt weggeschreven
SetSignatureBoundsPlaatst het veld op expliciete coördinaten
SetPassthroughMaakt een passthrough-handtekening van precies de opgegeven lengte voor extern ondertekenen
SetDocTimeStampSchakelt de handtekening over op een documenttijdstempel
SetDigestAlgorithmKiest de digest die voor de handtekening wordt gebruikt
SetContentsReserveBytes, SetContentsEstimateReserveert extra bytes of stelt de reservering in op basis van schattingen voor keten, CRL, OCSP en tijdstempel plus een veiligheidsmarge
SetRevocationInfoEmbedt vooraf verzamelde intrekkingsgegevens in DER-vorm
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDeclareert de ondertekeningsintentie, het beleid en de juridische attestatie
SetDocMDPActiveert een certificerende handtekening op DocMDP-niveau 1, 2 of 3; moet vóór SelectField worden aangeroepen
SetFieldLockSchrijft een veldvergrendelingswoordenboek met een actie en een lijst met veldnamen
AppendToFile, AppendToStreamSchrijft de ondertekende revisie naar een nieuw bestand of stream
ApplySignaturePast de handtekening toe op het document ter plekke
GetByteRange, GetEstimatedContentsBytesLeest na het bouwen van de revisie het ByteRange-item en de geschatte inhoudsgrootte terug
SetInPlaceMarkeert de revisie als een update ter plekke van het geopende document

Parameters

IsDocTimeStampTrue wanneer de ondertekenaar een documenttijdstempel maakt

Opmerkingen

Elke open-methode geeft TPDFlibSignerResult terug

DocMDP-niveaus verwijzen naar de ISO 32000-transformatie-P-waarde: 1 geen wijzigingen, 2 formulieren invullen, 3 annotaties; bij een waarde ongelijk aan nul wordt de AcroForm /SigFlags-bit AppendOnly gezet zodat viewers de certificering afdwingen

Zie ook

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP