Diffie-Hellman Key BLOBs
BLOBs werden mit dem Diffie-Hellman-Anbieter verwendet, um Schlüssel aus dem Kryptografiedienstanbieter (Cryptographic Service Provider, CSP) zu exportieren und in diese zu importieren.
BLOBs mit öffentlichem Schlüssel
Diffie-Hellman öffentlichen Schlüsselblobsvom Typ PUBLICKEYBLOB werden verwendet, um den (G^X) mod P-Wert in einem Diffie-Hellman austauschen. Diese Schlüssel werden als Bytesequenz im folgenden Format exportiert und importiert.
PUBLICKEYSTRUC publickeystruc;
DHPUBKEY dhpubkey;
BYTE y[dhpubkey.bitlen/8]; // Where y = (G^X) mod P
In der folgenden Tabelle werden die einzelnen Komponenten des Schlüsselblobs beschrieben.
| Feld | Beschreibung |
|---|---|
| dhpubkey | Eine DHPUBKEY-Struktur. Der Magic-Member sollte auf 0x31484400. Dieser Hexadezimalwert ist die ASCII-Codierung von "DH1". |
| publickeystruc | Eine PUBLICKEYSTRUC-Struktur. |
| y | Eine BYTE-Sequenz. Der Y-Wert (G^X) mod P befindet sich direkt hinter der DHPUBKEY-Struktur und sollte immer die Länge des DHPUBKEY-Bitlenfelds (Bitlänge P) in Byte sein, geteilt durch acht. Wenn die Länge der Daten, die sich aus der Berechnung von (G^X) mod P ergeben, mindestens ein Byte kürzer als P geteilt durch acht ist, müssen die Daten mit den erforderlichen Bytes (null) aufschlossen werden, damit die Daten die gewünschte Länge haben (Little-Endian-Format). |
BLOBs für private Schlüssel
Diffie-Hellman BLOBsmit privatem Schlüssel vom Typ PRIVATEKEYBLOB werden verwendet, um die öffentlichen/privaten Informationen eines Diffie-Hellman zu speichern. Diese Schlüssel werden als Bytesequenz im folgenden Format exportiert und importiert.
PUBLICKEYSTRUC publickeystruc;
DHPUBKEY dhpubkey;
BYTE prime[dhpubkey.bitlen/8];
BYTE generator[dhpubkey.bitlen/8];
BYTE secret[dhpubkey.bitlen/8];
In der folgenden Tabelle werden die einzelnen Komponenten des Schlüsselblobs beschrieben.
| Feld | Beschreibung |
|---|---|
| dhpubkey | Eine DHPUBKEY-Struktur. Der Magic-Member muss auf 0x32484400. Dieser Hexadezimalwert ist die ASCII-Codierung von "DH2". |
| Generator | Eine BYTE-Sequenz. Der Generator, G. |
| publickeystruc | Eine PUBLICKEYSTRUC-Struktur. |
| Prime | Eine BYTE-Sequenz. Der Primmodulus P. Für diese Daten muss immer das wichtigste Bit des wichtigsten Byte auf 1 festgelegt sein. |
| secret | Eine BYTE-Sequenz. Der Geheimnis exponent, X. |
Hinweis
Der Generator und das Geheimnis müssen immer die gleiche Länge in Bytes haben. Wenn eines der Byte oder kürzer als das andere ist, muss es mit der erforderlichen Anzahl von Nullwertbytes aufschlossen werden, um sie gleich zu machen. Sowohl der Generator als auch das Geheimnis haben das Little-Endian-Format.