Função CryptMsgVerifyCountersignatureEncodedEx (wincrypt.h)
A função CryptMsgVerifyCountersignatureEncodedEx verifica se o parâmetro pbSignerInfoCounterSignature contém o hash criptografado do campo encryptedDigest da estrutura de parâmetros pbSignerInfo . O signatário pode ser uma estrutura CERT_PUBLIC_KEY_INFO , um contexto de certificado ou um contexto de cadeia.
Sintaxe
BOOL CryptMsgVerifyCountersignatureEncodedEx(
[in, optional] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwEncodingType,
[in] PBYTE pbSignerInfo,
[in] DWORD cbSignerInfo,
[in] PBYTE pbSignerInfoCountersignature,
[in] DWORD cbSignerInfoCountersignature,
[in] DWORD dwSignerType,
[in] void *pvSigner,
DWORD dwFlags,
void *pvExtra
);
Parâmetros
[in, optional] hCryptProv
Esse parâmetro não é usado e deve ser definido como NULL.
Windows Server 2003 e Windows XP: NULL ou o identificador do provedor criptográfico a ser usado para hash do campo encryptedDigest de pbSignerInfo. O tipo de dados desse parâmetro é HCRYPTPROV.
A menos que haja um motivo forte para passar um provedor criptográfico específico no hCryptProv, passe NULL para fazer com que o provedor RSA ou DSS padrão seja usado.
[in] dwEncodingType
O tipo de codificação usado. Atualmente, apenas X509_ASN_ENCODING e PKCS_7_ASN_ENCODING estão sendo usados; no entanto, tipos de codificação adicionais podem ser adicionados no futuro. Para qualquer tipo de codificação atual, use:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.
[in] pbSignerInfo
Um ponteiro para o BLOB codificado que contém o signatário do conteúdo de uma mensagem a ser contratribuída.
[in] cbSignerInfo
A contagem, em bytes, do BLOB codificado para o signatário do conteúdo.
[in] pbSignerInfoCountersignature
Um ponteiro para o BLOB codificado que contém as informações do contra-atribuídor.
[in] cbSignerInfoCountersignature
A contagem, em bytes, do BLOB codificado para o contra-atribuídor da mensagem.
[in] dwSignerType
A estrutura que contém as informações do signatário. A tabela a seguir mostra os valores predefinidos e as estruturas indicadas.
Valor | Significado |
---|---|
|
pvSigner é um ponteiro para uma estrutura de CERT_PUBLIC_KEY_INFO . |
|
pvSigner é um ponteiro para uma estrutura CERT_CONTEXT . |
|
pvSigner é um ponteiro para uma estrutura de CERT_CHAIN_CONTEXT . |
[in] pvSigner
Um ponteiro para uma estrutura CERT_PUBLIC_KEY_INFO , um contexto de certificado ou um contexto de cadeia, dependendo do valor de dwSignerType.
dwFlags
Sinalizadores que modificam o comportamento da função. Isso pode ser zero ou o valor a seguir.
Valor | Significado |
---|---|
|
Executa uma assinatura forte marcar após a verificação bem-sucedida da assinatura. Defina o parâmetro pvExtra para apontar para uma estrutura CERT_STRONG_SIGN_PARA que contém os parâmetros necessários para marcar a força da assinatura..
Windows 8 e Windows Server 2012: o suporte para esse sinalizador começa. |
pvExtra
Se você definir o parâmetro dwFlags como CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG, defina esse parâmetro (pvExtra) para apontar para uma estrutura CERT_STRONG_SIGN_PARA que contém os parâmetros usados para marcar a força da assinatura.
Retornar valor
Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).
Se a função falhar, o valor retornado será zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.
Os códigos de erro a seguir são mais comumente retornados pela função GetLastError .
Código de retorno | Descrição |
---|---|
|
A mensagem não contém um atributo autenticado esperado. |
|
O valor de hash não está correto. |
|
A mensagem não é codificada conforme o esperado. |
|
O algoritmo criptográfico é desconhecido. |
|
Um ou mais argumentos não são válidos. |
|
Ficou sem memória. |
Erros propagados das funções a seguir podem ser retornados.
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação de ASN.1 (Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Codificação/Decodificação de Valores Retornados do ASN.1.Comentários
A verificação do contra-sinal é feita usando a estrutura PKCS #7 SIGNERINFO . A assinatura deve conter o hash criptografado do campo encryptedDigest de pbSignerInfo.
O emissor e o número de série do contra-atribuídor devem corresponder às informações do contra-atribuídor de pbSignerInfoCountersignature. Os únicos campos referenciados de pciCountersigner são SerialNumber, Issuer e SubjectPublicKeyInfo. O SubjectPublicKeyInfo é usado para acessar a chave pública usada para criptografar o hash do pciCountersigner para compará-lo com o hash do pbSignerInfo.
Exemplos
Para obter um exemplo que usa essa função, consulte Exemplo de Programa C: Codificação e Decodificação de uma Mensagem ContraInsignada.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Crypt32.lib |
DLL | Crypt32.dll |