IX509CertificateRequestPkcs10::GetCspStatuses (certenroll.h)

El método GetCspStatuses recupera una colección ICspStatuses que contiene todos los pares proveedor/algoritmo coherentes con el uso previsto de la clave privada, tal como especifica el autor de la llamada.

Sintaxis

HRESULT GetCspStatuses(
  [in]  X509KeySpec  KeySpec,
  [out] ICspStatuses **ppCspStatuses
);

Parámetros

[in] KeySpec

Valor de enumeración X509KeySpec que especifica el uso previsto de la clave. Puede ser uno de los siguientes valores.

Valor Significado
XCN_AT_NONE
Solo se seleccionan proveedores de Cryptography API: Next Generation (CNG).
XCN_AT_KEYEXCHANGE
Solo se seleccionan los proveedores de servicios criptográficos (CSP) cryptoAPI con algoritmos de cifrado (incluido el intercambio de claves).
XCN_AT_SIGNATURE
Solo se seleccionan csp cryptoAPI con algoritmos de firma.

[out] ppCspStatuses

Dirección de una variable que recibe un puntero a una interfaz ICspStatuses que representa la colección.

Valor devuelto

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

Si se produce un error en la función, devuelve un valor HRESULT que indica el error. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Código devuelto Descripción
CERTSRV_E_PROPERTY_EMPTY
No se encuentra la clave privada.
OLE_E_BLANK
El objeto no se inicializa.

Comentarios

Este método recupera una colección de objetos ICspStatus . Cada objeto representa un único par proveedor/algoritmo. Si especifica una plantilla al inicializar el objeto de solicitud IX509CertificateRequestPkcs10 , los atributos de plantilla como pKIDefaultCSPs y pKIDefaultKeySpec afectan inicialmente a qué pares están habilitados inicialmente. Puede llamar a las siguientes propiedades en cada objeto ICspStatus para recuperar información sobre un par:

  • La propiedad CspInformation recupera la información del proveedor.
  • La propiedad CspAlgorithm recupera información del algoritmo.
  • La propiedad EnrollmentStatus recupera un objeto IX509EnrollmentStatus . Llame a la propiedad Selected en el objeto status para determinar si el par proveedor/algoritmo está habilitado para esta solicitud.
  • La propiedad Ordinal recupera la posición de la colección de pares proveedor/algoritmo.

La colección recuperada por este método se guarda internamente en el objeto request. Se pueden crear y guardar hasta tres colecciones, una para cada valor keySpec . Esto se hace para conservar el estado de selección de los pares proveedor/algoritmo para que las páginas de propiedades pertinentes se puedan mostrar con precisión y rapidez varias veces y para que el método Encode pueda identificar qué proveedores y algoritmos se seleccionan si se debe crear una clave privada. Si se modifica el estado de selección de un par proveedor/algoritmo, los cambios se guardan en la colección adecuada. Los cambios realizados en los miembros de una colección no afectan a los miembros de ninguna otra colección. Las colecciones existen siempre que el objeto PKCS #10 continúe existiendo.

Supongamos, por ejemplo, que se llama a este método con el parámetro KeySpec establecido en XCN_AT_SIGNATURE y que se usa una plantilla para inicializar la solicitud. Las siguientes instrucciones serán verdaderas:

  • Se crea y guarda una colección de objetos ICspStatus en el objeto IX509CertificateRequestPkcs10 . La colección contiene todos los pares de proveedor y algoritmo válidos instalados en el equipo.
  • Dado que el parámetro KeySpec no está establecido en XCN_AT_NONE, la propiedad Selected se establece en SelectedNo para cada par de proveedor o algoritmo de Cryptography API: Next Generation (CNG) de la colección.
  • Dado que el parámetro KeySpec no está establecido en XCN_AT_KEYEXCHANGE, la propiedad Selected se establece en SelectedNo para cada par csp/algoritmo cryptoAPI de la colección donde se puede usar el algoritmo para cifrar datos o archivar una clave.
  • Para cada proveedor al que hace referencia la plantilla o la clave privada, pero no se admite en el equipo, se crea un objeto ICspStatus de marcador de posición y se agrega a la colección y la propiedad Selected se establece en SelectedNo .
  • La propiedad Selected se establece en SelectedYes para cada par de ALGORITMOs o CSP de CryptoAPI, donde el algoritmo solo se puede usar para firmar los datos.
  • La propiedad Ordinal se establece para reflejar el orden de CSP, si existe, identificado por el atributo de plantilla pKIDefaultCSPs . Los CSP enumerados primero por el atributo se ordenan primero en la colección. Esta propiedad se usa durante la inscripción si se debe crear una clave privada. El primer par CSP/algoritmo seleccionado se usa para crear la clave, pero si se produce un error en la operación, se intenta el siguiente par seleccionado.
  • Al llamar a este método de nuevo con el mismo parámetro KeySpec , se recupera un puntero a la colección existente creada anteriormente para ese valor de parámetro.
  • Llamar a este método de nuevo con un parámetro KeySpec diferente no afectará a la colección creada para el valor de XCN_AT_SIGNATURE KeySpec . Además, cambiar la propiedad Selected en cualquier miembro de la nueva colección no afecta a ningún miembro de la colección anterior.

El método GetCspStatuses difiere de la propiedad CspStatuses mediante el uso del parámetro KeySpec . El método permite a los usuarios especificar este valor, pero la propiedad usa el valor establecido en la clave privada asociada al objeto de solicitud.

Debe inicializar el objeto IX509CertificateRequestPkcs10 antes de llamar a este método. Para obtener más información, consulte cualquiera de los métodos siguientes:

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado certenroll.h
Archivo DLL CertEnroll.dll

Consulte también

IX509CertificateRequestPkcs10