Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:13 0d 31 30 32 32 32 30 32 37 36 39 31 33 37 Это очень похоже на printable string, так что CryptDecodeObject(.., X509_ANY_STRING, ..) должно помочь. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.12.2014(UTC) Сообщений: 23  Сказал(а) «Спасибо»: 9 раз
|
Попробовал напрямую в ASCII Интересный результат получился: Т.е. со смелостью можно отбрасывать первые 4 бита? Да и последствия собственноручных перекодировок? По структуре в краткой форме где можно почитать? Автор: Kirill Sobolev  Цитата:13 0d 31 30 32 32 32 30 32 37 36 39 31 33 37 Это очень похоже на printable string, так что CryptDecodeObject(.., X509_ANY_STRING, ..) должно помочь. У меня что то не срастается=( Отредактировано пользователем 19 апреля 2015 г. 16:22:34(UTC)
| Причина: Бит не так посчитал=)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Т.е. со смелостью можно отбрасывать первые 4 бита? Да и последствия собственноручных перекодировок? В этой строке первый байт - тип (тег), 2й байт - длина. Но длина может занимать больше, чем один байт, хотя к ОГРН и ИНН это, конечно, не относится. Подробнее можно почитать например здесь. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.12.2014(UTC) Сообщений: 23  Сказал(а) «Спасибо»: 9 раз
|
Хочу сегодня добить, но голова перестает работать. Ума не приложу как с этими данными бороться, что бы все в одну функцию уложить? . Код:
// E szOID_RSA_emailAddr Only IA5
// Email szOID_RSA_emailAddr Only IA5
// C szOID_COUNTRY_NAME Only Printable
// DC szOID_DOMAIN_COMPONENT IA5, UTF8
Проверку через CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG делать? Отредактировано пользователем 19 апреля 2015 г. 22:42:18(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
 1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.12.2014(UTC) Сообщений: 23  Сказал(а) «Спасибо»: 9 раз
|
Кодировку, что бы Код:
// E szOID_RSA_emailAddr Only IA5
// Email szOID_RSA_emailAddr Only IA5
// C szOID_COUNTRY_NAME Only Printable
// DC szOID_DOMAIN_COMPONENT IA5, UTF8
Что бы в читабельный вид преобразовать. Цитата:// Note, T61 is selected instead of Unicode if // CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG is set and all the unicode // characters are <= 0xFF.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Это все тоже в OtherName в SAN содержится? |
|
 1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.12.2014(UTC) Сообщений: 23  Сказал(а) «Спасибо»: 9 раз
|
Нет из Subject хотел вытащить. Замудрил чего то=)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
 1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.12.2014(UTC) Сообщений: 23  Сказал(а) «Спасибо»: 9 раз
|
Что то я понять не могу по поводу получения серийного номера: Код:function SerialNumber( SN : CRYPT_INTEGER_BLOB ) : String;
begin
SetLength( Result, SN.cbData * 2 );
BinToHex(PAnsiChar( SN.pbData ), PWideChar( Result ), SN.cbData );
end;
Передаю в нее CertContext.pCertInfo.SerialNumber Функция BinToHex стандартная: Цитата:procedure BinToHex(const Buffer: TBytes; BufOffset: Integer; var Text: TBytes; TextOffset: Integer; Count: Integer); procedure BinToHex(Buffer: PAnsiChar; Text: PAnsiChar; BufSize: Integer); procedure BinToHex(Buffer: PAnsiChar; Text: PWideChar; BufSize: Integer); procedure BinToHex(var Buffer; Text: PWideChar; BufSize: Integer); procedure BinToHex(var Buffer; Text: PAnsiChar; BufSize: Integer); procedure BinToHex(Buffer: Pointer; Text: PWideChar; BufSize: Integer); procedure BinToHex(Buffer: Pointer; Text: PAnsiChar; BufSize: Integer); Код:procedure BinToHex(Buffer: PAnsiChar; Text: PWideChar; BufSize: Integer);
const
Convert: array[0..15] of WideChar = '0123456789ABCDEF';
var
I: Integer;
begin
for I := 0 to BufSize - 1 do
begin
Text[0] := Convert[Byte(Buffer[I]) shr 4];
Text[1] := Convert[Byte(Buffer[I]) and $F];
Inc(Text, 2);
end;
end;
Получает, но выдает ошибку external exception c0000008 в user32.dll  Отредактировано пользователем 22 апреля 2015 г. 8:40:45(UTC)
| Причина: Не указана
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close