TPDFlibSigner

Security and Signatures

Beskrivning

TPDFlibSigner är den fristående signeringsmotorn som parar ett TPDFlibSignDoc-mål med en TPDFlibPFXFile-identitet och skriver den färdiga signaturen som en ny inkrementell revision

Öppna PDF:en från fil, stream eller sträng, bind identiteten med en av open-metoderna, välj målfältet, konfigurera signaturen och avsluta med AppendToFile, AppendToStream eller ApplySignature

Klassen täcker hela signeringsfunktionsuppsättningen: digestval, innehållsreservering och uppskattning, återkallningsinfo, commitment-typer, signaturpolicyer, juridiska intyganden, DocMDP-certifieringsnivåer, fältlåsningar, dokumenttidstämplar och passthrough-signaturer med fast längd

Fasaden exponerar samma pipeline via de dokumenterade SignProcess-funktionerna; använd den här klassen direkt när signeringsarbetsflödet måste bäddas in i en större egen revisionsskrivare

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;

Metoder

OpenPDF, OpenPDFStream, OpenPDFStringÖppnar dokumentet som ska signeras från fil, stream eller ANSI-sträng
OpenPFX, OpenCertStore, OpenCertContextBinder en PFX-fil, ett systemarkivcertifikat via visningsnamn, eller en extern certifikatkontext
OpenEd25519, OpenEd25519FromFileBinder ett Ed25519-nyckelpar från minnet eller filer
OpenCNGKey, OpenCNGKeyHandleBinder en CNG-nyckel via provider och nyckelnamn, eller via ett nyckelhandle
OpenExternalDigestSignerDelegerar digestsignaturen till en extern callback
SelectFieldVäljer signaturfältet via fullt kvalificerat namn och sida
SetSignaturePropertySätter en av spReason, spLocation, spContactInfo, spFieldImage, spSubFilter och spFieldImageOptions
SetAppearanceTextLagrar det automatiskt genererade synliga textblocket som skrivs i fältutseendet vid tilläggstillfället
SetSignatureBoundsPlacerar fältet vid explicita koordinater
SetPassthroughProducerar en passthrough-signatur med exakt den givna längden för extern signering
SetDocTimeStampVäxlar signaturen till en dokumenttidsstämpel
SetDigestAlgorithmVäljer den digest som används för signaturen
SetContentsReserveBytes, SetContentsEstimateReserverar extra byte eller dimensionerar reserveringen utifrån uppskattningar för kedja, CRL, OCSP och tidsstämpel plus en säkerhetsmarginal
SetRevocationInfoBäddar in förinsamlade återkallningsdata i DER-form
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDeklarerar signeringsavsikten, policyn och det juridiska intyget
SetDocMDPAktiverar en certifierande signatur på DocMDP-nivå 1, 2 eller 3; måste anropas före SelectField
SetFieldLockSkriver en fältlåsningsordbok med en åtgärd och en fältnamnlista
AppendToFile, AppendToStreamSkriver den signerade revisionen till en ny fil eller stream
ApplySignatureTillämpar signaturen på dokumentet på plats
GetByteRange, GetEstimatedContentsBytesLäser tillbaka ByteRange-posten och den uppskattade innehållsstorleken efter att revisionen byggts
SetInPlaceMarkerar revisionen som en uppdatering på plats av det öppna dokumentet

Parametrar

IsDocTimeStampTrue när signeraren producerar en dokumenttidsstämpel

Anmärkningar

Varje open-metod returnerar TPDFlibSignerResult

DocMDP-nivåer mappas på ISO 32000:s transformations-P-värde: 1 inga ändringar, 2 ifyllandet av formulär, 3 annoteringar; när värdet är skilt från noll sätts AcroForm /SigFlags-biten AppendOnly så att visare driver genom certifieringen

Se även

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP