BCRYPT_RSAKEY_BLOB structure (bcrypt.h)

La structure BCRYPT_RSAKEY_BLOB est utilisée comme en-tête pour une clé publique RSA ou un objet BLOBde clé privée en mémoire.

Syntaxe

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

Membres

Magic

Spécifie le type de clé RSA que représente cet objet BLOB. Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
BCRYPT_RSAPUBLIC_MAGIC
La clé est une clé publique RSA.
BCRYPT_RSAPRIVATE_MAGIC
La clé est une clé privée RSA.
BCRYPT_RSAFULLPRIVATE_MAGIC
La clé est une clé privée RSA complète.

BitLength

Taille de la clé, en bits.

cbPublicExp

Taille, en octets, de l’exposant de la clé. Depuis Windows 10 version 1903, les exposants publics supérieurs à (2^64 - 1) ne sont plus pris en charge.

cbModulus

Taille, en octets, du module de la clé.

cbPrime1

Taille, en octets, du premier nombre premier de la clé. Il est utilisé uniquement pour les objets BLOB de clés privées.

cbPrime2

Taille, en octets, du deuxième nombre premier de la clé. Il est utilisé uniquement pour les objets BLOB de clés privées.

Remarques

Cette structure est utilisée comme en-tête pour une mémoire tampon plus grande. Un objet BLOB à clé publique RSA (BCRYPT_RSAPUBLIC_BLOB) a le format suivant en mémoire contiguë. Tous les nombres qui suivent la structure sont au format big-endian.


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

Un objet BLOB de clé privée RSA (BCRYPT_RSAPRIVATE_BLOB) a le format suivant en mémoire contiguë. Tous les nombres qui suivent la structure sont au format big-endian.


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

Un objet BLOB de clé privée RSA complet (BCRYPT_RSAFULLPRIVATE_BLOB) a le format suivant en mémoire contiguë. Tous les nombres qui suivent la structure sont au format big-endian.

Notez que dans différentes versions de Windows, la valeur que PrivateExponent prend à partir d’un appel de BCryptExportKey peut être différente, car il existe plusieurs représentations mathématiquement équivalentes du PrivateExponent en octets cbModulus. Notamment, dans certaines versions, le PrivateExponent sera exporté modulo (Prime1 - 1) * (Prime2 - 1), et dans d’autres, il sera exporté 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
En-tête bcrypt.h

Voir aussi

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey