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
| Open | Carrega um arquivo PFX ou PKCS#12 com a senha dele; UseMachineKeyset seleciona o keyset da máquina |
|---|---|
| OpenFromStore | Localiza 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 |
| EnumerateStore | Preenche o array fornecido por quem chama com um TPDFlibCertificateInfo por certificado do repositório e retorna a quantidade efetivamente preenchida |
| OpenFromContext | Vincula um PCCERT_CONTEXT obtido externamente; quem chama mantém a propriedade e precisa manter o contexto válido até a assinatura terminar |
| OpenEd25519, OpenEd25519FromFile | Vincula um certificado e um seed Ed25519 a partir da memória ou de arquivos |
| OpenCNGKey, OpenCNGKeyHandle | Vincula uma chave com suporte CNG por provedor e nome de chave, ou por um handle de chave existente |
| OpenExternalDigestSigner | Assina por meio do callback TPDFlibExternalDigestSignEvent em vez de uma chave privada local |
| GetCertificateDER | O certificado vinculado em forma DER |
| SetPrivateKeyUI | Permite ou suprime o prompt de chave privada do CryptoAPI |
| SetRSAPSSPadding | Seleciona padding RSASSA-PSS para assinaturas RSA destacadas; chaves CryptoAPI legadas mantêm PKCS#1 v1.5 |
| CertificateKeyUsage | Os bits de key usage X.509 empacotados em dois bytes, ou -1 quando nenhum contexto está vinculado |
| EstimateSignatureSize, EstimateCertificateChainSize | Limites superiores para a saída CMS e a cadeia de certificados |
| SignData | Produz 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