Função CryptFindOIDInfo (wincrypt.h)

A função CryptFindOIDInfo recupera a primeira estrutura de CRYPT_OID_INFO predefinida ou registrada que corresponde a um tipo de chave e uma chave especificados. A pesquisa pode ser limitada a OIDs ( identificadores de objeto ) em um grupo de OID especificado.

Use CryptEnumOIDInfo para listar todos os subconjuntos selecionados ou de estruturas de CRYPT_OID_INFO . Novas estruturas de CRYPT_OID_INFO podem ser registradas usando CryptRegisterOIDInfo. Os OIDs registrados pelo usuário podem ser removidos da lista de OIDs registrados usando CryptUnregisterOIDInfo.

Novos OIDs podem ser colocados na lista de OIDs registrados antes ou depois das entradas predefinidas. Como CryptFindOIDInfo retorna a primeira chave na lista que corresponde aos critérios de pesquisa, uma OID recém-registrada colocada antes de uma entrada OID predefinida com a mesma chave substitui uma entrada predefinida.

Sintaxe

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

Parâmetros

[in] dwKeyType

Especifica o tipo de chave a ser usado ao localizar informações de OID.

Esse parâmetro pode ser um dos seguintes tipos de chave.

CRYPT_OID_INFO_OID_KEY

pvKey é o endereço de uma cadeia de caracteres ANSI terminada em nulo que contém a cadeia de caracteres OID a ser encontrada.

CRYPT_OID_INFO_NAME_KEY

pvKey é o endereço de uma cadeia de caracteres Unicode terminada em nulo que contém o nome a ser encontrado.

CRYPT_OID_INFO_ALGID_KEY

pvKey é o endereço de uma variável ALG_ID . Há suporte para os seguintes ALG_ID:

Algoritmos de hash:

Algoritmos de criptografia simétrica:

Algoritmos de chave pública:

Algoritmos que não estão listados têm suporte usando a API de Criptografia: somente CNG (Próxima Geração) ; em vez disso, use CRYPT_OID_INFO_CNG_ALGID_KEY.

CRYPT_OID_INFO_SIGN_KEY

pvKey é o endereço de uma matriz de dois ALG_IDs em que o primeiro elemento contém o identificador de algoritmo de hash e o segundo elemento contém o identificador de algoritmo de chave pública.

Há suporte para as seguintes combinações de ALG_ID.

Identificador de algoritmo de assinatura Identificador de algoritmo de 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
 

Algoritmos que não estão listados têm suporte apenas por meio de CNG; em vez disso, use CRYPT_OID_INFO_CNG_SIGN_KEY.

CRYPT_OID_INFO_CNG_ALGID_KEY

pvKey é o endereço de uma cadeia de caracteres Unicode terminada em nulo que contém o identificador de algoritmo CNG a ser encontrado. Esse pode ser um dos Identificadores de Algoritmo CNG predefinidos ou outro identificador de algoritmo registrado.

Windows Server 2003 R2 Windows Server 2003: Não há suporte para esse tipo de chave.

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey é o endereço de uma matriz de dois ponteiros de cadeia de caracteres Unicode terminados em nulo em que a primeira cadeia de caracteres contém o identificador de algoritmo CNG de hash e a segunda cadeia de caracteres contém o identificador de algoritmo CNG de chave pública. Eles podem ser dos Identificadores de Algoritmo CNG predefinidos ou de outro identificador de algoritmo registrado.

Windows Server 2003 R2 Windows Server 2003: Não há suporte para esse tipo de chave.

Opcionalmente, os seguintes tipos de chave podem ser especificados no parâmetro dwKeyType usando o operador OR lógico (|).

Valor Significado
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Ignora chaves públicas no grupo CRYPT_PUBKEY_ALG_OID_GROUP_ID que são sinalizadas explicitamente com o sinalizador CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG.
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Ignora chaves públicas no grupo de CRYPT_PUBKEY_ALG_OID_GROUP_ID que são sinalizadas explicitamente com o sinalizador CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG.

[in] pvKey

O endereço de um buffer que contém informações de pesquisa adicionais. Esse parâmetro depende do valor do parâmetro dwKeyType . Para obter mais informações, consulte a tabela em dwKeyType.

[in] dwGroupId

O identificador de grupo a ser usado ao localizar informações de OID. Definir esse parâmetro como zero pesquisa todos os grupos de acordo com o parâmetro dwKeyType . Caso contrário, somente o dwGroupId indicado será pesquisado.

Para obter informações sobre o código que lista as informações de OID por identificador de grupo, consulte CryptEnumOIDInfo.

Opcionalmente, o sinalizador a seguir pode ser especificado no parâmetro dwGroupId usando o operador OR lógico (|).

Valor Significado
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
Desabilita a pesquisa no servidor de diretório.
 

O comprimento do bit deslocado para a esquerda de 16 bits pode ser especificado no parâmetro dwGroupId usando o operador OR lógico (|). Para obter mais informações, consulte Comentários.

Retornar valor

Retorna um ponteiro para uma estrutura constante do tipo CRYPT_OID_INFO. O ponteiro retornado não deve ser liberado. Quando a chave e o grupo especificados não são encontrados, NULL é retornado.

Comentários

A função CryptFindOIDInfo executa uma pesquisa no active directory para recuperar os nomes amigáveis de OIDs nas seguintes condições:

  • O tipo de chave no parâmetro dwKeyType é definido como CRYPT_OID_INFO_OID_KEY ou CRYPT_OID_INFO_NAME_KEY.
  • Nenhum identificador de grupo é especificado no parâmetro dwGroupId ou GroupID refere-se a OIDs de EKU, OIDs de política ou OIDs de modelo.
A recuperação de rede do nome amigável pode ser suprimida chamando a função com o sinalizador CRYPT_OID_DISABLE_SEARCH_DS_FLAG .

O comprimento do bit deslocado para a esquerda de 16 bits pode ser especificado no parâmetro dwGroupId usando o operador OR lógico (|). Isso só é aplicável às entradas de grupo CRYPT_ENCRYPT_ALG_OID_GROUP_ID que têm um comprimento de bit especificado no membro ExtraInfo da estrutura CRYPT_OID_INFO . Atualmente, apenas os algoritmos de criptografia AES têm isso. A constante CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT pode ser usada para fazer a mudança. Por exemplo, para localizar as informações de OID para BCRYPT_AES_ALGORITHM com comprimento de bit igual a 192, chame CryptFindOIDInfo da seguinte maneira.


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 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

Confira também

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

Funções de suporte do OID