estrutura BCRYPT_RSAKEY_BLOB (bcrypt.h)

A estrutura BCRYPT_RSAKEY_BLOB é usada como um cabeçalho para uma chave pública RSA ou BLOB de chave privada na memória.

Sintaxe

typedef struct _BCRYPT_RSAKEY_BLOB {
  ULONG Magic;
  ULONG BitLength;
  ULONG cbPublicExp;
  ULONG cbModulus;
  ULONG cbPrime1;
  ULONG cbPrime2;
} BCRYPT_RSAKEY_BLOB;

Membros

Magic

Especifica o tipo de chave RSA que esse BLOB representa. Esse pode ser um dos valores a seguir.

Valor Significado
BCRYPT_RSAPUBLIC_MAGIC
A chave é uma chave pública RSA.
BCRYPT_RSAPRIVATE_MAGIC
A chave é uma chave privada RSA.
BCRYPT_RSAFULLPRIVATE_MAGIC
A chave é uma chave privada RSA completa.

BitLength

O tamanho, em bits, da chave.

cbPublicExp

O tamanho, em bytes, do expoente da chave. A partir de Windows 10 versão 1903, não há mais suporte para expoentes públicos maiores que (2^64 – 1).

cbModulus

O tamanho, em bytes, do módulo da chave.

cbPrime1

O tamanho, em bytes, do primeiro número primo da chave. Isso só é usado para BLOBs de chave privada.

cbPrime2

O tamanho, em bytes, do segundo número primo da chave. Isso só é usado para BLOBs de chave privada.

Comentários

Essa estrutura é usada como um cabeçalho para um buffer maior. Um BLOB de chave pública RSA (BCRYPT_RSAPUBLIC_BLOB) tem o seguinte formato na memória contígua. Todos os números que seguem a estrutura estão no formato big-endian.


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.

Um BLOB de chave privada RSA (BCRYPT_RSAPRIVATE_BLOB) tem o seguinte formato na memória contígua. Todos os números que seguem a estrutura estão no formato big-endian.


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.
Prime1[cbPrime1] // Big-endian.
Prime2[cbPrime2] // Big-endian.

Um BLOB de chave privada RSA completo (BCRYPT_RSAFULLPRIVATE_BLOB) tem o seguinte formato na memória contígua. Todos os números que seguem a estrutura estão no formato big-endian.

Observe que, em diferentes versões do Windows, o valor que PrivateExponent recebe de uma chamada de BCryptExportKey pode ser diferente, pois há várias representações matematicamente equivalentes do PrivateExponent em bytes cbModulus. Notavelmente, em algumas versões, o PrivateExponent será exportado modulo (Prime1 - 1) * (Prime2 - 1) e, em outras, será exportado modulo LeastCommonMultiple(Prime1 - 1, Prime2 - 1).


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.
Prime1[cbPrime1] // Big-endian.
Prime2[cbPrime2] // Big-endian.
Exponent1[cbPrime1] // Big-endian.
Exponent2[cbPrime2] // Big-endian.
Coefficient[cbPrime1] // Big-endian.
PrivateExponent[cbModulus] // Big-endian.

Requisitos

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

Confira também

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey