TPDFlibSigner

Security and Signatures

Beskrivelse

TPDFlibSigner er den selvstændige signeringsmotor, der parer et TPDFlibSignDoc-mål med en TPDFlibPFXFile-identitet og skriver den færdige signatur som en ny inkrementel revision

Åbn PDF'en fra fil, stream eller streng, bind identiteten med en af open-metoderne, vælg målfeltet, konfigurer signaturen, og afslut med AppendToFile, AppendToStream eller ApplySignature

Klassen dækker hele signeringsfunktionssættet: digest-valg, indholdsreservation og -estimering, tilbagekaldsinformation, commitment-typer, signaturpolitikker, juridiske attester, DocMDP-certificeringsniveauer, feltlåse, dokumenttidsstempler og passthrough-signaturer af fast længde

Facaden eksponerer den samme pipeline via de dokumenterede SignProcess-funktioner; brug denne klasse direkte, når signeringsworkflowet skal indlejres i en større egen revisionsskriver

Syntaks

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Åbner dokumentet, der skal signeres, fra fil, stream eller ANSI-streng
OpenPFX, OpenCertStore, OpenCertContextBinder en PFX-fil, et systemlager-certifikat via visningsnavn eller en ekstern certifikatkontekst
OpenEd25519, OpenEd25519FromFileBinder et Ed25519-nøglepar fra hukommelsen eller filer
OpenCNGKey, OpenCNGKeyHandleBinder en CNG-nøgle via provider og nøglenavn eller via nøglehandle
OpenExternalDigestSignerDelegerer digest-signaturen til et eksternt callback
SelectFieldVælger signaturfeltet via fuldt kvalificeret navn og side
SetSignaturePropertySætter én af spReason, spLocation, spContactInfo, spFieldImage, spSubFilter og spFieldImageOptions
SetAppearanceTextGemmer den automatisk genererede synlige tekstblok, der skrives i feltudseendet ved append-tid
SetSignatureBoundsPlacerer feltet ved eksplicitte koordinater
SetPassthroughProducerer en passthrough-signatur med præcis den givne længde til ekstern signering
SetDocTimeStampSkifter signaturen til et dokumenttidsstempel
SetDigestAlgorithmVælger den digest, der bruges til signaturen
SetContentsReserveBytes, SetContentsEstimateReserverer ekstra bytes eller dimensionerer reservationen ud fra kæde-, CRL-, OCSP- og tidsstempel-estimater plus en sikkerhedsmargen
SetRevocationInfoIndlejrer forud indsamlede tilbagekaldsdata i DER-form
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationErklærer signeringshensigten, politikken og den juridiske attestation
SetDocMDPAktiverer en certificeringssignatur på DocMDP-niveau 1, 2 eller 3; skal kaldes før SelectField
SetFieldLockSkriver en feltlåsningsordbog med en handling og en feltnavneliste
AppendToFile, AppendToStreamSkriver den signerede revision til en ny fil eller stream
ApplySignatureAnvender signaturen på dokumentet på stedet
GetByteRange, GetEstimatedContentsBytesLæser ByteRange-indgangen og den estimerede indholdsstørrelse tilbage, efter revisionen er bygget
SetInPlaceMarkerer revisionen som en opdatering på stedet af det åbne dokument

Parametre

IsDocTimeStampTrue, når signeringsmotoren producerer et dokumenttidsstempel

Bemærkninger

Enhver open-metode returnerer TPDFlibSignerResult

DocMDP-niveauer svarer til ISO 32000's transformations-P-værdi: 1 ingen ændringer, 2 formularudfyldning, 3 annotationer; ved værdier forskellige fra nul sættes AcroForm /SigFlags-bitten AppendOnly, så viewers håndhæver certificeringen

Se også

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP