Partager via


Objets blob de clé de fournisseur DSS

objets blob sont utilisés avec le fournisseur Digital Signature Standard (DSS) pour exporter des clés depuis et importer des clés dans, le fournisseur de services de chiffrement (CSP).

Objets blob de clé publique

Une DSS clé publique est exportée et importée en tant qu’objet BLOB, une séquence d’octets structurés 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 une valeur de 0x31535344. Ce nombre hexadécimal est l’encodage ASCII de DSS1.
g Séquence de BYTE. Le générateur, g. Doit être de la même longueur que p. S’il n’est pas de même longueur que p, il doit être rembourré avec 0x00 octets.
p Séquence de BYTE. Le modulus 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 de 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 StructureDSSSEED. Valeurs de départ et de compteur pour la vérification des primes.
y Séquence de BYTE. Clé publique, y. Doit être de même longueur que p. S’il n’est pas de même longueur que p, il doit être rembourré avec 0x00 octets.

 

Note

objets blob de clé publique ne sont pas chiffrés. Ils contiennent des clés publiques sous forme de texte brut.

 

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

 

Lorsque vous appelez CryptExportKey, le développeur peut choisir de chiffrer la clé. Le PRIVATEKEYBLOB est chiffré si le paramètre hExpKey contient un handle valide sur une clé de session. Tout, mais la partie PUBLICKEYSTRUC de l’objet BLOB est chiffrée.

Note

L’algorithme de chiffrement et les paramètres de clé de chiffrement ne sont pas stockés avec le 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.

 

Prudence

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.