Função NCryptEncrypt (ncrypt.h)

A função NCryptEncrypt criptografa um bloco de dados.

Sintaxe

SECURITY_STATUS NCryptEncrypt(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in]           PBYTE             pbInput,
  [in]           DWORD             cbInput,
  [in, optional] VOID              *pPaddingInfo,
  [out]          PBYTE             pbOutput,
  [in]           DWORD             cbOutput,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Parâmetros

[in] hKey

O identificador da chave a ser usada para criptografar os dados.

[in] pbInput

O endereço de um buffer que contém os dados a serem criptografados. O parâmetro cbInput contém o tamanho dos dados a serem criptografados. Para obter mais informações, consulte Comentários.

[in] cbInput

O número de bytes no buffer pbInput a ser criptografado.

[in, optional] pPaddingInfo

Um ponteiro para uma estrutura que contém informações de preenchimento. O tipo real de estrutura a que esse parâmetro aponta depende do valor do parâmetro dwFlags . Esse parâmetro só é usado com chaves assimétricas e deve ser NULL caso contrário.

[out] pbOutput

O endereço de um buffer que receberá os dados criptografados produzidos por essa função. O parâmetro cbOutput contém o tamanho desse buffer. Para obter mais informações, consulte Comentários.

Se esse parâmetro for NULL, essa função calculará o tamanho necessário para os dados criptografados e retornará o tamanho no local apontado pelo parâmetro pcbResult .

[in] cbOutput

O tamanho, em bytes, do buffer pbOutput . Esse parâmetro será ignorado se o parâmetro pbOutput for NULL.

[out] pcbResult

Um ponteiro para uma variável DWORD que recebe o número de bytes copiados para o buffer pbOutput . Se pbOutput for NULL, isso receberá o tamanho, em bytes, necessário para o texto cifrado.

[in] dwFlags

Sinalizadores que modificam o comportamento da função. O conjunto permitido de sinalizadores depende do tipo de chave especificado pelo parâmetro hKey .

Se a chave for uma chave assimétrica, esse poderá ser um dos valores a seguir.

Valor Significado
NCRYPT_NO_PADDING_FLAG
Não use nenhum preenchimento. O parâmetro pPaddingInfo não é usado.

Se você especificar o NCRYPT_NO_PADDING_FLAG, a função NCryptEncrypt criptografará apenas os primeiros N bits, em que N é o comprimento da chave que foi passada como o parâmetro hKey . Todos os bits após os primeiros N bits são ignorados.

NCRYPT_PAD_OAEP_FLAG
Use o esquema OAEP (Preenchimento de Criptografia Assimétrica Ideal). O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_OAEP_PADDING_INFO .
NCRYPT_PAD_PKCS1_FLAG
Os dados serão adicionados com um número aleatório para arredondar o tamanho do bloco. O parâmetro pPaddingInfo não é usado.
NCRYPT_SILENT_FLAG
Solicita que o KSP (provedor de serviços de chave) não exiba nenhuma interface do usuário. Se o provedor precisar exibir a interface do usuário para operar, a chamada falhará e o KSP deverá definir o código de erro NTE_SILENT_CONTEXT como o último erro.

Retornar valor

Retorna um código status que indica o êxito ou a falha da função.

Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.

Código de retorno Descrição
ERROR_SUCCESS
A função foi bem-sucedida.
NTE_BAD_FLAGS
O parâmetro dwFlags contém um valor que não é válido.
NTE_BAD_KEY_STATE
A chave identificada pelo parâmetro hKey não foi finalizada ou está incompleta.
NTE_BUFFER_TOO_SMALL
O tamanho especificado pelo parâmetro cbOutput não é grande o suficiente para manter os dados criptografados.
NTE_INVALID_HANDLE
O parâmetro hKey não é válido.
NTE_INVALID_PARAMETER
Um ou mais dos parâmetros não são válidos.

Comentários

Os parâmetros pbInput e pbOutput podem apontar para o mesmo buffer. Nesse caso, essa função executará a criptografia em vigor. É possível que o tamanho dos dados criptografados seja maior do que o tamanho dos dados não criptografados, portanto, o buffer deve ser grande o suficiente para manter os dados criptografados.

Um serviço não deve chamar essa função de sua Função StartService. Se um serviço chamar essa função de sua função StartService, um deadlock poderá ocorrer e o serviço poderá parar de responder.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho ncrypt.h
Biblioteca Ncrypt.lib
DLL Ncrypt.dll