TPDFlibSigner
Security and Signatures
Descrizione
TPDFlibSigner è il motore di firma autonomo che abbina una destinazione TPDFlibSignDoc a un'identità TPDFlibPFXFile e scrive la firma completata come una nuova revisione incrementale
Apri il PDF da un file, uno stream o una stringa, aggancia l'identità con uno dei metodi open, seleziona il campo di destinazione, configura la firma e concludi con AppendToFile, AppendToStream o ApplySignature
La classe copre l'intero set di funzionalità di firma: scelta del digest, riserva e stima del contenuto, informazioni di revoca, tipi di commitment, policy di firma, attestazioni legali, livelli di certificazione DocMDP, field lock, timestamp di documento e firme passthrough di lunghezza fissa
La facade espone la stessa pipeline tramite le funzioni SignProcess documentate; usa questa classe direttamente quando il workflow di firma deve essere incapsulato in un writer di revisioni personalizzato più ampio
Sintassi
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; Metodi
| OpenPDF, OpenPDFStream, OpenPDFString | Apre il documento da firmare da un file, uno stream o una stringa ANSI |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Aggancia un file PFX, un certificato dall'archivio di sistema per nome visualizzato o un contesto di certificato esterno |
| OpenEd25519, OpenEd25519FromFile | Aggancia una coppia di chiavi Ed25519 da memoria o da file |
| OpenCNGKey, OpenCNGKeyHandle | Aggancia una chiave CNG per provider e nome chiave, o per handle di chiave |
| OpenExternalDigestSigner | Delega la firma del digest a un callback esterno |
| SelectField | Sceglie il campo firma per nome completo e pagina |
| SetSignatureProperty | Imposta uno tra spReason, spLocation, spContactInfo, spFieldImage, spSubFilter e spFieldImageOptions |
| SetAppearanceText | Conserva il blocco di testo visibile autogenerato scritto nell'aspetto del campo al momento dell'append |
| SetSignatureBounds | Posiziona il campo a coordinate esplicite |
| SetPassthrough | Produce una firma passthrough di esattamente la lunghezza indicata per firma esterna |
| SetDocTimeStamp | Trasforma la firma in un timestamp di documento |
| SetDigestAlgorithm | Seleziona il digest usato per la firma |
| SetContentsReserveBytes, SetContentsEstimate | Riserva byte extra o dimensiona la riserva a partire dalle stime di catena, CRL, OCSP e timestamp più un margine di sicurezza |
| SetRevocationInfo | Incorpora dati di revoca raccolti in precedenza in forma DER |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | Dichiara l'intento di firma, la policy e l'attestazione legale |
| SetDocMDP | Attiva una firma di certificazione al livello DocMDP 1, 2 o 3; va chiamato prima di SelectField |
| SetFieldLock | Scrive un dizionario di field lock con un'azione e una lista di nomi di campo |
| AppendToFile, AppendToStream | Scrive la revisione firmata su un nuovo file o stream |
| ApplySignature | Applica la firma al documento in place |
| GetByteRange, GetEstimatedContentsBytes | Rilegge la voce del ByteRange e la dimensione stimata dei contenuti dopo che la revisione è stata costruita |
| SetInPlace | Contrassegna la revisione come un aggiornamento in place del documento aperto |
Parametri
| IsDocTimeStamp | True quando il signer sta producendo un timestamp di documento |
|---|
Note
Tutti i metodi open restituiscono TPDFlibSignerResult
I livelli DocMDP corrispondono al valore P di trasformazione di ISO 32000: 1 nessuna modifica, 2 compilazione di formulari, 3 annotazioni; quando è non zero viene impostato il bit AppendOnly di /SigFlags dell'AcroForm così i viewer fanno rispettare la certificazione
Vedere anche
TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP