16.12.2004 19:27:52XEnroll: "Эта строка содержит непечатаемый символ" Ответов: 8
SeregaEvg
При вызове
XEnroll.CreatePKCS10

Передаю строку:
CN="Иванов Иван Иванович",O="ООО ’’Рога и копыта’’",OU="Бухгалтерия - бухгалтер",E="ivanov@roga.ru",C="Россия",S="Центральная часть",L="Москва"

Получаю исключение с сообщением: "Эта строка содержит непечатаемый символ".


В чем может быть проблема?


P.S. передавал как String и как WideString, с обрамлением значений параметров кавычками и без - получаю одно и то же исключение. Оно возникает уже после генерации ключей, когда отработал датчик случайныйх чисел "подвигайте мышкой".
 
Ответы:
17.12.2004 0:50:13mAx
>O="ООО ’’Рога и копыта’’"
А если без апострофов?
17.12.2004 9:22:49SeregaEvg
Без апострофов то же самое. Похоже ошибка вылазит при любых значениях параметров. Даже если везде по цифре поставить. Думаю, дело в UNICODE. Очень странно, в прошлой программе я пользовался этой же функцией и она работала (и до сих пор работает) на раз.

В общем, исключение вылетает на строке:
CertReq := Enroll.CreatePKCS10(DN, ’1.3.6.1.5.5.7.3.4’);

DN вида "CN=Иванов Иван Иванович,O=asd,OU=asd,E=asd,C=asd,S=asd,L=asd" вообще вызывает access violation.

Может, вместо равно надо двоеточие поставить или символ какой на конце?

И еще: нет ли у вас навскидку ссылочки на пошаговое создание запроса на сертификат с помощью CryptoAPI? Была шикарная вещь http://www.myportal.ru/res_doc3.html но сайт на днях перестал открываться. :-(((
17.12.2004 12:40:31SeregaEvg
Проблема ушла как только "...C=Россия..." была заменена на "...C=RU...". По мне - странно, что туда такой детектор вставили...

С апострофами все проходит нормально. Планирую двумя апострофами заменять кавычки.
17.12.2004 16:16:34Александр
Всё правильно, для страны отлоко 2 символа допустимы.

А поподробне про кавычки и апострофы можно?!
22.12.2004 12:13:57SeregaEvg
Извиняюсь, что ненадолго "забил на форум".

> Всё правильно, для страны только 2 символа допустимы.

Буду знать. Чего-то не очень мне везет с поиском в MSDN :-(

>А поподробне про кавычки и апострофы можно?!

Если в наименовании организации есть кавычки, то XEnroll на завершающем этапе выкидывает exception с сообщением, что в строке присутствует недопустимый символ. Как хочешь его - так и понимай. (подозреваю, что непосредственно кидает exception API CryptoPro). Самое плачевное в этом случае то, что контейнер уже создан. И он не удаляется, хотя запроса не создается (сейчас как раз пытаюсь это обойти). Так вот, если заменить кавычки на двойные апострофы, то при печати разница не так заметна, а проходит все нормально. Хотя у меня есть один сертификат, в котором есть именно кавычки в поле CN строки Subject. Как они этого добились, пока не знаю.
22.12.2004 18:26:46Александр
По поводу длин элементов DN - в базе данных crypto_pro_ra_db есть таблица NameProperties, в которой и перечисленны допустимые к использованию элементы, в т.ч. и Страна:
NamePropID DisplayOrder OID Alias DisplayName SubjectName MinLen MaxLen PropCount ObligatoryCount
---------- ------------ ------- ------- ------------- ----------- ------ ------ --------- ---------------
2 15 2.5.4.6 Country Страна/регион C 1 2 1 0
Значение поля MaxLen как раз и "вызывало" ошибку.

По поводу символа "двойнйные кавычки" ("):
Может попробовать его задваивать ("") или отказться от приведенной вами формы записи
S="Центральная часть",L="Москва"
и упростить её до
S=Центральная часть,L=Москва
т.к. символы "запятая" (,) и так являются разделителями.
22.12.2004 18:29:02Александр
Задваивать в виде
O="ООО ""Рога и копыта"""
не пробовали?
30.12.2004 15:49:51Михаил
насчет поиска в мсдн - я случайно наткнулся на этот топик, как выйти на него нормальным поиском - не знаю. Такое впечатление что ms спецально его подальше запрятала.
ms-help://MS.MSDNQTR.2003JUL.1033/security/security/name_properties.htm