Compartilhar via


Função NCryptDecrypt (ncrypt.h)

A função NCryptDecrypt descriptografa um bloco de dados criptografados.

Sintaxe

SECURITY_STATUS NCryptDecrypt(
  [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 descriptografar os dados.

[in] pbInput

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

[in] cbInput

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

[in, optional] pPaddingInfo

Um ponteiro para uma estrutura que contém informações de preenchimento. O tipo real de estrutura para o qual 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 descriptografados 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 descriptografados 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 os dados descriptografados.

[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
Nenhum preenchimento foi usado quando os dados foram criptografados. O parâmetro pPaddingInfo não é usado.
NCRYPT_PAD_OAEP_FLAG
O esquema OAEP (Preenchimento de Criptografia Assimétrica Ideal) foi usado quando os dados foram criptografados. O parâmetro pPaddingInfo é um ponteiro para uma estrutura BCRYPT_OAEP_PADDING_INFO .
NCRYPT_PAD_PKCS1_FLAG
Os dados foram preenchidos com um número aleatório para arredondar o tamanho do bloco quando os dados foram criptografados. O parâmetro pPaddingInfo não é usado.
 

O valor a seguir pode ser usado para qualquer chave.

Valor Significado
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_BUFFER_TOO_SMALL
O tamanho especificado pelo parâmetro cbOutput não é grande o suficiente para manter os dados descriptografados.
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.
NTE_PERM
A chave identificada pelo parâmetro hKey não pode ser usada para descriptografia.

Comentários

Os parâmetros pbInput e pbOutput podem apontar para o mesmo buffer. Nesse caso, essa função executará a descriptografia em vigor.

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

Confira também

NCryptEncrypt