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, OpenPDFStringAbre o documento a assinar a partir de um ficheiro, stream ou cadeia ANSI
OpenPFX, OpenCertStore, OpenCertContextVincula um ficheiro PFX, um certificado de arquivo do sistema pelo nome de apresentação, ou um contexto de certificado externo
OpenEd25519, OpenEd25519FromFileVincula um par de chaves Ed25519 a partir da memória ou de ficheiros
OpenCNGKey, OpenCNGKeyHandleVincula uma chave CNG por fornecedor 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 completamente qualificado e página
SetSignaturePropertyDefine um de spReason, spLocation, spContactInfo, spFieldImage, spSubFilter e spFieldImageOptions
SetAppearanceTextGuarda o bloco de texto visível autogerado escrito na aparência do campo no momento do acrescento
SetSignatureBoundsColoca o campo em coordenadas explícitas
SetPassthroughProduz uma assinatura passthrough de exatamente o comprimento indicado para assinatura externa
SetDocTimeStampConverte a assinatura num carimbo temporal de documento
SetDigestAlgorithmSeleciona o digest usado na assinatura
SetContentsReserveBytes, SetContentsEstimateReserva bytes extra ou dimensiona a reserva a partir de estimativas da cadeia, CRL, OCSP e carimbo temporal mais uma margem de segurança
SetRevocationInfoIncorpora dados de revogação recolhidos 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 ao nível DocMDP 1, 2 ou 3; tem de ser chamado antes do SelectField
SetFieldLockEscreve um dicionário de bloqueio de campo com uma ação e uma lista de nomes de campos
AppendToFile, AppendToStreamEscreve a revisão assinada num novo ficheiro ou stream
ApplySignatureAplica a assinatura ao documento no próprio ficheiro
GetByteRange, GetEstimatedContentsBytesRelê a entrada do ByteRange e o tamanho estimado dos conteúdos depois de a revisão estar construída
SetInPlaceMarca a revisão como uma atualização no próprio documento aberto

Parâmetros

IsDocTimeStampTrue 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