Función CryptFindOIDInfo (wincrypt.h)

La función CryptFindOIDInfo recupera la primera estructura de CRYPT_OID_INFO predefinida o registrada que coincide con un tipo de clave y una clave especificados. La búsqueda se puede limitar a los identificadores de objeto (OID) dentro de un grupo de OID especificado.

Use CryptEnumOIDInfo para enumerar todos o determinados subconjuntos de estructuras de CRYPT_OID_INFO . Las nuevas estructuras de CRYPT_OID_INFO se pueden registrar mediante CryptRegisterOIDInfo. Los OID registrados por el usuario se pueden quitar de la lista de OID registrados mediante CryptUnregisterOIDInfo.

Los nuevos OID se pueden colocar en la lista de OID registrados antes o después de las entradas predefinidas. Dado que CryptFindOIDInfo devuelve la primera clave de la lista que coincide con los criterios de búsqueda, un OID recién registrado colocado antes de una entrada de OID predefinida con la misma clave invalida una entrada predefinida.

Sintaxis

PCCRYPT_OID_INFO CryptFindOIDInfo(
  [in] DWORD dwKeyType,
  [in] void  *pvKey,
  [in] DWORD dwGroupId
);

Parámetros

[in] dwKeyType

Especifica el tipo de clave que se va a usar al buscar información de OID.

Este parámetro puede ser uno de los siguientes tipos de clave.

CRYPT_OID_INFO_OID_KEY

pvKey es la dirección de una cadena ANSI terminada en null que contiene la cadena OID que se va a buscar.

CRYPT_OID_INFO_NAME_KEY

pvKey es la dirección de una cadena Unicode terminada en null que contiene el nombre que se va a buscar.

CRYPT_OID_INFO_ALGID_KEY

pvKey es la dirección de una variable de ALG_ID . Se admiten los siguientes ALG_ID:

Algoritmos hash:

Algoritmos de cifrado simétricos:

Algoritmos de clave pública:

Los algoritmos que no aparecen se admiten mediante Cryptography API: Next Generation (CNG) only; en su lugar, use CRYPT_OID_INFO_CNG_ALGID_KEY.

CRYPT_OID_INFO_SIGN_KEY

pvKey es la dirección de una matriz de dos ALG_IDs donde el primer elemento contiene el identificador del algoritmo hash y el segundo elemento contiene el identificador del algoritmo de clave pública.

Se admiten las siguientes combinaciones de ALG_ID .

Identificador del algoritmo de firma Identificador de algoritmo hash
CALG_RSA_SIGN
CALG_SHA1
CALG_MD5
CALG_MD4
CALG_MD2
CALG_DSS_SIGN
CALG_SHA1
CALG_NO_SIGN
CALG_SHA1
CALG_NO_SIGN
 

Los algoritmos que no aparecen en la lista solo se admiten a través de CNG; en su lugar, use CRYPT_OID_INFO_CNG_SIGN_KEY.

CRYPT_OID_INFO_CNG_ALGID_KEY

pvKey es la dirección de una cadena Unicode terminada en null que contiene el identificador del algoritmo CNG que se va a buscar. Puede ser uno de los identificadores de algoritmo CNG predefinidos u otro identificador de algoritmo registrado.

Windows Server 2003 R2 Windows Server 2003 : Este tipo de clave no se admite.

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey es la dirección de una matriz de dos punteros de cadena Unicode terminados en null, donde la primera cadena contiene el identificador del algoritmo CNG hash y la segunda cadena contiene el identificador del algoritmo CNG de clave pública. Estos pueden ser de los identificadores de algoritmo CNG predefinidos u otro identificador de algoritmo registrado.

Windows Server 2003 R2 Windows Server 2003 : Este tipo de clave no se admite.

Opcionalmente, se pueden especificar los siguientes tipos de clave en el parámetro dwKeyType mediante el operador OR lógico (|).

Valor Significado
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Omite las claves públicas del grupo CRYPT_PUBKEY_ALG_OID_GROUP_ID que se marcan explícitamente con la marca CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG.
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Omite las claves públicas del grupo CRYPT_PUBKEY_ALG_OID_GROUP_ID que se marcan explícitamente con la marca CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG.

[in] pvKey

Dirección de un búfer que contiene información de búsqueda adicional. Este parámetro depende del valor del parámetro dwKeyType . Para obtener más información, consulte la tabla en dwKeyType.

[in] dwGroupId

Identificador de grupo que se va a usar al buscar información de OID. Establecer este parámetro en cero busca en todos los grupos según el parámetro dwKeyType . De lo contrario, solo se busca en dwGroupId indicado.

Para obtener información sobre el código que enumera la información de OID por identificador de grupo, consulte CryptEnumOIDInfo.

Opcionalmente, se puede especificar la marca siguiente en el parámetro dwGroupId mediante el operador OR lógico (|).

Valor Significado
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
Deshabilita la búsqueda en el servidor de directorios.
 

La longitud de bits desplazada a la izquierda de 16 bits se puede especificar en el parámetro dwGroupId mediante el operador OR lógico (|). Para obtener más información, vea la sección Comentarios.

Valor devuelto

Devuelve un puntero a una estructura constante de tipo CRYPT_OID_INFO. El puntero devuelto no debe liberarse. Cuando no se encuentra la clave y el grupo especificados, se devuelve NULL .

Comentarios

La función CryptFindOIDInfo realiza una búsqueda en active directory para recuperar los nombres descriptivos de los OID en las condiciones siguientes:

  • El tipo de clave del parámetro dwKeyType se establece en CRYPT_OID_INFO_OID_KEY o CRYPT_OID_INFO_NAME_KEY.
  • No se especifica ningún identificador de grupo en el parámetro dwGroupId o groupID hace referencia a EKU OID, OID de directiva o OID de plantilla.
La recuperación de red del nombre descriptivo se puede suprimir llamando a la función con la marca CRYPT_OID_DISABLE_SEARCH_DS_FLAG .

La longitud de bits desplazada a la izquierda de 16 bits se puede especificar en el parámetro dwGroupId mediante el operador OR lógico (|). Esto solo se aplica a las entradas de grupo CRYPT_ENCRYPT_ALG_OID_GROUP_ID que tienen una longitud de bits especificada en el miembro ExtraInfo de la estructura CRYPT_OID_INFO . Actualmente, solo los algoritmos de cifrado AES tienen esto. La constante CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT se puede usar para realizar el cambio. Por ejemplo, para buscar la información del OID para BCRYPT_AES_ALGORITHM con longitud de bits igual a 192, llame a CryptFindOIDInfo como se indica a continuación.


DWORD dwBitLen = 192;

PCCRYPT_OID_INFO pOIDInfo = CryptFindOIDInfo(
     CRYPT_OID_INFO_CNG_ALGID_KEY,
     (void *) BCRYPT_AES_ALGORITHM,
     CRYPT_ENCRYPT_ALG_OID_GROUP_ID |
         (dwBitLen << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT)
     );


Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

Funciones de compatibilidad con OID