Partilhar 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 . Novos CRYPT_OID_STRUCTURES podem ser adicionados 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

A OID associada 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 dwGroupId CRYPT_SIGN_ALG_OID_GROUP_ID.

DUMMYUNIONNAME.Algid

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

Este membro aplica-se 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 é implementado. Está sempre definido como zero.

ExtraInfo

Informações extras usadas para localizar ou registrar informações de OID. Este membro aplica-se 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 nas chaves públicas do nome da curva ECC, por exemplo, szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), tem um sinalizador definido no membro DWORD[0], um valor de campo dwMagic BCRYPT_ECCKEY_BLOB definido no membro DWORD[1] e um pouco de comprimento 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 é usada apenas para criptografia.
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
A chave pública é usada apenas 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.

Uso pós-quântico

CRYPT_PUBKEY_ALG_OID_GROUP_ID tem os seguintes campos ExtraInfo quando usados com OIDs PQ (acima):

Campo Descrição
DWORD[0] Sinalizadores
DWORD[1] Magia Pública (por exemplo , BCRYPT_MLDSA_PUBLIC_MAGIC)
DWORD[2] Magia Privada (por exemplo , BCRYPT_MLDSA_PRIVATE_SEED_MAGIC)
DWORD[4] Comprimento do byte da chave pública
DWORD[5] Comprimento do byte da chave privada
DWORD[6] Comprimento do byte de assinatura

CRYPT_SIGN_ALG_OID_GROUP_ID tem os seguintes campos ExtraInfo quando usados com OIDs PQ:

Campo Descrição
DWORD[0] Sinalizadores
DWORD[1] Comprimento do byte de assinatura

CRYPT_HASH_ALG_OID_GROUP_ID pode ser definido como L"NoHash" para indicar nenhum hash antes da assinatura, e a chave PQ assinará diretamente os bytes ToBeSigned .

pwszCNGAlgid

A cadeia de caracteres do identificador de algoritmo passada para as funções CNG (as funções BCrypt* e NCrypt* que são 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.

Observação

 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

Este membro aplica-se 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 não assinado.
CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM O algoritmo de hash de preenchimento RSAES-OAEP é obtido dos parâmetros codificados do algoritmo OID.
CRYPT32_MLDSA_44_ALGORITHM
L"ML-DSA:44"
O algoritmo ML-DSA combina o nome do algoritmo CNG para ML-DSA e o conjunto de parâmetros CNG 44 (categoria de segurança NIST 2).
CRYPT32_MLDSA_65_ALGORITHM
L"ML-DSA:65"
O algoritmo ML-DSA combina o nome do algoritmo CNG para ML-DSA e o conjunto de parâmetros CNG 65(categoria de segurança NIST 3).
CRYPT32_MLDSA_87_ALGORITHM
L"ML-DSA:87"
O algoritmo ML-DSA combina o nome do algoritmo CNG para ML-DSA e o conjunto de parâmetros CNG 87 (categoria de segurança NIST 5).
CRYPT_OID_INFO_NO_HASH_ALGORITHM
L"NoHash"
Para assinaturas digitais PQ, indica que não há hash antes da assinatura e a chave PQ assinará diretamente os bytes ToBeSigned.

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 de cadeia de caracteres de CRYPT_OID_INFO_NO_SIGN_ALGORITHM especial.

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 da cadeia de caracteres CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM.

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

Requisitos

Requisito Valor
Cliente mínimo suportado Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo compatível Windows Server 2003 [somente aplicativos da área de trabalho]
cabeçalho wincrypt.h

Consulte também

CryptFindOIDInfo

CryptRegisterOIDInfo

CryptUnregisterOIDInfo