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.