SetSignProcessCNGKey
Segurança e assinaturas
Descrição
Anexa uma chave privada NCrypt nomeada e o certificado X.509 dela, codificado em DER, a um processo de assinatura PDF
A chave é aberta diretamente do key storage provider solicitado, habilitando identidades de assinatura com suporte a TPM, hardware token, cloud KSP e outras exclusivas de CNG sem exportar a chave privada
Sintaxe
Delphi
Function TPDFlib.SetSignProcessCNGKey(SignProcessID: Integer; Const CertificateDER: AnsiString; Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): Integer;
ActiveX
Function PDFlib::SetSignProcessCNGKey(SignProcessID As Long, CertificateDER As Variant, ProviderName As String, KeyName As String, UseMachineKey As Long, AllowUI As Long) As Long
DLL
int DLSetSignProcessCNGKey(int InstanceID, int SignProcessID, const char* CertificateDER, int CertificateLength, const wchar_t* ProviderName, const wchar_t* KeyName, int UseMachineKey, int AllowUI);
Parâmetros
| SignProcessID | Valor retornado por uma função NewSignProcessFrom* |
|---|---|
| CertificateDER | Certificado X.509 RSA ou ECDSA completo, codificado em DER, correspondente à chave privada |
| ProviderName | Nome do provedor de armazenamento de chaves do Windows, ou uma string vazia para Microsoft Software Key Storage Provider |
| KeyName | Nome de chave persistente reconhecido pelo provider |
| UseMachineKey | True ou valor diferente de zero para abrir a chave no escopo da máquina |
| AllowUI | True ou valor diferente de zero para permitir interfaces de usuário de PIN, consentimento ou aprovação em nuvem do provider |
Valores retornados
| 1 | A configuração de identidade foi anexada ao processo |
|---|---|
| 0 | O id do processo, o certificado ou o nome da chave era inválido |
Observações
A chave é aberta quando o sign process executa, e nenhum byte de chave privada entra na memória da biblioteca
Quando AllowUI é falso, NCRYPT_SILENT_FLAG é aplicado à abertura de chaves e à assinatura
A assinatura CMS gerada é verificada contra CertificateDER antes de ser aceita, então uma chave de mesmo algoritmo mas divergente é rejeitada
O ActiveX aceita uma variante de byte array, e a DLL usa um comprimento explícito de certificado, então bytes zero embutidos são retidos
Veja também
SetSignProcessCNGKeyFromFile, SetSignProcessCNGKeyByHandle, SetSignProcessPrivateKeyUI