TPDFlibSigner
Security and Signatures
Descrição
TPDFlibSigner é o motor de assinatura autônomo que pareia um destino TPDFlibSignDoc com uma identidade TPDFlibPFXFile e grava a assinatura pronta como uma revisão incremental nova
Abra o PDF de um arquivo, stream ou string, vincule a identidade com um dos métodos open, selecione o campo de destino, configure a assinatura e finalize com AppendToFile, AppendToStream ou ApplySignature
A classe cobre o conjunto completo de recursos de assinatura: escolha de digest, reserva e estimativa de conteúdo, informações de revogação, tipos de compromisso, políticas de assinatura, atestações legais, níveis de certificação DocMDP, field locks, timestamps de documento e assinaturas passthrough de comprimento fixo
A facade expõe o mesmo pipeline por meio das funções SignProcess documentadas; use essa classe diretamente quando o fluxo de assinatura precisar estar embutido em um writer de revisões customizado maior
Sintaxe
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 o documento a assinar de um arquivo, stream ou string ANSI |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Vincula um arquivo PFX, um certificado de repositório do sistema pelo nome de exibição ou um contexto de certificado externo |
| OpenEd25519, OpenEd25519FromFile | Vincula um par de chaves Ed25519 da memória ou de arquivos |
| OpenCNGKey, OpenCNGKeyHandle | Vincula uma chave CNG por provedor e nome de chave, ou por handle de chave |
| OpenExternalDigestSigner | Delega a assinatura do digest a um callback externo |
| SelectField | Escolhe o campo de assinatura por nome totalmente qualificado e página |
| SetSignatureProperty | Define um de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter e spFieldImageOptions |
| SetAppearanceText | Guarda o bloco de texto visível gerado automaticamente e gravado na aparência do campo no momento do append |
| SetSignatureBounds | Posiciona o campo em coordenadas explícitas |
| SetPassthrough | Produz uma assinatura passthrough de exatamente o comprimento indicado para assinatura externa |
| SetDocTimeStamp | Muda a assinatura para um timestamp de documento |
| SetDigestAlgorithm | Seleciona o digest usado na assinatura |
| SetContentsReserveBytes, SetContentsEstimate | Reserva bytes extras ou dimensiona a reserva a partir de estimativas de cadeia, CRL, OCSP e timestamp mais uma margem de segurança |
| SetRevocationInfo | Embute dados de revogação coletados previamente em forma DER |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | Declara a intenção de assinatura, a política e a atestação legal |
| SetDocMDP | Ativa uma assinatura de certificação no nível DocMDP 1, 2 ou 3; precisa ser chamado antes de SelectField |
| SetFieldLock | Grava um dicionário de field lock com uma ação e uma lista de nomes de campos |
| AppendToFile, AppendToStream | Grava a revisão assinada em um novo arquivo ou stream |
| ApplySignature | Aplica a assinatura ao documento aberto no próprio arquivo |
| GetByteRange, GetEstimatedContentsBytes | Lê de volta a entrada do ByteRange e o tamanho estimado dos conteúdos depois que a revisão é construída |
| SetInPlace | Marca a revisão como uma atualização no próprio arquivo do documento aberto |
Parâmetros
| IsDocTimeStamp | True quando o signer está produzindo um timestamp de documento |
|---|
Observações
Todos os métodos open retornam TPDFlibSignerResult
Os níveis DocMDP mapeiam para o valor P de transformação da ISO 32000: 1 sem mudanças, 2 preenchimento de formulários, 3 anotações; quando não zero, o bit AppendOnly de /SigFlags do AcroForm é definido para que os viewers apliquem a certificação
Veja também
TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP