Udostępnij przez


BAZY danych DSS w wersji 3 BLOBs klucza publicznego

Usługa DSS w wersji 3 BLOBs klucza publicznego typu PUBLICKEYBLOB służy do eksportowania i importowania informacji o kluczu publicznym DH. Mają one następujący 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

Ten formatobiektów blobjest eksportowany, gdy flaga CRYPT_BLOB_VER3 jest używana z CryptExportKey. Ponieważ wersja znajduje się w obiekcie BLOB, nie ma potrzeby określania flagi w przypadku używania tego obiektu blOB z CryptImportKey.

Ponadto ten format obiektu BLOB jest używany z funkcją CryptSetKeyParam, gdy wartość dwParam KP_PUB_PARAMS jest używana do ustawiania kluczowych parametrów w kluczu DSS. Dzieje się tak, gdy flaga CRYPT_PREGEN została użyta do wygenerowania klucza. W przypadku użycia w tej sytuacji wartość y jest ignorowana i dlatego nie powinna być uwzględniana w obiekcie blob.

W poniższej tabeli opisano każdy składnik klucza obiektu BLOB.

Pole Opis
Obiekt blobheader StrukturaBLOBHEADER. Element członkowski bType musi mieć wartość PUBLICKEYBLOB.
Dsspubkeyver3 Struktura DSSPUBKEY_VER3. Element członkowski magic powinien mieć wartość "DSS3" (0x33535344) dla kluczy publicznych. Zwróć uwagę, że wartość szesnastkowa to tylko kodowanie ASCII "DSS3".
P Wartość P znajduje się bezpośrednio po strukturze DSSPUBKEY_VER3 i zawsze powinna być długością w bajtach pola DSSPUBKEY_VER3 bitlenP (długość bitów P) podzieloną przez osiem (format).
Q Wartość Q znajduje się bezpośrednio po wartości P i zawsze powinna być długością w bajtach elementu członkowskiegoDSSPUBKEY_VER3 bitlenQ podzielonego przez osiem (format little-endian).
G Wartość G znajduje się bezpośrednio po wartości Q i zawsze powinna być długością w bajtach DSSPUBKEY_VER3bitlenP składowej (długość bitów P) podzieloną przez osiem. Jeśli długość danych jest jedną lub więcej bajtów krótsza niż P podzielona przez 8, dane muszą być wypełnione przy użyciu niezbędnych bajtów (z wartością zerową), aby dane o żądanej długości (formacie mało endian).
J Wartość J znajduje się bezpośrednio po wartości G i zawsze powinna być długością w bajtach elementu członkowskiegoDSSPUBKEY_VER3 bitlenJ podzielonego przez osiem (format little-endian). Jeśli wartość bitlenQ wynosi 0, wartość jest nieobecna w obiekcie BLOB.
Y Wartość Y (G^X) mod P znajduje się bezpośrednio po wartości J i zawsze powinna być długością w bajtach DSSPUBKEY_VER3bitlenP składowej (długość bitów P) podzieloną przez osiem. Jeśli długość danych wynikających z obliczenia (G^X) mod P jest jedną lub więcej bajtów krótszych niż P podzielona przez 8, dane muszą być wypełnione przy użyciu niezbędnych bajtów (zero wartości), aby dane o żądanej długości (mało endian format). Uwaga: Gdy ta struktura jest używana z CryptSetKeyParam z wartością dwParam KP_PUB_PARAMS, ta wartość nie jest uwzględniana w obiekcie BLOB.

 

Nuta

BLOB klucza publicznego nie są szyfrowane, ale zawierają klucze publiczne w postaci zwykłego tekstu.