| ||||
| ||||
При вызове XEnroll.CreatePKCS10 Передаю строку: CN="Иванов Иван Иванович",O="ООО ’’Рога и копыта’’",OU="Бухгалтерия - бухгалтер",E="ivanov@roga.ru",C="Россия",S="Центральная часть",L="Москва" Получаю исключение с сообщением: "Эта строка содержит непечатаемый символ". В чем может быть проблема? P.S. передавал как String и как WideString, с обрамлением значений параметров кавычками и без - получаю одно и то же исключение. Оно возникает уже после генерации ключей, когда отработал датчик случайныйх чисел "подвигайте мышкой". | ||||
Ответы: | ||||
| ||||
>O="ООО ’’Рога и копыта’’" А если без апострофов? | ||||
| ||||
Без апострофов то же самое. Похоже ошибка вылазит при любых значениях параметров. Даже если везде по цифре поставить. Думаю, дело в 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 но сайт на днях перестал открываться. :-((( | ||||
| ||||
Проблема ушла как только "...C=Россия..." была заменена на "...C=RU...". По мне - странно, что туда такой детектор вставили... С апострофами все проходит нормально. Планирую двумя апострофами заменять кавычки. | ||||
| ||||
Всё правильно, для страны отлоко 2 символа допустимы. А поподробне про кавычки и апострофы можно?! | ||||
| ||||
Извиняюсь, что ненадолго "забил на форум". > Всё правильно, для страны только 2 символа допустимы. Буду знать. Чего-то не очень мне везет с поиском в MSDN :-( >А поподробне про кавычки и апострофы можно?! Если в наименовании организации есть кавычки, то XEnroll на завершающем этапе выкидывает exception с сообщением, что в строке присутствует недопустимый символ. Как хочешь его - так и понимай. (подозреваю, что непосредственно кидает exception API CryptoPro). Самое плачевное в этом случае то, что контейнер уже создан. И он не удаляется, хотя запроса не создается (сейчас как раз пытаюсь это обойти). Так вот, если заменить кавычки на двойные апострофы, то при печати разница не так заметна, а проходит все нормально. Хотя у меня есть один сертификат, в котором есть именно кавычки в поле CN строки Subject. Как они этого добились, пока не знаю. | ||||
| ||||
По поводу длин элементов 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=Москва т.к. символы "запятая" (,) и так являются разделителями. | ||||
| ||||
Задваивать в виде O="ООО ""Рога и копыта""" не пробовали? | ||||
| ||||
насчет поиска в мсдн - я случайно наткнулся на этот топик, как выйти на него нормальным поиском - не знаю. Такое впечатление что ms спецально его подальше запрятала. ms-help://MS.MSDNQTR.2003JUL.1033/security/security/name_properties.htm | ||||