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, OpenPDFString | Otevře dokument k podepsání ze souboru, streamu nebo ANSI řetězce |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Sváže soubor PFX, certifikát systémového úložiště podle zobrazovaného názvu nebo externí kontext certifikátu |
| OpenEd25519, OpenEd25519FromFile | Sváže pár klíčů Ed25519 z paměti nebo souborů |
| OpenCNGKey, OpenCNGKeyHandle | Sváže klíč CNG podle providera a názvu klíče nebo podle handle klíče |
| OpenExternalDigestSigner | Předá podpis digestu externímu callbacku |
| SelectField | Vybere podpisové pole podle plně kvalifikovaného názvu a stránky |
| SetSignatureProperty | Nastaví jedno z spReason, spLocation, spContactInfo, spFieldImage, spSubFilter a spFieldImageOptions |
| SetAppearanceText | Uloží automaticky generovaný viditelný textový blok zapisovaný do vzhledu pole při připojování |
| SetSignatureBounds | Umístí pole na explicitní souřadnice |
| SetPassthrough | Vytvoří průchozí podpis přesně dané délky pro externí podepisování |
| SetDocTimeStamp | Přepne podpis na časové razítko dokumentu |
| SetDigestAlgorithm | Vybere digest použitý pro podpis |
| SetContentsReserveBytes, SetContentsEstimate | Rezervuje extra bajty nebo rozměří rezervaci z odhadů řetězce, CRL, OCSP a časového razítka plus bezpečnostní rezervu |
| SetRevocationInfo | Vloží předem posbíraná revokační data ve formě DER |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | Deklaruje záměr podepsání, politiku a právní atestaci |
| SetDocMDP | Zapne certifikující podpis na úrovni DocMDP 1, 2 nebo 3; volat před SelectField |
| SetFieldLock | Zapíše slovník uzamčení pole s akcí a seznamem názvů polí |
| AppendToFile, AppendToStream | Zapíše podepsanou revizi do nového souboru nebo streamu |
| ApplySignature | Aplikuje podpis na dokument otevřený na místě |
| GetByteRange, GetEstimatedContentsBytes | Přečte zpět položku ByteRange a odhadnutou velikost obsahu po postavení revize |
| SetInPlace | Označí revizi jako aktualizaci otevřeného dokumentu na místě |
Parametry
| IsDocTimeStamp | True, 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