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

SignProcessIDValor retornado por uma função NewSignProcessFrom*
CertificateDERCertificado X.509 RSA ou ECDSA completo, codificado em DER, correspondente à chave privada
ProviderNameNome do provedor de armazenamento de chaves do Windows, ou uma string vazia para Microsoft Software Key Storage Provider
KeyNameNome de chave persistente reconhecido pelo provider
UseMachineKeyTrue ou valor diferente de zero para abrir a chave no escopo da máquina
AllowUITrue ou valor diferente de zero para permitir interfaces de usuário de PIN, consentimento ou aprovação em nuvem do provider

Valores retornados

1A configuração de identidade foi anexada ao processo
0O 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