TPDFlibPFXFile

Security and Signatures

Descrição

TPDFlibPFXFile detém a identidade de assinatura usada para produzir uma assinatura destacada PKCS#7

A identidade pode vir de um ficheiro PFX, de uma entrada de arquivo de certificados do sistema Windows resolvida pelo nome de apresentação simples desta, de um PCCERT_CONTEXT duplicado do exterior, de um par de chaves Ed25519, de uma chave CNG ou de um callback de digest externo

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

A demo SigningWorkbench abre um PFX com esta 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 ficheiro PFX ou PKCS#12 com a palavra-passe; UseMachineKeyset seleciona o conjunto de chaves da máquina
OpenFromStoreLocaliza um certificado num arquivo do sistema Windows pelo nome de apresentação simples do Subject e vincula o contexto deste; ganha o primeiro certificado que traga uma chave privada utilizável
EnumerateStorePreenche o array fornecido por quem chama com um TPDFlibCertificateInfo por certificado do arquivo e devolve a quantidade efetivamente preenchida
OpenFromContextVincula um PCCERT_CONTEXT obtido do exterior; quem chama mantém a propriedade e tem de manter o contexto válido até a assinatura terminar
OpenEd25519, OpenEd25519FromFileVincula um certificado e uma semente Ed25519 a partir da memória ou de ficheiros
OpenCNGKey, OpenCNGKeyHandleVincula uma chave suportada por CNG por fornecedor e nome de chave, ou por um handle de chave existente
OpenExternalDigestSignerAssina através do callback TPDFlibExternalDigestSignEvent em vez de uma chave privada local
GetCertificateDERO certificado vinculado em forma DER
SetPrivateKeyUIPermite ou suprime o pedido de palavra-passe da chave privada do CryptoAPI
SetRSAPSSPaddingSeleciona padding RSASSA-PSS para assinaturas RSA destacadas; as 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 subfiltro e o algoritmo de digest selecionados

Observações

Todos os métodos open devolvem TPDFlibSignerResult, pelo que uma vinculação de identidade falhada pode ser comunicada com precisão

A fachada chega às mesmas identidades através de SetSignProcessPFXFromFile, SetSignProcessCertFromStore, SetSignProcessEd25519Identity e SetSignProcessCNGKey

Consulte também

TPDFlibSignerResult, TPDFlibCertificateInfo, TPDFlibSigner, TPDFlibSignDoc, NewSignProcessFromFile