PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC função de retorno de chamada (wincrypt.h)

A função de retorno de chamada PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC é chamada para descriptografar uma assinatura codificada e compará-la com um hash computado.

Sintaxe

PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC PfnCryptVerifyEncodedSignatureFunc;

BOOL PfnCryptVerifyEncodedSignatureFunc(
  [in]           DWORD dwCertEncodingType,
  [in]           PCERT_PUBLIC_KEY_INFO pPubKeyInfo,
  [in]           PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
  [in, optional] void *pvDecodedSignPara,
  [in]           LPCWSTR pwszCNGPubKeyAlgid,
  [in]           LPCWSTR pwszCNGHashAlgid,
  [in]           BYTE *pbComputedHash,
  [in]           DWORD cbComputedHash,
  [in]           BYTE *pbSignature,
  [in]           DWORD cbSignature
)
{...}

Parâmetros

[in] dwCertEncodingType

Especifica o tipo de codificação usado. É sempre aceitável especificar os tipos de codificação de certificado e mensagem combinando-os com uma operação OR bit a bit, conforme mostrado no exemplo a seguir:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING Tipos de codificação definidos atualmente são:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pPubKeyInfo

O endereço de uma estrutura CERT_PUBLIC_KEY_INFO que contém a chave pública a ser usada para verificar a assinatura. Você pode usar isso com CryptImportPublicKeyInfoEx2 para obter um BCRYPT_KEY_HANDLE.

[in] pSignatureAlgorithm

Um ponteiro para uma estrutura CRYPT_ALGORITHM_IDENTIFIER que contém o OID ( identificador de objeto de assinatura) e seus parâmetros codificados opcionais.

[in, optional] pvDecodedSignPara

Um ponteiro opcional para a estrutura de dados de parâmetros de assinatura decodificados retornados anteriormente pela função PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC .

[in] pwszCNGPubKeyAlgid

Uma cadeia de caracteres Unicode que contém o identificador de algoritmo de chave pública CNG (Cryptography API: Next Generation) que corresponde a pSignatureAlgorithm-pszObjId>.

[in] pwszCNGHashAlgid

Uma cadeia de caracteres Unicode que contém o identificador de algoritmo de hash CNG que corresponde a pSignatureAlgorithm-pszObjId> ou a um identificador de algoritmo de hash em pvDecodedSignPara.

[in] pbComputedHash

Um ponteiro para os bytes de hash computados retornados pela função BCryptFinishHash que corresponde a pwszCNGHashAlgid.

[in] cbComputedHash

Um valor que representa o comprimento, em bytes, do hash computado.

[in] pbSignature

Um ponteiro para os bytes de assinatura codificados.

[in] cbSignature

Um valor que representa o comprimento, em bytes, da assinatura codificada.

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero (TRUE).

Se a função falhar, ela retornará zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.

Se essa função de retorno de chamada não der suporte ao algoritmo de assinatura, ela deverá retornar FALSE e chamar SetLastError com ERROR_NOT_SUPPORTED.

Comentários

Você pode usar as funções de suporte do OID para implantar essa função de retorno de chamada. Wincrypt.h define a seguinte constante para essa finalidade.

Constante Definição
CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC "CryptDllVerifyEncodedSignature"

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincrypt.h