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
| Open | Carrega um ficheiro PFX ou PKCS#12 com a palavra-passe; UseMachineKeyset seleciona o conjunto de chaves da máquina |
|---|---|
| OpenFromStore | Localiza 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 |
| EnumerateStore | Preenche o array fornecido por quem chama com um TPDFlibCertificateInfo por certificado do arquivo e devolve a quantidade efetivamente preenchida |
| OpenFromContext | Vincula 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, OpenEd25519FromFile | Vincula um certificado e uma semente Ed25519 a partir da memória ou de ficheiros |
| OpenCNGKey, OpenCNGKeyHandle | Vincula uma chave suportada por CNG por fornecedor e nome de chave, ou por um handle de chave existente |
| OpenExternalDigestSigner | Assina através do callback TPDFlibExternalDigestSignEvent em vez de uma chave privada local |
| GetCertificateDER | O certificado vinculado em forma DER |
| SetPrivateKeyUI | Permite ou suprime o pedido de palavra-passe da chave privada do CryptoAPI |
| SetRSAPSSPadding | Seleciona padding RSASSA-PSS para assinaturas RSA destacadas; as 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 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