Função CryptXmlSign (cryptxml.h)

A função CryptXmlSign cria uma assinatura criptográfica de um elemento SignedInfo .

Sintaxe

HRESULT CryptXmlSign(
  [in]           HCRYPTXML                       hSignature,
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
                 DWORD                           dwKeySpec,
                 DWORD                           dwFlags,
                 CRYPT_XML_KEYINFO_SPEC          dwKeyInfoSpec,
  [in, optional] const void                      *pvKeyInfoSpec,
  [in]           const CRYPT_XML_ALGORITHM       *pSignatureMethod,
  [in]           const CRYPT_XML_ALGORITHM       *pCanonicalization
);

Parâmetros

[in] hSignature

O identificador para uma estrutura CRYPT_XML_SIGNATURE .

[in, optional] hKey

O identificador de uma chave privada usada para assinar o elemento SignedInfo . Esse parâmetro deve ser NULL para algoritmos de assinatura baseados em HMAC.

dwKeySpec

Um valor DWORD que especifica o tipo de chave. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
AT_KEYEXCHANGE
1
O par de chaves é um par de troca de chaves.
AT_SIGNATURE
2
O par de chaves é um par de assinaturas.
CERT_NCRYPT_KEY_SPEC
0xFFFFFFFF
A chave é uma chave CNG (Cryptography API: Next Generation).

dwFlags

Um valor DWORD que controla como os dados são assinados. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
Preencha o elemento KeyValue do identificador especificado no parâmetro hKey .
Importante O sinalizador CRYPT_XML_SIGN_ADD_KEYVALUE não pode ser usado quando o parâmetro dwKeyInfoSpec está definido como CRYPT_XML_KEYINFO_SPEC_ENCODED.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
Somente implementações padrão para a assinatura e o resumo são usadas. Quando esse sinalizador é definido, nenhuma outra extensão registrada é carregada.

dwKeyInfoSpec

O tipo de estrutura de dados apontado pelo parâmetro pvKeyInfoSpec . Aqui estão algumas combinações possíveis.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE Está definido como NULL
CRYPT_XML_KEYINFO_SPEC_ENCODED Aponta para uma estrutura de CRYPT_XML_BLOB
CRYPT_XML_KEYINFO_SPEC_PARAM Aponta para uma estrutura de CRYPT_XML_KEYINFO_PARAM

[in, optional] pvKeyInfoSpec

Um ponteiro para uma estrutura, cujo tipo é determinado pelo valor do parâmetro dwKeyInfoSpec .

[in] pSignatureMethod

Um ponteiro para uma estrutura CRYPT_XML_ALGORITHM que especifica o método de assinatura.

[in] pCanonicalization

Um ponteiro para uma estrutura CRYPT_XML_ALGORITHM que especifica o método de canonicalização.

Valor retornado

Se a função for bem-sucedida, a função retornará zero.

Se a função falhar, ela retornará um valor HRESULT que indica o erro.

Comentários

Se um certificado não puder ser encontrado, CryptXmlSign criará uma interface do usuário para seleção de certificado. Se essa janela for gerada a partir de um processo em execução na sessão 0, o aplicativo poderá terminar inesperadamente.

Requisitos

   
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho cryptxml.h
Biblioteca Cryptxml.lib
DLL Cryptxml.dll