struttura BCRYPT_RSAKEY_BLOB (bcrypt.h)

La struttura BCRYPT_RSAKEY_BLOB viene usata come intestazione per una chiave pubblica RSA o UN BLOB di chiavi private in memoria.

Sintassi

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

Members

Magic

Specifica il tipo di chiave RSA rappresentata da questo BLOB. Può trattarsi di uno dei valori seguenti.

Valore Significato
BCRYPT_RSAPUBLIC_MAGIC
La chiave è una chiave pubblica RSA.
BCRYPT_RSAPRIVATE_MAGIC
La chiave è una chiave privata RSA.
BCRYPT_RSAFULLPRIVATE_MAGIC
La chiave è una chiave privata RSA completa.

BitLength

Dimensione in bit della chiave.

cbPublicExp

Dimensione, in byte, dell'esponente della chiave. A partire da Windows 10 versione 1903, gli esponenti pubblici più grandi di (2^64 - 1) non sono più supportati.

cbModulus

Dimensione, in byte, del modulo della chiave.

cbPrime1

Dimensione, in byte, del primo numero primo della chiave. Questa opzione viene usata solo per i BLOB di chiave privata.

cbPrime2

Dimensione, in byte, del secondo numero primo della chiave. Questa opzione viene usata solo per i BLOB di chiave privata.

Commenti

Questa struttura viene usata come intestazione per un buffer più grande. Un BLOB di chiave pubblica RSA (BCRYPT_RSAPUBLIC_BLOB) ha il formato seguente in memoria contigua. Tutti i numeri che seguono la struttura sono in formato big-endian.


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

Un BLOB di chiave privata RSA (BCRYPT_RSAPRIVATE_BLOB) ha il formato seguente in memoria contigua. Tutti i numeri che seguono la struttura sono in formato big-endian.


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

Un BLOB di chiave privata RSA completo (BCRYPT_RSAFULLPRIVATE_BLOB) ha il formato seguente in memoria contigua. Tutti i numeri che seguono la struttura sono in formato big-endian.

Si noti che in versioni diverse di Windows, il valore che PrivateExponent prende da una chiamata di BCryptExportKey può essere diverso perché esistono diverse rappresentazioni matematicamente equivalenti del PrivateExponent in byte cbModulus. In particolare, in alcune versioni PrivateExponent verrà esportato modulo (Prime1 - 1) * (Prime2 - 1) e in altri verrà esportato 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.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Intestazione bcrypt.h

Vedi anche

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey