Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Diffie-Hellman versie 3 openbare sleutel-BLObs (type PUBLICKEYBLOB) worden gebruikt om informatie over een openbare DH-sleutel te exporteren en te importeren. Ze hebben de volgende indeling:
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
Deze BLOB-indeling wordt geƫxporteerd wanneer de vlag CRYPT_BLOB_VER3 wordt gebruikt met CryptExportKey. Omdat de versie zich in de BLOB bevindt, hoeft u geen vlag op te geven bij het gebruik van deze BLOB- met CryptImportKey-.
Daarnaast wordt deze BLOB-indeling gebruikt met de functie CryptSetKeyParam wanneer de dwParam waarde KP_PUB_PARAMS wordt gebruikt om sleutelparameters in te stellen op een DH-sleutel. Dit gebeurt wanneer de vlag CRYPT_PREGEN is gebruikt om de sleutel te genereren. Wanneer deze situatie wordt gebruikt, wordt de y-waarde genegeerd en mag deze daarom niet worden opgenomen in de BLOB.
In de volgende tabel wordt elk onderdeel van de sleutel-BLOB beschreven.
| Veld | Beschrijving |
|---|---|
| blobheader | Een BLOBHEADER structuur. Het lid bType moet de waarde PUBLICKEYBLOB hebben. |
| dhpubkeyver3 | Een DHPUBKEY_VER3 structuur. Het magic lid moet worden ingesteld op 0x33484400 voor openbare sleutels. U ziet dat de hexadecimale waarde slechts een ASCII- codering van "DH3". |
| P | De P-waarde bevindt zich direct na de DHPUBKEY_VER3 structuur en moet altijd de lengte zijn, in bytes, van het DHPUBKEY_VER3bitlenP-veld (bitlengte van P) gedeeld door acht (little-endian-indeling). |
| Q | De Q-waarde bevindt zich direct na de P-waarde en moet altijd de lengte zijn in bytes van de DHPUBKEY_VER3bitlenQ veld gedeeld door acht (little-endian-indeling). Als de bitlenQ-waarde 0 is, is de waarde afwezig in de BLOB. |
| G | De G-waarde bevindt zich direct na de Q-waarde en moet altijd de lengte, in bytes, zijn van het DHPUBKEY_VER3bitlenP- veld (bitlengte van P) gedeeld door acht. Als de lengte van de gegevens een of meer bytes korter is dan P gedeeld door 8, moeten de gegevens worden opgevuld met de benodigde bytes (nulwaarde) om de gegevens de gewenste lengte te geven (little-endian-indeling). |
| J | De J-waarde bevindt zich direct na de G-waarde en moet altijd de lengte zijn in bytes van het DHPUBKEY_VER3bitlenJ-veld gedeeld door acht (little-endian-indeling). Als de bitlenQ-waarde 0 is, is de waarde afwezig in de BLOB. |
| Y | De Y-waarde (G^X) mod P bevindt zich direct na de J-waarde en moet altijd de lengte zijn in bytes van het DHPUBKEY_VER3bitlenP- veld (bitlengte van P) gedeeld door acht. Als de lengte van de gegevens die het resultaat zijn van de berekening van (G^X) mod P een of meer bytes korter is dan P gedeeld door 8, moeten de gegevens worden opgevuld met de benodigde bytes (nulwaarde) om de gegevens de gewenste lengte (little-endian-indeling) te maken. Wanneer deze structuur wordt gebruikt met CryptSetKeyParam- met de dwParam waarde KP_PUB_PARAMS, wordt deze waarde niet opgenomen in de BLOB. |
Notitie
Openbare-sleutel-BLOBS worden niet versleuteld, maar bevatten openbare sleutels in tekst zonder opmaak.