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, OpenPDFStringApre il documento da firmare da un file, uno stream o una stringa ANSI
OpenPFX, OpenCertStore, OpenCertContextAggancia un file PFX, un certificato dall'archivio di sistema per nome visualizzato o un contesto di certificato esterno
OpenEd25519, OpenEd25519FromFileAggancia una coppia di chiavi Ed25519 da memoria o da file
OpenCNGKey, OpenCNGKeyHandleAggancia una chiave CNG per provider e nome chiave, o per handle di chiave
OpenExternalDigestSignerDelega la firma del digest a un callback esterno
SelectFieldSceglie il campo firma per nome completo e pagina
SetSignaturePropertyImposta uno tra spReason, spLocation, spContactInfo, spFieldImage, spSubFilter e spFieldImageOptions
SetAppearanceTextConserva il blocco di testo visibile autogenerato scritto nell'aspetto del campo al momento dell'append
SetSignatureBoundsPosiziona il campo a coordinate esplicite
SetPassthroughProduce una firma passthrough di esattamente la lunghezza indicata per firma esterna
SetDocTimeStampTrasforma la firma in un timestamp di documento
SetDigestAlgorithmSeleziona il digest usato per la firma
SetContentsReserveBytes, SetContentsEstimateRiserva byte extra o dimensiona la riserva a partire dalle stime di catena, CRL, OCSP e timestamp più un margine di sicurezza
SetRevocationInfoIncorpora dati di revoca raccolti in precedenza in forma DER
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDichiara l'intento di firma, la policy e l'attestazione legale
SetDocMDPAttiva una firma di certificazione al livello DocMDP 1, 2 o 3; va chiamato prima di SelectField
SetFieldLockScrive un dizionario di field lock con un'azione e una lista di nomi di campo
AppendToFile, AppendToStreamScrive la revisione firmata su un nuovo file o stream
ApplySignatureApplica la firma al documento in place
GetByteRange, GetEstimatedContentsBytesRilegge la voce del ByteRange e la dimensione stimata dei contenuti dopo che la revisione è stata costruita
SetInPlaceContrassegna la revisione come un aggiornamento in place del documento aperto

Parametri

IsDocTimeStampTrue 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