estrutura BCRYPT_MLKEM_KEY_BLOB

Note

Algumas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui. Os recursos de composição descritos neste tópico estão disponíveis em versões de pré-lançamento do Windows Insider Preview.

A estrutura de BCRYPT_MLKEM_KEY_BLOB é usada como um cabeçalho para uma chave pública ML-KEM (chave de encapsulamento codificada por bytes) ou BLOB de chave privada na memória.

Syntax

typedef struct _BCRYPT_MLKEM_KEY_BLOB {
  ULONG dwMagic;
  ULONG cbParameterSet;             // Byte size of parameterSet[]
  ULONG cbKey;                      // Byte size of key[]
  // WCHAR parameterSet[cbParameterSet / sizeof(WCHAR)];  // Including \0-terminated
  // BYTE key[cbKey];                                     // Key material
} BCRYPT_MLKEM_KEY_BLOB, *PBCRYPT_MLKEM_KEY_BLOB;
typedef struct _BCRYPT_COMPOSITE_MLKEM_KEY_BLOB {
  ULONG dwMagic;
  ULONG cbParameterSet;             // Byte size of parameterSet[]
  ULONG cbKey;                      // Byte size of key[]
  // WCHAR parameterSet[cbParameterSet / sizeof(WCHAR)];  // Including \0-terminated
  // BYTE key[cbKey];                                     // Key material
} BCRYPT_COMPOSITE_MLKEM_KEY_BLOB, *PBCRYPT_COMPOSITE_MLKEM_KEY_BLOB;

Fields

dwMagic

O campo dwMagic é um valor de 4 bytes que indica o formato da chave que está sendo usada. Os seguintes valores são definidos:

Value Meaning
BCRYPT_MLKEM_PUBLIC_MAGIC0x504B4C4D A estrutura representa uma chave pública.
BCRYPT_MLKEM_PRIVATE_MAGIC0x524B4C4D A estrutura representa uma chave privada expandida.
BCRYPT_MLKEM_PRIVATE_SEED_MAGIC0x534B4C4D A estrutura representa uma semente privada.
BCRYPT_COMPOSITE_MLKEM_PUBLIC_MAGIC0x504B4D43 A estrutura representa uma chave pública.
BCRYPT_COMPOSITE_MLKEM_PRIVATE_MAGIC0x524B4D43 A estrutura representa uma chave privada.
BCRYPT_COMPOSITE_MLKEM_PRIVATE_IRTF_SEED_MAGIC0x534B4D43 A estrutura representa uma semente privada. Referência: IRTF

cbParameterSet

O comprimento, em bytes, do parâmetro de bufferSet seguindo diretamente o struct. Esse buffer contém uma cadeia de caracteres Unicode terminada em nulo que identifica o conjunto de parâmetros da chave. Há suporte para os seguintes valores atualmente:

parameterSet Meaning
BCRYPT_MLKEM_PARAMETER_SET_512L"512" ML-KEM-512, categoria de segurança 1.
BCRYPT_MLKEM_PARAMETER_SET_768L"768" ML-KEM-768, categoria de segurança 3.
BCRYPT_MLKEM_PARAMETER_SET_1024L"1024" ML-KEM-1024, categoria de segurança 5.
BCRYPT_COMPOSITE_MLKEM_PARAMETER_SET_768_P256L"768-P256" Composição ML-KEM-768 e ECDH P256
BCRYPT_COMPOSITE_MLKEM_PARAMETER_SET_768_X25519L"768-X25519" Composição ML-KEM-768 e curve25519
BCRYPT_COMPOSITE_MLKEM_PARAMETER_SET_1024_P384L"1024-P384" Composição ML-KEM-1024 e ECDH P384

cbKey

O comprimento, em bytes, da chave de buffer diretamente seguindo parameterSet. Esse tamanho é estático e depende do formato de chave e do conjunto de parâmetros em uso.

Remarks

BCRYPT_MLKEM_PRIVATE_BLOB (também aliased as BCRYPT_MLKEM_DECAPSULATION_BLOB) dá suporte à importação e exportação de chaves de descapsulação de ML-KEM codificadas em bytes padrão por FIPS 203. O blob tem o valor BCRYPT_MLKEM_PRIVATE_MAGICdwMagic e o campo de chave contém a chave codificada por bytes.

BCRYPT_MLKEM_PUBLIC_BLOB (também aliased as BCRYPT_MLKEM_ENCAPSULATION_BLOB) dá suporte à importação e exportação de chaves de encapsulamento de ML-KEM codificadas em bytes padrão por FIPS 203. O blob tem o valor BCRYPT_MLKEM_PUBLIC_MAGICdwMagic e o campo de chave contém a chave codificada por bytes.

BCRYPT_MLKEM_PRIVATE_SEED_BLOB dá suporte à importação e exportação de sementes ML-KEM. O blob tem o valor BCRYPT_MLKEM_PRIVATE_SEED_MAGICdwMagic e o campo de chave contém a semente KEM (definida como a concatenação de 64 bytes por d || zFIPS 203), portanto cbKey está sempre .64

Os tamanhos de bytes das chaves codificadas por bytes podem ser encontrados na Tabela 3 da Seção 8 do FIPS 203 . Muitos chamadores podem consultar dinamicamente os tamanhos de blob necessários usando BCryptExportKey com NULLpbOutput.

BCRYPT_COMPOSITE_MLKEM_PRIVATE_BLOB dá suporte à importação e exportação de chaves privadas de composiçãoML-KEM codificadas em bytes padrão por PQ Composite ML-KEM. O blob tem o valor BCRYPT_COMPOSITE_MLKEM_PRIVATE_MAGICdwMagic e o campo de chave contém a chave codificada por bytes.

BCRYPT_COMPOSITE_MLKEM_PUBLIC_BLOB dá suporte à importação e exportação de chaves públicasML-KEM compostas codificadas por bytes padrão por PQ Composite ML-KEM. O blob tem o valor BCRYPT_COMPOSITE_MLKEM_PUBLIC_MAGICdwMagic e o campo de chave contém a chave codificada por bytes.

BCRYPT_COMPOSITE_MLKEM_PRIVATE_IRTF_SEED_BLOB dá suporte à importação e exportação de sementesML-KEM compostas. O blob tem o valor BCRYPT_COMPOSITE_MLKEM_PRIVATE_IRTF_SEED_MAGICdwMagic e o campo de chave contém a semente de composição IRTF de 32 bytesML-KEM por KEMs Híbridas de Concreto CFRG, portanto cbKey está sempre .32

Requirements

Requirement Value
Cliente mínimo suportado O suporte Windows 11 24H2: para ML-KEM começa. [Somente aplicativos da área de trabalho]
Servidor mínimo compatível Windows Server 2025: o Suporte para ML-KEM começa. [Somente aplicativos da área de trabalho]
Header bcrypt.h

Consulte também

BCryptGenerateKeyPair

BCryptImportKeyPair

BCryptFinalizeKeyPair

BCryptExportKey

BCryptGetProperty

BCryptSetProperty

BCryptEncapsulate

BCryptDecapsulate