Поделиться через


структура BCRYPT_RSAKEY_BLOB (bcrypt.h)

Структура BCRYPT_RSAKEY_BLOB используется в качестве заголовка для открытого ключа RSA или большого двоичного объектазакрытого ключа в памяти.

Синтаксис

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

Члены

Magic

Указывает тип ключа RSA, который представляет большой двоичный объект. Это может быть одно из следующих значений.

Значение Значение
BCRYPT_RSAPUBLIC_MAGIC
Ключ является открытым ключом RSA.
BCRYPT_RSAPRIVATE_MAGIC
Ключ является закрытым ключом RSA.
BCRYPT_RSAFULLPRIVATE_MAGIC
Ключ является полным закрытым ключом RSA.

BitLength

Размер ключа в битах.

cbPublicExp

Размер (в байтах) экспоненты ключа. С Windows 10 версии 1903 общедоступные экспоненты больше (2^64–1) больше не поддерживаются.

cbModulus

Размер (в байтах) модуля ключа.

cbPrime1

Размер (в байтах) первого простого номера ключа. Используется только для больших двоичных объектов с закрытым ключом.

cbPrime2

Размер (в байтах) второго простого номера ключа. Используется только для больших двоичных объектов с закрытым ключом.

Комментарии

Эта структура используется в качестве заголовка для буфера большего размера. Большой двоичный объект с открытым ключом RSA (BCRYPT_RSAPUBLIC_BLOB) имеет следующий формат в непрерывной памяти. Все числа, следующие за структурой, имеют формат big-endian.


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

Большой двоичный объект с закрытым ключом RSA (BCRYPT_RSAPRIVATE_BLOB) имеет следующий формат в непрерывной памяти. Все числа, следующие за структурой, имеют формат big-endian.


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

Полный большой двоичный объект с закрытым ключом RSA (BCRYPT_RSAFULLPRIVATE_BLOB) имеет следующий формат в непрерывной памяти. Все числа, следующие за структурой, имеют формат big-endian.

Обратите внимание, что в разных версиях Windows значение, которое Private Exponent принимает из вызова BCryptExportKey , может отличаться, так как существует несколько математически эквивалентных представлений PrivateExponent в байтах cbModulus. Примечательно, что в некоторых версиях Private Exponent будет экспортироваться по модулю (Prime1 - 1) * (Prime2 - 1), а в других — по модулю 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.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть bcrypt.h

См. также раздел

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey