BLOB-объекты Diffie-Hellman ключей

BLOB-объекты используются с поставщиком Diffie-Hellman для экспорта ключей и импорта ключей в поставщика служб шифрования (CSP).

BLOB-объекты открытого ключа

Diffie-Hellman BLOB-объекты открытого ключа, тип PUBLICKEYBLOB, используются для обмена значением мода P (G^X) в обмене ключами Diffie-Hellman. Эти ключи экспортируются и импортируются в виде последовательности байтов со следующим форматом.

PUBLICKEYSTRUC  publickeystruc; 
DHPUBKEY dhpubkey;
BYTE y[dhpubkey.bitlen/8]; // Where y = (G^X) mod P

В следующей таблице описывается каждый компонент ключевого BLOB-объекта.

Поле Описание
dhpubkey СтруктураDHPUBKEY. Для 0x31484400 нужно задать 0x31484400 магическое. Это шестнадцатеричное значение является кодировкой ASCII "DH1".
publickeystruc Структура PUBLICKEYSTRUC.
y Последовательность BYTE. Значение Y (G^X) mod P находится непосредственно после структуры DHPUBKEY и всегда должно быть длиной в байтах битлен DHPUBKEY (битовая длина P), разделенной на восемь. Если длина данных, полученных от вычисления мода G^X, составляет один или несколько байтов, чем P, разделенных на восемь, данные должны быть заполнены необходимыми байтами (нулевого значения), чтобы сделать данные требуемой длиной (маленький формат).

 

BLOB-объекты закрытого ключа

Diffie-Hellman BLOB-объекты закрытого ключа, тип PRIVATEKEYBLOB, используются для хранения общедоступной или частной информации Diffie-Hellman ключа. Эти ключи экспортируются и импортируются в виде последовательности байтов со следующим форматом.

PUBLICKEYSTRUC  publickeystruc; 
DHPUBKEY        dhpubkey;
BYTE            prime[dhpubkey.bitlen/8];
BYTE            generator[dhpubkey.bitlen/8];
BYTE            secret[dhpubkey.bitlen/8];

В следующей таблице описывается каждый компонент ключевого BLOB-объекта.

Поле Описание
dhpubkey СтруктураDHPUBKEY. Элемент магического должен быть установлен на 0x32484400. Это шестнадцатеричное значение является ASCII кодировке DH2.
генератор Последовательность BYTE. Генератор, G.
publickeystruc Структура PUBLICKEYSTRUC.
первичный Последовательность BYTE. Основной модулу, P. Эти данные всегда должны иметь самый значительный бит из наиболее значимых байтов, установленных на один.
секрет Последовательность BYTE. Экспонент секрета, X.

 

Заметка

Генератор и секрет должны всегда иметь одинаковую длину в байтах. Если одно байтовое или более короткое, чем другое, оно должно быть заполнено необходимым числом байтов нулевого значения, чтобы сделать их одинаковыми. Генератор и секрет находятся в маленьком формате.