TPDFlibSigner
Security and Signatures
Descrição
TPDFlibSigner é o motor de assinatura autónomo que emparelha um destino TPDFlibSignDoc com uma identidade TPDFlibPFXFile e escreve a assinatura concluída como uma revisão incremental nova
Abra o PDF a partir de um ficheiro, stream ou cadeia, vincule a identidade com um dos métodos open, selecione o campo de destino, configure a assinatura e termine com AppendToFile, AppendToStream ou ApplySignature
A classe cobre todo o leque de funcionalidades de assinatura: escolha do digest, reserva e estimativa do conteúdo, informações de revogação, tipos de compromisso, políticas de assinatura, atestações legais, níveis de certificação DocMDP, bloqueios de campos, carimbos temporais de documento e assinaturas passthrough de comprimento fixo
A fachada expõe o mesmo pipeline através das funções SignProcess documentadas; use esta classe diretamente quando o fluxo de assinatura tiver de ficar incorporado num escritor de revisões personalizado 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 a partir de um ficheiro, stream ou cadeia ANSI |
|---|---|
| OpenPFX, OpenCertStore, OpenCertContext | Vincula um ficheiro PFX, um certificado de arquivo do sistema pelo nome de apresentação, ou um contexto de certificado externo |
| OpenEd25519, OpenEd25519FromFile | Vincula um par de chaves Ed25519 a partir da memória ou de ficheiros |
| OpenCNGKey, OpenCNGKeyHandle | Vincula uma chave CNG por fornecedor 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 completamente qualificado e página |
| SetSignatureProperty | Define um de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter e spFieldImageOptions |
| SetAppearanceText | Guarda o bloco de texto visível autogerado escrito na aparência do campo no momento do acrescento |
| SetSignatureBounds | Coloca o campo em coordenadas explícitas |
| SetPassthrough | Produz uma assinatura passthrough de exatamente o comprimento indicado para assinatura externa |
| SetDocTimeStamp | Converte a assinatura num carimbo temporal de documento |
| SetDigestAlgorithm | Seleciona o digest usado na assinatura |
| SetContentsReserveBytes, SetContentsEstimate | Reserva bytes extra ou dimensiona a reserva a partir de estimativas da cadeia, CRL, OCSP e carimbo temporal mais uma margem de segurança |
| SetRevocationInfo | Incorpora dados de revogação recolhidos 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 ao nível DocMDP 1, 2 ou 3; tem de ser chamado antes do SelectField |
| SetFieldLock | Escreve um dicionário de bloqueio de campo com uma ação e uma lista de nomes de campos |
| AppendToFile, AppendToStream | Escreve a revisão assinada num novo ficheiro ou stream |
| ApplySignature | Aplica a assinatura ao documento no próprio ficheiro |
| GetByteRange, GetEstimatedContentsBytes | Relê a entrada do ByteRange e o tamanho estimado dos conteúdos depois de a revisão estar construída |
| SetInPlace | Marca a revisão como uma atualização no próprio documento aberto |
Parâmetros
| IsDocTimeStamp | True quando o signer está a produzir um carimbo temporal de documento |
|---|
Observações
Todos os métodos open devolvem TPDFlibSignerResult
Os níveis DocMDP correspondem ao valor P de transformação da ISO 32000: 1 sem alterações, 2 preenchimento de formulários, 3 anotações; quando não zero, o bit AppendOnly de /SigFlags do AcroForm é colocado para que os visualizadores façam cumprir a certificação
Consulte também
TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP