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, OpenPDFStringAbre o documento a assinar de um arquivo, stream ou string ANSI
OpenPFX, OpenCertStore, OpenCertContextVincula um arquivo PFX, um certificado de repositório do sistema pelo nome de exibição ou um contexto de certificado externo
OpenEd25519, OpenEd25519FromFileVincula um par de chaves Ed25519 da memória ou de arquivos
OpenCNGKey, OpenCNGKeyHandleVincula uma chave CNG por provedor e nome de chave, ou por handle de chave
OpenExternalDigestSignerDelega a assinatura do digest a um callback externo
SelectFieldEscolhe o campo de assinatura por nome totalmente qualificado e página
SetSignaturePropertyDefine um de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter e spFieldImageOptions
SetAppearanceTextGuarda o bloco de texto visível gerado automaticamente e gravado na aparência do campo no momento do append
SetSignatureBoundsPosiciona o campo em coordenadas explícitas
SetPassthroughProduz uma assinatura passthrough de exatamente o comprimento indicado para assinatura externa
SetDocTimeStampMuda a assinatura para um timestamp de documento
SetDigestAlgorithmSeleciona o digest usado na assinatura
SetContentsReserveBytes, SetContentsEstimateReserva bytes extras ou dimensiona a reserva a partir de estimativas de cadeia, CRL, OCSP e timestamp mais uma margem de segurança
SetRevocationInfoEmbute dados de revogação coletados previamente em forma DER
SetCommitmentType, SetSignaturePolicy, SetLegalAttestationDeclara a intenção de assinatura, a política e a atestação legal
SetDocMDPAtiva uma assinatura de certificação no nível DocMDP 1, 2 ou 3; precisa ser chamado antes de SelectField
SetFieldLockGrava um dicionário de field lock com uma ação e uma lista de nomes de campos
AppendToFile, AppendToStreamGrava a revisão assinada em um novo arquivo ou stream
ApplySignatureAplica a assinatura ao documento aberto no próprio arquivo
GetByteRange, GetEstimatedContentsBytesLê de volta a entrada do ByteRange e o tamanho estimado dos conteúdos depois que a revisão é construída
SetInPlaceMarca a revisão como uma atualização no próprio arquivo do documento aberto

Parâmetros

IsDocTimeStampTrue 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