Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Автор: Kirill Sobolev  Цитата:А как правильно? Вот в этом и вопрос. Знаю, что UTF8String. Вы же сами и отвечаете - да, правильно UTF8String. Цитата:Кстати посмотрел квалифицированный сертификат УЦ КриптоПРО и возник вопрос: Какими указаниями руководствовались разработчики когда кодировали расширения "1.2.643.100.111" и "1.2.643.100.111" в виде значений с типом "OCTET STRING"? Нет, там тоже UTF8String
dumpasn1 : SEQUENCE { OBJECT IDENTIFIER '1 2 643 100 111' OCTET STRING, encapsulates { UTF8String '".................. CSP" (............ 3.6)' } }
В требованиях к этому расширению написано именно UTF8String, а не "OCTET STRING encapsulating UTF8String". На мой взгляд здесь должен быть чистый UTF8String. Вот и вопрос: Какими указаниями руководствовались разработчики когда кодировали расширения "1.2.643.100.111" и "1.2.643.100.111" в виде значений с типом "OCTET STRING"? |
С уважением, Юрий Строжевский |
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Какими указаниями руководствовались разработчики когда кодировали расширения "1.2.643.100.111" и "1.2.643.100.111" в виде значений с типом "OCTET STRING"?
RFC5280 Цитата:When an extension appears in a certificate, the OID appears as the field extnID and the corresponding ASN.1 DER encoded structure is the value of the octet string extnValue. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Автор: Kirill Sobolev  Цитата:Какими указаниями руководствовались разработчики когда кодировали расширения "1.2.643.100.111" и "1.2.643.100.111" в виде значений с типом "OCTET STRING"?
RFC5280 Цитата:When an extension appears in a certificate, the OID appears as the field extnID and the corresponding ASN.1 DER encoded structure is the value of the octet string extnValue. Про практику заключения расширения в OCTET STRING знал, но считал пережитком прошлого. Спасибо за упоминание RFC! |
С уважением, Юрий Строжевский |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.08.2012(UTC) Сообщений: 70 Откуда: Казань
Сказал(а) «Спасибо»: 6 раз
|
CObjectId objSubjectSignTool = new CObjectId(); objSubjectSignTool.InitializeFromValue("1.2.643.100.111"); var extSubjectSignTool = new CX509Extension();
extSubjectSignTool.Initialize(objSubjectSignTool, EncodingType.XCN_CRYPT_STRING_ANY, "Domen-KC2"); objPkcs10.X509Extensions.Add(extSubjectSignTool);
Я вот так добавлял. Но кодировка не отображает ничего хорошего в сертификате.
Такой код кому нибудь знаком???
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
IX509Extension::Initialize предполагает передачу уже закодированного расширения. Вам предварительно нужно закодировать структуру CERT_NAME_VALUE с помощью CryptEncodeObject |
|
 1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 08.08.2012(UTC) Сообщений: 70 Откуда: Казань
Сказал(а) «Спасибо»: 6 раз
|
var objSubjectSignTool = new CObjectId(); objSubjectSignTool.InitializeFromValue("1.2.643.100.111");
var objSubjectSignToolBytes = Encoding.UTF8.GetBytes("Домен-КС2").ToList(); objSubjectSignToolBytes.InsertRange(0, new byte[] { 0x0c, 0x10 });
var objSubjectSignToolValue = Encoding.Unicode.GetString(objSubjectSignToolBytes.ToArray());
var extSubjectSignTool = new CX509Extension(); extSubjectSignTool.Initialize(objSubjectSignTool, EncodingType.XCN_CRYPT_STRING_BINARY, objSubjectSignToolValue); objPkcs10.X509Extensions.Add(extSubjectSignTool);
Спасибо моему коллеге Саше. И Соболеву Кириллу. Вот получилось так. Кому надо - пользутесь.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Пожалуйста. Тогда правильнее было бы так : objSubjectSignToolBytes.InsertRange(0, new byte[] { 0x0c, (byte)objSubjectSignToolBytes.Count }); Ну и вообще учитывать Цитата:If the string contains fewer than 128 bytes, the Length field of the TLV triplet requires only one byte to specify the content length. If the string is more than 127 bytes, bit 7 of the Length field is set to 1 and bits 6 through 0 specify the number of additional bytes used to identify the content length. |
|
 2 пользователей поблагодарили Кирилл Соболев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close