TPDFlibSigner
Security and Signatures
Descripción
TPDFlibSigner es el motor de firma independiente que empareja un destino TPDFlibSignDoc con una identidad TPDFlibPFXFile y escribe la firma terminada como una revisión incremental nueva
Abre el PDF desde un archivo, un stream o una cadena, vincula la identidad con uno de los métodos open, selecciona el campo de destino, configura la firma y termina con AppendToFile, AppendToStream o ApplySignature
La clase cubre todo el conjunto de funciones de firma: elección de digest, reserva y estimación de contenido, información de revocación, tipos de compromiso, políticas de firma, atestaciones legales, niveles de certificación DocMDP, bloqueos de campos, sellos de tiempo de documento y firmas passthrough de longitud fija
La fachada expone el mismo pipeline mediante las funciones SignProcess documentadas; usa esta clase directamente cuando el flujo de firma deba integrarse en un escritor de revisiones personalizado mayor
Sintaxis
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; Métodos
| OpenPDF, OpenPDFStream, OpenPDFString | Abre el documento que se va a firmar desde un archivo, un stream o una cadena ANSI |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Vincula un archivo PFX, un certificado de almacén del sistema por nombre de visualización o un contexto de certificado externo |
| OpenEd25519, OpenEd25519FromFile | Vincula un par de claves Ed25519 desde memoria o desde archivos |
| OpenCNGKey, OpenCNGKeyHandle | Vincula una clave CNG por proveedor y nombre de clave, o por handle de clave |
| OpenExternalDigestSigner | Delega la firma del digest en un callback externo |
| SelectField | Elige el campo de firma por nombre completo y página |
| SetSignatureProperty | Establece uno de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter y spFieldImageOptions |
| SetAppearanceText | Guarda el bloque de texto visible autogenerado que se escribe en la apariencia del campo al añadir la revisión |
| SetSignatureBounds | Coloca el campo en coordenadas explícitas |
| SetPassthrough | Produce una firma passthrough de exactamente la longitud indicada para firma externa |
| SetDocTimeStamp | Convierte la firma en un sello de tiempo de documento |
| SetDigestAlgorithm | Selecciona el digest usado para la firma |
| SetContentsReserveBytes, SetContentsEstimate | Reserva bytes adicionales o dimensiona la reserva a partir de estimaciones de la cadena, CRL, OCSP y sello de tiempo más un margen de seguridad |
| SetRevocationInfo | Incrusta datos de revocación recogidos previamente en forma DER |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | Declara la intención de firma, la política y la atestación legal |
| SetDocMDP | Activa una firma de certificación en el nivel DocMDP 1, 2 o 3; hay que llamarla antes de SelectField |
| SetFieldLock | Escribe un diccionario de bloqueo de campo con una acción y una lista de nombres de campos |
| AppendToFile, AppendToStream | Escribe la revisión firmada en un archivo o stream nuevo |
| ApplySignature | Aplica la firma al documento in situ |
| GetByteRange, GetEstimatedContentsBytes | Lee la entrada del ByteRange y el tamaño estimado de los contenidos una vez construida la revisión |
| SetInPlace | Marca la revisión como una actualización in situ del documento abierto |
Parámetros
| IsDocTimeStamp | True cuando el firmante está produciendo un sello de tiempo de documento |
|---|
Observaciones
Todos los métodos open devuelven TPDFlibSignerResult
Los niveles DocMDP se corresponden con el valor P de transformación de ISO 32000: 1 sin cambios, 2 rellenado de formularios, 3 anotaciones; cuando no es cero se activa el bit AppendOnly de /SigFlags del AcroForm para que los visores hagan cumplir la certificación
Véase también
TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP