Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Diffie-Hellman verze 3 blob veřejných klíčů (typ PUBLICKEYBLOB) slouží k exportu a importu informací o veřejném klíči DH. Mají následující formát:
BLOBHEADER blobheader;
// As explained under "Data Structures"
DHPUBKEY_VER3 dhpubkeyver3;
BYTE p[dhpubkeyver3.bitlenP/8];
// Where P is the prime modulus
BYTE q[dhpubkeyver3.bitlenQ/8];
// Where Q is a large factor of P-1
BYTE g[dhpubkeyver3.bitlenP/8];
// Where G is the generator parameter
BYTE j[dhpubkeyver3.bitlenJ/8];
// Where J is (P-1)/Q
BYTE y[dhpubkeyver3.bitlenP/8];
// Where Y is (G^X) mod P
Tento formát objektu blob se exportuje při použití příznaku CRYPT_BLOB_VER3 s CryptExportKey. Vzhledem k tomu, že verze je v objektu BLOB, není nutné při použití tohoto objektu BLOB s CryptImportKey.
Kromě toho se tento formát objektu blob používá s funkcí CryptSetKeyParam, když se k nastavení klíčových parametrů klíče pro klíč DH používá hodnota dwParam KP_PUB_PARAMS. To se provede, když se k vygenerování klíče použije příznak CRYPT_PREGEN. Při použití v této situaci je hodnota y ignorována, a proto by neměla být zahrnuta do objektu BLOB.
Následující tabulka popisuje každou komponentu klíčového objektu BLOB.
| Pole | Popis |
|---|---|
| Blobheader | Struktura BLOBHEADER. bType člen musí mít hodnotu PUBLICKEYBLOB. |
| dhpubkeyver3 | Struktura DHPUBKEY_VER3. Člen magic by měl být nastavený na 0x33484400 pro veřejné klíče. Všimněte si, že šestnáctková hodnota je jen kódování ASCII "DH3". |
| P | Hodnota P se nachází přímo za strukturou DHPUBKEY_VER3 a vždy by měla být délka DHPUBKEY_VER3bitlenP pole (bitová délka P) dělená osmi (little-endian formát). |
| Q | Hodnota Q se nachází přímo za hodnotou P a vždy by měla být délka v bajtech DHPUBKEY_VER3bitlenQ pole děleno osmi (little-endian format). Pokud je hodnota bitlenQ 0, hodnota chybí v objektu BLOB. |
| G | Hodnota G se nachází přímo za hodnotou Q a vždy by měla být délka DHPUBKEY_VER3bitlenP pole (bitová délka P) děleno osmi. Pokud je délka dat jedna nebo více bajtů kratší než P dělená hodnotou 8, musí být data vycpaná potřebnými bajty (nulové hodnoty), aby data byla požadovaná délka (malý-endian formát). |
| J | Hodnota J se nachází přímo za hodnotou G a měla by vždy být délka v bajtech DHPUBKEY_VER3bitlenJ pole děleno osmi (malý-endian formát). Pokud je hodnota bitlenQ 0, hodnota chybí v objektu BLOB. |
| Y | Hodnota Y (G^X) mod P je umístěna přímo za hodnotou J a vždy by měla být délka v bajtech DHPUBKEY_VER3bitlenP pole (délka bitu P) děleno osmi. Pokud je délka dat, která jsou výsledkem výpočtu (G^X) mod P, jeden nebo více bajtů kratší než P děleno 8, musí být data vycpaná potřebnými bajty (nulové hodnoty), aby data byla požadovaná délka (malý-endian formát). Pokud se tato struktura používá s CryptSetKeyParam s hodnotou dwParam KP_PUB_PARAMS, tato hodnota není zahrnuta do objektu BLOB. |
Poznámka
Objekty BLOB veřejného klíče nejsou šifrované, ale obsahují veřejné klíče ve formátu prostého textu.