Compartilhar via


estrutura CRYPT_OID_INFO (wincrypt.h)

A estrutura CRYPT_OID_INFO contém informações sobre um OID ( identificador de objeto ). Essas estruturas fornecem a relação entre um identificador OID, seu nome, seu grupo e outras informações sobre o OID. Essas estruturas podem ser listadas usando a função CryptEnumOIDInfo . Novas CRYPT_OID_STRUCTURES podem ser adicionadas usando a função CryptRegisterOIDInfo .

Sintaxe

typedef struct _CRYPT_OID_INFO {
  DWORD           cbSize;
  LPCSTR          pszOID;
  LPCWSTR         pwszName;
  DWORD           dwGroupId;
  union {
    DWORD  dwValue;
    ALG_ID Algid;
    DWORD  dwLength;
  } DUMMYUNIONNAME;
  CRYPT_DATA_BLOB ExtraInfo;
  LPCWSTR         pwszCNGAlgid;
  LPCWSTR         pwszCNGExtraAlgid;
} CRYPT_OID_INFO, *PCRYPT_OID_INFO;

Membros

cbSize

O tamanho, em bytes, dessa estrutura.

pszOID

O OID associado a essas informações de OID.

pwszName

O nome de exibição associado a um OID.

dwGroupId

O valor do identificador de grupo associado a essas informações de OID.

Esse membro pode ser um dos seguintes identificadores de grupo dwGroupId .

Valor Significado
CRYPT_ENCRYPT_ALG_OID_GROUP_ID
Algoritmos de criptografia
CRYPT_ENHKEY_USAGE_OID_GROUP_ID
Usos aprimorados de chave
CRYPT_EXT_OR_ATTR_OID_GROUP_ID
Extensões ou atributos
CRYPT_HASH_ALG_OID_GROUP_ID
Algoritmos de hash
CRYPT_POLICY_OID_GROUP_ID
Políticas
CRYPT_PUBKEY_ALG_OID_GROUP_ID
Algoritmos de chave pública
CRYPT_RDN_ATTR_OID_GROUP_ID
Atributos RDN
CRYPT_SIGN_ALG_OID_GROUP_ID
Algoritmos de assinatura

DUMMYUNIONNAME

DUMMYUNIONNAME.dwValue

Um valor numérico associado a essas informações de OID. Esse membro é usado com CRYPT_SIGN_ALG_OID_GROUP_ID dwGroupId .

DUMMYUNIONNAME.Algid

O identificador de algoritmo associado a essas informações de OID.

Esse membro se aplica aos seguintes valores de dwGroupId:

  • CRYPT_HASH_ALG_OID_GROUP_ID
  • CRYPT_ENCRYPT_ALG_OID_GROUP_ID
  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID

DUMMYUNIONNAME.dwLength

Este membro não está implementado. Está sempre definido como zero.

ExtraInfo

Informações extras usadas para localizar ou registrar informações de OID. Esse membro se aplica aos seguintes valores de dwGroupId:

  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID
  • CRYPT_RDN_ATTR_OID_GROUP_ID
Os OIDs no grupo OID CRYPT_ENCRYPT_ALG_OID_GROUP_ID têm um comprimento de bit definido para os algoritmos AES no membro DWORD[0] do membro ExtraInfo.

Os OIDs no grupo CRYPT_PUBKEY_ALG_OID_GROUP_ID têm um sinalizador definido no membro DWORD[0] do membro ExtraInfo.

Os OIDs na curva ECC nomeam chaves públicas, por exemplo, szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), têm um sinalizador definido no membro DWORD[0], um valor de campo dwMagic BCRYPT_ECCKEY_BLOB definido no membro DWORD[1], e um comprimento de bit em que o valor BCRYPT_ECCKEY_BLOB cbKey é igual a dwBitLength / 8 + ((dwBitLength % 8) ? 1: 0) definido no membro DWORD[2] do membro ExtraInfo.

Os OIDs no grupo CRYPT_SIGN_ALG_OID_GROUP_ID têm um identificador de algoritmo de chave pública definido no membro DWORD[0], um sinalizador definido no membro DWORD[1] e um tipo de provedor opcional definido no membro DWORD[2] do membro ExtraInfo.

