TPDFlibPFXFile

Security and Signatures

Descrição

TPDFlibPFXFile guarda a identidade de assinatura usada para produzir uma assinatura destacada PKCS#7

A identidade pode vir de um arquivo PFX, de uma entrada de repositório de certificados do sistema Windows resolvida pelo nome de exibição simples dela, de um PCCERT_CONTEXT duplicado externamente, de um par de chaves Ed25519, de uma chave CNG ou de um callback de digest externo

Uma vez vinculada a identidade, o SignData produz os bytes da assinatura CMS e os helpers de estimativa dimensionam a reserva de /Contents antes de a assinatura ser gravada

A demo SigningWorkbench abre um PFX com essa classe antes de entregar a identidade ao pipeline de assinatura

Sintaxe

Delphi

TPDFlibPFXFile = Class
  Public
    Destructor Destroy; Override;
    Function Open(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
    Function OpenFromStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
    Function EnumerateStore(Const StoreName: WideString; UseMachineStore: Boolean;
      Var Infos: Array Of TPDFlibCertificateInfo): Integer;
    Function OpenFromContext(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;
    Function GetCertificateDER: AnsiString;
    Procedure SetPrivateKeyUI(AllowUI: Boolean);
    Procedure SetRSAPSSPadding(Enable: Boolean);
    Function CertificateKeyUsage: Integer;
    Function EstimateSignatureSize(Const Data, SubFilter: AnsiString;
      DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): Integer;
    Function EstimateCertificateChainSize: Integer;
    Function SignData(Const Data, SubFilter: AnsiString; DigestAlgorithm: TPDFlibDigestAlgorithm;
      Const CommitmentTypeDER, SignaturePolicyDER, RevocationInfoDER: AnsiString): AnsiString;
  End;

Métodos

OpenCarrega um arquivo PFX ou PKCS#12 com a senha dele; UseMachineKeyset seleciona o keyset da máquina
OpenFromStoreLocaliza um certificado em um repositório do sistema Windows pelo nome de exibição simples do Subject e vincula o contexto dele; o primeiro certificado que carregar uma chave privada utilizável vence
EnumerateStorePreenche o array fornecido por quem chama com um TPDFlibCertificateInfo por certificado do repositório e retorna a quantidade efetivamente preenchida
OpenFromContextVincula um PCCERT_CONTEXT obtido externamente; quem chama mantém a propriedade e precisa manter o contexto válido até a assinatura terminar
OpenEd25519, OpenEd25519FromFileVincula um certificado e um seed Ed25519 a partir da memória ou de arquivos
OpenCNGKey, OpenCNGKeyHandleVincula uma chave com suporte CNG por provedor e nome de chave, ou por um handle de chave existente
OpenExternalDigestSignerAssina por meio do callback TPDFlibExternalDigestSignEvent em vez de uma chave privada local
GetCertificateDERO certificado vinculado em forma DER
SetPrivateKeyUIPermite ou suprime o prompt de chave privada do CryptoAPI
SetRSAPSSPaddingSeleciona padding RSASSA-PSS para assinaturas RSA destacadas; chaves CryptoAPI legadas mantêm PKCS#1 v1.5
CertificateKeyUsageOs bits de key usage X.509 empacotados em dois bytes, ou -1 quando nenhum contexto está vinculado
EstimateSignatureSize, EstimateCertificateChainSizeLimites superiores para a saída CMS e a cadeia de certificados
SignDataProduz a assinatura CMS destacada dos dados com o sub-filtro e o algoritmo de digest selecionados

Observações

Todos os métodos open retornam TPDFlibSignerResult, então uma vinculação de identidade que falhe pode ser reportada com precisão

A facade chega às mesmas identidades por meio de SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity e SetSignProcessCNGKey

Veja também

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile