TPDFlibSigner

Security and Signatures

Popis

TPDFlibSigner je samostatný podepisovací stroj, který spáruje cíl TPDFlibSignDoc s identitou TPDFlibPFXFile a zapíše hotový podpis jako novou přírůstkovou revizi

Otevřete PDF ze souboru, streamu nebo řetězce, svažte identitu jednou z otevíracích metod, vyberte cílové pole, nakonfigurujte podpis a dokončete přes AppendToFile, AppendToStream nebo ApplySignature

Třída pokrývá celou sadu podepisovacích funkcí: volbu digestu, rezervaci a odhad obsahu, revokační informace, typy závazků, politiky podpisu, právní atestace, certifikované úrovně DocMDP, uzamčení polí, časová razítka dokumentu a průchozí podpisy pevné délky

Fasada vystavuje stejný pipeline přes zdokumentované funkce SignProcess; tuto třídu použijte přímo, když má být podepisovací workflow včleněno do většího vlastního zapisovače revizí

Syntaxe

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, OpenPDFStringOtevře dokument k podepsání ze souboru, streamu nebo ANSI řetězce
OpenPFX, OpenCertStore, OpenCertContextSváže soubor PFX, certifikát systémového úložiště podle zobrazovaného názvu nebo externí kontext certifikátu
OpenEd25519, OpenEd25519FromFileSváže pár klíčů Ed25519 z paměti nebo souborů
OpenCNGKey, OpenCNGKeyHandleSváže klíč CNG podle providera a názvu klíče nebo podle handle klíče
OpenExternalDigestSignerPředá podpis digestu externímu callbacku
SelectFieldVybere podpisové pole podle plně kvalifikovaného názvu a stránky
SetSignaturePropertyNastaví jedno z spReason, spLocation, spContactInfo, spFieldImage, spSubFilter a spFieldImageOptions
SetAppearanceTextUloží automaticky generovaný viditelný textový blok zapisovaný do vzhledu pole při připojování
SetSignatureBoundsUmístí pole na explicitní souřadnice
SetPassthroughVytvoří průchozí podpis přesně dané délky pro externí podepisování
SetDocTimeStampPřepne podpis na časové razítko dokumentu
SetDigestAlgorithmVybere digest použitý pro podpis
SetContentsReserveBytes, SetContentsEstimateRezervuje extra bajty nebo rozměří rezervaci z odhadů řetězce, CRL, OCSP a časového razítka plus bezpečnostní rezervu
SetRevocationInfoVloží předem posbíraná revokační data ve formě DER
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDeklaruje záměr podepsání, politiku a právní atestaci
SetDocMDPZapne certifikující podpis na úrovni DocMDP 1, 2 nebo 3; volat před SelectField
SetFieldLockZapíše slovník uzamčení pole s akcí a seznamem názvů polí
AppendToFile, AppendToStreamZapíše podepsanou revizi do nového souboru nebo streamu
ApplySignatureAplikuje podpis na dokument otevřený na místě
GetByteRange, GetEstimatedContentsBytesPřečte zpět položku ByteRange a odhadnutou velikost obsahu po postavení revize
SetInPlaceOznačí revizi jako aktualizaci otevřeného dokumentu na místě

Parametry

IsDocTimeStampTrue, když podepisovač vyrábí časové razítko dokumentu

Poznámky

Každá otevírací metoda vrací TPDFlibSignerResult

Úrovně DocMDP se mapují na hodnotu P transformace z ISO 32000: 1 žádné změny, 2 vyplňování formulářů, 3 anotace; když je nenulová, v AcroForm se nastaví bit AppendOnly v /SigFlags, aby prohlížeče certifikaci vymáhaly

Viz také

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP