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.