BLOB-объекты с ключами поставщика DSS
Большие двоичные объекты используются с поставщиком стандарта цифровой подписи (DSS) для экспорта ключей из поставщика служб шифрования (CSP) и их импорта в него.
Blob-объекты с открытым ключом
Открытый ключ DSS экспортируется и импортируется в виде большого двоичного объекта. Последовательность байтов, структурированная следующим образом.
PUBLICKEYSTRUC publickeystruc;
DSSPUBKEY dsspubkey;
BYTE p[dsspubkey.bitlen/8];
BYTE q[20];
BYTE g[dsspubkey.bitlen/8];
BYTE y[dsspubkey.bitlen/8];
DSSSEED seedstruct;
В следующей таблице описаны эти компоненты. Все значения имеют формат с минимальным эндианом .
Поле | Описание |
---|---|
dsspubkey | Структура DSSPUBKEY . Магический член должен иметь значение 0x31535344. Это шестнадцатеричное число является кодировкой ASCII DSS1. |
н | Последовательность BYTE . Генератор, g. Должен иметь ту же длину, что и p. Если длина не совпадает с длиной p, то она должна быть заполнена 0x00 байтами. |
p | Последовательность BYTE . Модуль prime, p. Для наиболее значительного бита самого значительного байта необходимо задать значение 1. |
publickeystruc | Структура PUBLICKEYSTRUC . |
q | Последовательность BYTE . Простой, q, 20 байт в длину. Для наиболее значительного бита самого значительного байта необходимо задать значение 1. |
seedstruct | Структура DSSSEED . Начальные значения и значения счетчиков для проверки простого числа. |
y | Последовательность BYTE . Открытый ключ, y. Должен иметь ту же длину, что и p. Если длина не совпадает с длиной p, то она должна быть заполнена 0x00 байтами. |
Примечание
BLOB-объекты с открытым ключом не шифруются. Они содержат открытые ключи в виде открытого текста .
BLOB-объекты с закрытым ключом
Закрытый ключ DSS экспортируется и импортируется в виде последовательности байтов, структурированных следующим образом.
PUBLICKEYSTRUC publickeystruc;
DSSPUBKEY dsspubkey;
BYTE p[dsspubkey.bitlen/8];
BYTE q[20];
BYTE g[dsspubkey.bitlen/8];
BYTE x[20];
DSSSEED seedstruct;
В следующей таблице описаны все компоненты. Все значения имеют формат с минимальным эндианом .
Поле | Описание |
---|---|
dsspubkey | Структура DSSPUBKEY . Магический элемент должен иметь значение 0x32535344. Это шестнадцатеричное число является кодировкой ASCII DSS2. |
н | Последовательность BYTE . Генератор, g. Должен иметь ту же длину, что и p. Если длина не совпадает с длиной p, то она должна быть заполнена 0x00 байтами. |
publickeystruc | Структура PUBLICKEYSTRUC . |
p | Последовательность BYTE . Модуль prime, p. Для наиболее значительного бита самого значительного байта необходимо задать значение 1. |
q | Последовательность BYTE . Простой, q. q имеет длину 20 байт. Для наиболее значительного бита самого значительного байта необходимо задать значение 1. |
seedstruct | Структура DSSSEED . Начальные значения и значения счетчиков для проверки простого числа. |
x | Последовательность BYTE . Степень секрета x. Длина всегда должна быть 20 байт. Если x меньше 20 байт в длину, его необходимо заполнить 0x00. |
При вызове CryptExportKey разработчик может выбрать, следует ли шифровать ключ. PrivateKEYBLOB шифруется, если параметр hExpKey содержит допустимый дескриптор ключа сеанса. Все, кроме части PUBLICKEYSTRUC БОЛЬШОго двоичного объекта, шифруется.
Примечание
Параметры алгоритма шифрования и ключа шифрования не хранятся вместе с BLOB-объектом закрытого ключа. Приложение должно управлять и хранить эти сведения. Если для hExpKey передается ноль, закрытый ключ будет экспортирован без шифрования.
Внимание!
Экспортировать закрытые ключи без шифрования опасно, так как они становятся уязвимыми для перехвата и использования неавторизованными сущностями.