Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Запись в расширение сертификата строки, содержащей русские символы
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.10.2008(UTC) Сообщений: 70
|
Есть придуманное расширение для сертификата - роль пользователя. Пытаюсь записать ее, но получаю вместо русских букв крокозябликов, уж извините. Код:
char *strRoles= new char [sUserRoles.GetLength()+1];
strcpy(strRoles, certInfo.sUserRoles);
CERT_NAME_VALUE roles;
roles.dwValueType = CERT_RDN_UNICODE_STRING;
roles.Value.cbData = sUserRoles.GetLength()+1;
roles.Value.pbData = (PBYTE)strRoles;
CryptEncodeObject(APL_ENCODING_TYPE, X509_UNICODE_ANY_STRING, &roles,
NULL, &cbExtEncodedRole);
pbExtEncodedRole= new BYTE [cbExtEncodedRole];
CryptEncodeObject(APL_ENCODING_TYPE, X509_UNICODE_ANY_STRING, &roles,
pbExtEncodedRole, &cbExtEncodedRole);
//запись ролей
CertExtension[CertInfo.cExtension].pszObjId= szOID_USER_ROLE_SET;
CertExtension[CertInfo.cExtension].fCritical= FALSE;
CertExtension[CertInfo.cExtension].Value.cbData = cbExtEncodedRole;
CertExtension[CertInfo.cExtension].Value.pbData = pbExtEncodedRole;
CertInfo.cExtension++;
Может, что то не так делаю?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
А в каком месте эти крокозяблики видны? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.10.2008(UTC) Сообщений: 70
|
Открываю сертификат, смотрю его расширения. Отображаются точки в значении. Если Записывать английскими буквами, то все нормально
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
потому что "char *strRoles" - не юникодная строка, соответственно и окно ее так воспринимает. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.10.2008(UTC) Сообщений: 70
|
Попробовал вот так (подобным образом я записывал русские буквы в основные поля сертификата) Код: WCHAR* unicodeConvertedString = T2W(certInfo.sUserRoles.GetBuffer());
certInfo.sUserRoles.ReleaseBuffer();
CERT_NAME_VALUE roles;
roles.dwValueType = CERT_RDN_UNICODE_STRING;
roles.Value.cbData = strlen(certInfo.sUserRoles)*2;
roles.Value.pbData = (BYTE*)(unicodeConvertedString);
CryptEncodeObject(APL_ENCODING_TYPE, X509_UNICODE_ANY_STRING, &roles,
NULL, &cbExtEncodedRole);
pbExtEncodedRole= new BYTE [cbExtEncodedRole];
CryptEncodeObject(APL_ENCODING_TYPE, X509_UNICODE_ANY_STRING, &roles,
pbExtEncodedRole, &cbExtEncodedRole);
//запись ролей
CertExtension[CertInfo.cExtension].pszObjId= szOID_USER_ROLE_SET;
CertExtension[CertInfo.cExtension].fCritical= FALSE;
CertExtension[CertInfo.cExtension].Value.cbData = cbExtEncodedRole;
CertExtension[CertInfo.cExtension].Value.pbData = pbExtEncodedRole;
Ну так тоже не показывает
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
можно посмотреть на оба сертифката, с английскими и русскими буквами? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.10.2008(UTC) Сообщений: 70
|
К сожалению сейчас не могу, но при первой возможности выложу, спасибо.
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
Запись в расширение сертификата строки, содержащей русские символы
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close