Partager via


Objets blob de clés de fournisseur DSS

Les objets BLOB sont utilisés avec le fournisseur DSS ( Digital Signature Standard ) pour exporter des clés à partir du fournisseur de services de chiffrement (CSP) et les importer dans.

Objets blob à 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 magic doit avoir une valeur de 0x31535344. Ce nombre hexadécimal est l’encodage ASCII de DSS1.
g Séquence BYTE . 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 rembourré avec 0x00 octets.
p Séquence BYTE . Module premier, p. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un.
publickeystruc Structure PUBLICKEYSTRUC .
q Séquence BYTE . Nombre premier, q, 20 octets de longueur. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un.
seedstruct Structure DSSSEED . Valeurs initiales et de compteur pour la vérification des nombres premiers.
y Séquence BYTE . 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 rembourré avec 0x00 octets.

 

Notes

Les objets BLOB de clé publique ne sont pas chiffrés. Ils contiennent des clés publiques en texte clair .

 

Objets blob de clés privées

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 magic doit être défini sur 0x32535344. Ce nombre hexadécimal est l’encodage ASCII de DSS2.
g Séquence BYTE . 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 rembourré avec 0x00 octets.
publickeystruc Structure PUBLICKEYSTRUC .
p Séquence BYTE . Module premier, p. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un.
q Séquence BYTE . Le nombre premier, q. q, est de 20 octets. Le bit le plus significatif de l’octet le plus significatif doit être défini sur un.
seedstruct Structure DSSSEED . Valeurs initiales et de compteur pour la vérification des nombres premiers.
x Séquence BYTE . Exposant secret, x. Doit toujours avoir une longueur de 20 octets. Si x est inférieur à 20 octets, il doit être rembourré avec 0x00.

 

Lors de l’appel de CryptExportKey, le développeur peut choisir de chiffrer 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

L’algorithme de chiffrement et les paramètres 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 zéro est passé pour hExpKey, la clé privée est exportée sans chiffrement.

 

Attention

Il est dangereux d’exporter des clés privées sans chiffrement, car elles sont alors vulnérables à l’interception et à l’utilisation par des entités non autorisées.