Objets BLOB de clé du fournisseur DSS
Les objets BLOB sont utilisés avec le fournisseur DSS ( Digital Signature standard ) pour exporter les clés et importer les clés dans, le fournisseur de services de chiffrement (CSP).
Objets BLOB de clé publique
Une clé publique DSS est exportée et importée en tant qu’objet BLOB, une séquence d’octets structurée comme suit.
PUBLICKEYSTRUC publickeystruc;
DSSPUBKEY dsspubkey;
BYTE p[dsspubkey.bitlen/8];
BYTE q[20];
BYTE g[dsspubkey.bitlen/8];
BYTE y[dsspubkey.bitlen/8];
DSSSEED seedstruct;
Le tableau suivant décrit ces composants. Toutes les valeurs sont au format Little endian .
| Champ | Description |
|---|---|
| dsspubkey | Structure DSSPUBKEY . Le membre magique doit avoir la valeur 0x31535344. Ce nombre hexadécimal est l’encodage ASCII de DSS1. |
| g | Séquence d' octets . Générateur, g. Doit avoir la même longueur que p. S’il n’est pas de la même longueur que p, il doit être rempli avec 0x00 octets. |
| p | Séquence d' octets . Le modulo principal, p. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un. |
| publickeystruc | Structure PUBLICKEYSTRUC . |
| q | Séquence d' octets . La longueur prime, q, 20 octets. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un. |
| seedstruct | Structure DSSSEED . Valeurs de départ et de compteur pour la vérification des premiers. |
| y | Séquence d' octets . Clé publique, y. Doit avoir la même longueur que p. S’il n’est pas de la même longueur que p, il doit être rempli avec 0x00 octets. |
Notes
Les objets BLOB de clé publique ne sont pas chiffrés. Elles contiennent des clés publiques sous forme de texte en clair .
Objets BLOB de clé privée
Une clé privée DSS est exportée et importée sous la forme d’une séquence d’octets structurée comme suit.
PUBLICKEYSTRUC publickeystruc;
DSSPUBKEY dsspubkey;
BYTE p[dsspubkey.bitlen/8];
BYTE q[20];
BYTE g[dsspubkey.bitlen/8];
BYTE x[20];
DSSSEED seedstruct;
Le tableau suivant décrit chaque composant. Toutes les valeurs sont au format Little endian .
| Champ | Description |
|---|---|
| dsspubkey | Structure DSSPUBKEY . Le membre magique doit être défini sur 0x32535344. Ce nombre hexadécimal est l’encodage ASCII de DSS2. |
| g | Séquence d' octets . Générateur, g. Doit avoir la même longueur que p. S’il n’est pas de la même longueur que p, il doit être rempli avec 0x00 octets. |
| publickeystruc | Structure PUBLICKEYSTRUC . |
| p | Séquence d' octets . Le modulo principal, p. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un. |
| q | Séquence d' octets . Le premier, le q. q a une longueur de 20 octets. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un. |
| seedstruct | Structure DSSSEED . Valeurs de départ et de compteur pour la vérification des premiers. |
| x | Séquence d' octets . Exposant secret, x. Doit toujours avoir une longueur de 20 octets. Si x a une longueur inférieure à 20 octets, elle doit être remplie avec 0x00. |
Lors de l’appel de CryptExportKey, le développeur peut choisir de chiffrer ou non la clé. Le PRIVATEKEYBLOB est chiffré si le paramètre hExpKey contient un handle valide pour une clé de session. Tout sauf la partie PUBLICKEYSTRUC de l’objet blob est chiffré.
Notes
Les paramètres d’algorithme de chiffrement et de clé de chiffrement ne sont pas stockés avec l’objet BLOB de clé privée. L’application doit gérer et stocker ces informations. Si la valeur zéro est passée pour hExpKey, la clé privée est exportée sans chiffrement.
Attention
Il est dangereux d’exporter les clés privées sans chiffrement, car elles sont ensuite vulnérables à l’interception et à l’utilisation par des entités non autorisées.