Os OIDs no grupo CRYPT_RDN_ATTR_OID_GROUP_ID têm uma lista terminada em nulo de tipos de valor de atributo RDN aceitáveis definidos em uma matriz de valores DWORD no membro ExtraInfo. Uma lista omitida implica uma matriz de valores em que o primeiro valor na matriz é CERT_RDN_PRINTABLE_STRING, o segundo valor na matriz é CERT_RDN_UNICODE_STRING e o terceiro valor na matriz é zero.

Os valores a seguir são usados para os sinalizadores no membro ExtraInfo .

Valor Significado
CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG
Esse sinalizador não é mais usado.

Interrompa a reformatação da assinatura antes que a função CryptVerifySignature seja chamada ou depois que a função CryptSignHash for chamada.

CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG
Omita parâmetros NULL ao codificar.
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG
A chave pública só é usada para criptografia.
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
A chave pública só é usada para assinaturas.
CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG
Esse sinalizador não é mais usado.

Inclua os parâmetros do algoritmo de chave pública nos parâmetros digestEncryptionAlgorithm para a mensagem PKCS nº 7.

pwszCNGAlgid

A cadeia de caracteres do identificador de algoritmo passada para as funções CNG (as funções BCrypt* e NCrypt* definidas em Bcrypt.h e Ncrypt.h). As funções CNG usam cadeias de caracteres de identificador de algoritmo, como L"SHA1", em vez das constantes de tipo de dados ALG_ID , como CALG_SHA1. Windows Server 2003 e Windows XP: Este membro não está disponível.

Nota O membro pwszCNGAlgid só estará disponível se você incluir a instrução a seguir em seu código.
 
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Esse membro se aplica aos seguintes valores de dwGroupId:

  • CRYPT_HASH_ALG_OID_GROUP_ID
  • CRYPT_ENCRYPT_ALG_OID_GROUP_ID
  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID
Defina o membro pwszCNGAlgid como a cadeia de caracteres vazia, L"", para os outros valores de dwGroupId.

O membro pwszCNGAlgid também pode ser definido como um valor de cadeia de caracteres que não é passado diretamente para as funções CNG. A tabela a seguir lista esses valores e seus significados.

Valor Significado
CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM
O algoritmo de curva ECC é obtido dos parâmetros codificados do algoritmo OID.
CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM
O algoritmo de encapsulamento de chave é obtido dos parâmetros codificados do algoritmo OID.
CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM
O algoritmo de hash é obtido dos parâmetros codificados do algoritmo OID.
CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM
O algoritmo de hash de geração de máscara PKCS nº 1 v2.1 é obtido dos parâmetros codificados do algoritmo OID.
CRYPT_OID_INFO_NO_SIGN_ALGORITHM
Um algoritmo de chave pública que indica que o valor da assinatura é um hash sem sinal.
CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM
O algoritmo de hash de preenchimento RSAES-OAEP é obtido dos parâmetros codificados do algoritmo OID.

pwszCNGExtraAlgid

Uma cadeia de caracteres de algoritmo extra, diferente da cadeia de caracteres no membro pwszCNGAlgid , que pode ser passada para as funções CNG (as funções BCrypt* e NCrypt* definidas em Bcrypt.h e Ncrypt.h).

Windows Server 2003 e Windows XP: Este membro não está disponível.

Nota Esse membro só estará disponível se você incluir a instrução a seguir em seu código.
 
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Para os algoritmos de assinatura (CRYPT_SIGN_ALG_OID_GROUP_ID), esse membro é a cadeia de caracteres de algoritmo de chave pública a ser passada para as funções CNG.

Para assinaturas ECC, esse membro é o valor de cadeia de caracteres de CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM especial.

Para assinaturas não assinadas, esse membro é o valor especial CRYPT_OID_INFO_NO_SIGN_ALGORITHM cadeia de caracteres.

Para chaves públicas de nome de curva ECC, por exemplo, szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), esse é o valor especial CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM cadeia de caracteres.

Para os outros valores de dwGroupId, defina o membro pwszCNGExtraAlgid como a cadeia de caracteres vazia, L"".

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho wincrypt.h

Confira também

CryptFindOIDInfo

CryptRegisterOIDInfo

CryptUnregisterOIDInfo