Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DSS Version 3 Public Key BLOBs vom Typ PUBLICKEYBLOB werden verwendet, um Informationen über einen öffentlichen DH-Schlüssel zu exportieren und zu importieren. Sie haben das folgende Format:
BLOBHEADER blobheader;
// As explained under "Data Structures"
DSSPUBKEY_VER3 dsspubkeyver3;
BYTE p[dsspubkeyver3.bitlenP/8];
// Where P is the prime modulus
BYTE q[dsspubkeyver3.bitlenQ/8];
// Where Q is a large factor of P-1
BYTE g[dsspubkeyver3.bitlenP/8];
// Where G is the generator parameter
BYTE j[dsspubkeyver3.bitlenJ/8];
// Where J is (P-1)/Q
BYTE y[dsspubkeyver3.bitlenP/8];
// Where Y is (G^X) mod P
Dieses BLOB--Format wird exportiert, wenn das CRYPT_BLOB_VER3 Flag mit CryptExportKey-verwendet wird. Da sich die Version im BLOB befindet, muss bei Verwendung dieses BLOB mit CryptImportKeykeine Kennzeichnung angegeben werden.
Darüber hinaus wird dieses BLOB-Format mit der funktion CryptSetKeyParam verwendet, wenn der dwParam Wert verwendet wird, KP_PUB_PARAMS zum Festlegen von Schlüsselparametern für einen DSS-Schlüssel verwendet wird. Dies geschieht, wenn das CRYPT_PREGEN-Flag verwendet wurde, um den Schlüssel zu generieren. Bei Verwendung in dieser Situation wird der y-Wert ignoriert und sollte daher nicht in das BLOB eingeschlossen werden.
In der folgenden Tabelle werden die einzelnen Komponenten des Schlüssel-BLOB beschrieben.
Feld | Beschreibung |
---|---|
Blobheader | Eine BLOBHEADER- Struktur. Der bType Member muss den Wert PUBLICKEYBLOB aufweisen. |
Dsspubkeyver3 | Eine DSSPUBKEY_VER3 Struktur. Das magische Mitglied sollte für öffentliche Schlüssel auf "DSS3" (0x33535344) festgelegt werden. Beachten Sie, dass der Hexadezimalwert nur ein ASCII- Codierung von "DSS3" ist. |
P | Der P-Wert befindet sich direkt nach der DSSPUBKEY_VER3 Struktur und sollte immer die Länge des DSSPUBKEY_VER3 BitlenP- Felds (Bitlänge P) dividiert durch acht (little-endian Format) sein. |
Q | Der Q-Wert befindet sich direkt hinter dem P-Wert und sollte immer die Länge in Byte des DSSPUBKEY_VER3bitlenQ- Member dividiert durch acht (little-endian Format) sein. |
G | Der G-Wert befindet sich direkt hinter dem Q-Wert und sollte immer die Länge des DSSPUBKEY_VER3bitlenP Members (Bitlänge von P) dividiert durch acht sein. Wenn die Länge der Daten ein oder mehrere Bytes kürzer als P ist, dividiert durch 8, müssen die Daten mit den erforderlichen Bytes (von Nullwert) aufgefüllt werden, damit die Daten die gewünschte Länge (little-endian Format) aufweisen. |
J | Der J-Wert befindet sich direkt hinter dem G-Wert und sollte immer die Länge in Byte des DSSPUBKEY_VER3bitlenJ Member dividiert durch acht (little-endian Format) sein. Wenn der BitlenQ-Wert 0 ist, fehlt der Wert im BLOB. |
Y | Der Y-Wert (G^X) mod P befindet sich direkt hinter dem J-Wert und sollte immer die Länge des DSSPUBKEY_VER3bitlenP Member (Bitlänge von P) dividiert durch acht sein. Wenn die Länge der Daten, die aus der Berechnung von (G^X) mod P resultiert, mindestens ein Bytes kürzer als P dividiert durch 8 ist, müssen die Daten mit den erforderlichen Bytes (von Nullwert) aufgefüllt werden, damit die Daten die gewünschte Länge (little-endian Format) aufweisen.
Hinweis: Wenn diese Struktur mit CryptSetKeyParam mit dem dwParam Wert KP_PUB_PARAMS verwendet wird, ist dieser Wert nicht im BLOB enthalten. |
Anmerkung
Öffentliche Schlüssel-BLOBs sind nicht verschlüsselt, enthalten aber öffentliche Schlüssel in Nur-Text-Form.