Статус: Участник
Группы: Участники
Зарегистрирован: 21.12.2007(UTC) Сообщений: 14
|
Здравствуйте! Подскажите, пожалуйста, какой флаг нужно выставить для CryptEncodeObject/CryptEncodeObjectEx, чтобы закодировать последовательность SET OF. Заранее благодарен за ответы.
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Напрямую одним вызовом SET OF закодировать не удастся. Есть путь из двух шагов: 1. Кодируем PKCS_ATTRIBUTE, задавая произвольный, но нормальный (с точки зрения ASN.1) OID, и нужные блобы в множество значений атрибута. 2. Декодируем созданный на первом шаге атрибут как X509_SEQUENCE_OF_ANY. На выходе будет два блоба, первый из которых является закодированным ОИДом, второй - требуемый SET OF. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
ASN.1 по-сути своей очень простая штука: любая последовательность байт кодируется в трех полях (TLV, Tag + Length + Value). Значение "Tag" и определяет что именно содержится в "Value" и имеет в длину всего 8 бит. Для кодирования любой последовательности атрибутов в "SET OF" достаточно создать массив, в котором первый байт имеет значение 0x31. Про то как правильно устанавливать длину смотрите в X.680 и X.690.
Но и, безусловно, способ предложеный Смирновым тоже может иметь место. Но вот только на мой взгляд он избыточен и затратен. Ведь по сути необходимо просто правильно поставить один байт в массиве.
|
С уважением, Юрий Строжевский |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close