Función CryptXmlSign (cryptxml.h)

La función CryptXmlSign crea una firma criptográfica de un elemento SignedInfo .

Sintaxis

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

Identificador de una estructura CRYPT_XML_SIGNATURE .

[in, optional] hKey

Identificador de una clave privada utilizada para firmar el elemento SignedInfo . Este parámetro debe ser NULL para los algoritmos de firma basados en HMAC.

dwKeySpec

Valor DWORD que especifica el tipo de clave. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
AT_KEYEXCHANGE
1
El par de claves es un par de intercambio de claves.
AT_SIGNATURE
2
El par de claves es un par de firmas.
CERT_NCRYPT_KEY_SPEC
0xffffffff
La clave es una clave cryptography API: Next Generation (CNG).

dwFlags

Valor DWORD que controla cómo se firman los datos. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
Rellene el elemento KeyValue del identificador especificado en el parámetro hKey .
Importante No se puede usar la marca CRYPT_XML_SIGN_ADD_KEYVALUE cuando el parámetro dwKeyInfoSpec está establecido en CRYPT_XML_KEYINFO_SPEC_ENCODED.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
Solo se usan implementaciones predeterminadas para la firma y el resumen. Cuando se establece esta marca, no se cargan otras extensiones registradas.

dwKeyInfoSpec

Tipo de estructura de datos a la que apunta el parámetro pvKeyInfoSpec . Estas son algunas combinaciones posibles.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE Se establece en NULL.
CRYPT_XML_KEYINFO_SPEC_ENCODED Apunta a una estructura de CRYPT_XML_BLOB
CRYPT_XML_KEYINFO_SPEC_PARAM Apunta a una estructura de CRYPT_XML_KEYINFO_PARAM

[in, optional] pvKeyInfoSpec

Puntero a una estructura, cuyo tipo viene determinado por el valor del parámetro dwKeyInfoSpec .

[in] pSignatureMethod

Puntero a una estructura de CRYPT_XML_ALGORITHM que especifica el método de firma.

[in] pCanonicalization

Puntero a una estructura CRYPT_XML_ALGORITHM que especifica el método de canonización.

Valor devuelto

Si la función se realiza correctamente, la función devuelve cero.

Si se produce un error en la función, devuelve un valor HRESULT que indica el error.

Comentarios

Si no se encuentra un certificado, CryptXmlSign creará una interfaz de usuario para la selección de certificados. Si esta ventana se genera a partir de un proceso que se ejecuta en la sesión 0, la aplicación puede finalizar inesperadamente.

Requisitos

   
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado cryptxml.h
Library Cryptxml.lib
Archivo DLL Cryptxml.dll