BCRYPT_MLKEM_KEY_BLOB estrutura

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. As funcionalidades compostas descritas neste tópico estão disponíveis em versões pré-lançamento do Windows Insider Preview.

A estrutura BCRYPT_MLKEM_KEY_BLOB é usada como cabeçalho para uma chave pública ML-KEM (chave de encapsulamento codificada em 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 utilizada. São definidos os seguintes valores:

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 buffer Define diretamente após o struct. Esse buffer contém uma cadeia de caracteres Unicode terminada em nulo que identifica o conjunto de parâmetros da chave. Atualmente são suportados os seguintes valores:

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" ML-KEM-768 e ECDH P256 compostos
BCRYPT_COMPOSITE_MLKEM_PARAMETER_SET_768_X25519L"768-X25519" ML-KEM-768 composto e curva25519
BCRYPT_COMPOSITE_MLKEM_PARAMETER_SET_1024_P384L"1024-P384" ML-KEM-1024 e ECDH P384 compostos

cbKey

O comprimento, em bytes, da chave de buffer imediatamente após o parámetro Set. Esse tamanho é estático e depende do formato da chave e do conjunto de parâmetros em uso.

Remarks

BCRYPT_MLKEM_PRIVATE_BLOB (também apelidado como BCRYPT_MLKEM_DECAPSULATION_BLOB) suporta a importação e exportação de chaves de decapsulação de ML-KEM codificadas em bytes padrão conforme o FIPS 203. O blob tem o valor BCRYPT_MLKEM_PRIVATE_MAGICdwMagic e o campo chave contém a chave codificada em bytes.

BCRYPT_MLKEM_PUBLIC_BLOB (também apelidado como BCRYPT_MLKEM_ENCAPSULATION_BLOB) suporta a importação e exportação de chaves de encapsulamento de ML-KEM codificadas em bytes padrão conforme o FIPS 203. O blob tem o valor BCRYPT_MLKEM_PUBLIC_MAGICdwMagic e o campo chave contém a chave codificada em bytes.

BCRYPT_MLKEM_PRIVATE_SEED_BLOB suporta a importação e exportação de sementes ML-KEM. O blob tem o valor BCRYPT_MLKEM_PRIVATE_SEED_MAGICdwMagic e o campo key contém a seed KEM (definida como a concatenação de 64 bytes de d || z por FIPS 203), por isso cbKey é atualmente sempre 64.

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

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

BCRYPT_COMPOSITE_MLKEM_PUBLIC_BLOB suporta a importação e exportação de chaves públicas Composite-ML-KEM codificadas por bytes padrão por PQ Composite ML-KEM. O blob tem o valor BCRYPT_COMPOSITE_MLKEM_PUBLIC_MAGICdwMagic e o campo chave contém a chave codificada em bytes.

BCRYPT_COMPOSITE_MLKEM_PRIVATE_IRTF_SEED_BLOB suporta a importação e exportação de sementes compostasML-KEM. O blob tem valor BCRYPT_COMPOSITE_MLKEM_PRIVATE_IRTF_SEED_MAGICdwMagic e o campo key contém a semente IRTF Composite-ML-KEM de 32 bytes segundo os KEMs híbridos de betão CFRG, por isso cbKey está atualmente sempre 32.

Requirements

Requirement Value
Cliente mínimo suportado Windows 11 24H2: Início do suporte para ML-KEM. [Apenas aplicações de ambiente de trabalho]
Servidor mínimo suportado Windows Server 2025: Início do suporte para ML-KEM. [Apenas aplicações de ambiente de trabalho]
Header bcrypt.h

Ver também

BCryptGenerateKeyPair

BCryptImportKeyPair

BCryptFinalizeKeyPair

BCryptExportKey

BCryptGetProperty

BCryptSetProperty

BCryptEncapsulate

BCryptDecapsulate