Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline bargof  
#1 Оставлено : 18 февраля 2012 г. 19:18:06(UTC)
bargof

Статус: Новичок

Группы: Участники
Зарегистрирован: 18.02.2012(UTC)
Сообщений: 2

пытаюсь сделать модуль печати сертификатов свой

затык сейчас в расшифровке расширений сертификата

хочу получить норм текст как certutil выдает:
Код:
Certificate Extensions: 8
    2.5.29.19: Flags = 1(Critical), Length = 2
    Основные ограничения
        Тип субъекта=Конечный субъект
        Ограничение на длину пути=Отсутствует

    0000  30 00                                              0.

    2.5.29.32: Flags = 0, Length = 11
    Политики сертификата
        [1]Политика сертификата:
             Идентификатор политики=1.2.643.3.61.502710.1.2.2

    0000  30 0f 30 0d 06 0b 2a 85  03 03 3d 9e d7 36 01 02   0.0...*...=..6..
    0010  02                                                 .

    2.5.29.17: Flags = 0, Length = 7a
    Дополнительное имя субъекта
        Другое имя:
             T=13 09 33 32 32 31 33 30 36 35 38
        URL=0
        Другое имя:
             1.2.643.3.131.1.1=13 0a 37 37 33 35 30 39 36 33 35 38
        Другое имя:
             1.2.643.3.61.502710.1.7=13 09 37 37 33 35 30 31 30 30 31
        Другое имя:
             1.2.643.3.61.502710.1.5=13 0b 30 33 37 33 32 30 30 31 33 36 39
        Другое имя:
             1.2.643.1.12345.1=13 00
308.984.0: 0x80040154 (-2147221164)

    0000  30 78 a0 12 06 03 55 04  0c a0 0b 13 09 33 32 32   0x....U......322
    0010  31 33 30 36 35 38 86 01  30 a0 18 06 08 2a 85 03   130658..0....*..
    0020  03 81 03 01 01 a0 0c 13  0a 37 37 33 35 30 39 36   .........7735096
    0030  33 35 38 a0 19 06 0a 2a  85 03 03 3d 9e d7 36 01   358....*...=..6.
    0040  07 a0 0b 13 09 37 37 33  35 30 31 30 30 31 a0 1b   .....773501001..
    0050  06 0a 2a 85 03 03 3d 9e  d7 36 01 05 a0 0d 13 0b   ..*...=..6......
    0060  30 33 37 33 32 30 30 31  33 36 39 a0 0d 06 07 2a   03732001369....*
    0070  85 03 01 e0 39 01 a0 02  13 00                     ....9.....

    2.5.29.15: Flags = 1(Critical), Length = 4
    Использование ключа
        Цифровая подпись, Неотрекаемость, Шифрование ключей, Согласование ключей (e8)

    0000  03 02 03 e8                                        ....

    2.5.29.37: Flags = 0, Length = 3c
    Улучшенный ключ
        Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)
        Неизвестное использование ключа (1.2.643.3.61.502710.1.6.3.4.1.1)
        Неизвестное использование ключа (1.2.643.3.61.502710.1.6.3.4.1.2)
        Неизвестное использование ключа (1.2.643.3.61.502710.1.6.3.4.1.4)

    0000  30 3a 06 08 2b 06 01 05  05 07 03 02 06 0e 2a 85   0:..+.........*.
    0010  03 03 3d 9e d7 36 01 06  03 04 01 01 06 0e 2a 85   ..=..6........*.
    0020  03 03 3d 9e d7 36 01 06  03 04 01 02 06 0e 2a 85   ..=..6........*.
    0030  03 03 3d 9e d7 36 01 06  03 04 01 04               ..=..6......

    2.5.29.35: Flags = 0, Length = 18
    Идентификатор ключа центра сертификатов
        Идентификатор ключа=07 b5 79 b7 01 3a 0c 81 bd 25 81 73 ab 1a 40 e9 58 c3 f3 4d

    0000  30 16 80 14 07 b5 79 b7  01 3a 0c 81 bd 25 81 73   0.....y..:...%.s
    0010  ab 1a 40 e9 58 c3 f3 4d                            ..@.X..M

    2.5.29.31: Flags = 0, Length = 5d
    Точки распространения списков отзыва (CRL)
        [1]Точка распределения списка отзыва (CRL)
             Имя точки распространения:
                  Полное имя:
                       URL=http://dc.uc-sfsfk.local/crl/current.crl
        [2]Точка распределения списка отзыва (CRL)
             Имя точки распространения:
                  Полное имя:
                       URL=http://crl.roskazna.ru/crl/last.crl

    0000  30 5b 30 2e a0 2c a0 2a  86 28 68 74 74 70 3a 2f   0[0..,.*.(http:/
    0010  2f 64 63 2e 75 63 2d 73  66 73 66 6b 2e 6c 6f 63   /dc.uc-sfsfk.loc
    0020  61 6c 2f 63 72 6c 2f 63  75 72 72 65 6e 74 2e 63   al/crl/current.c
    0030  72 6c 30 29 a0 27 a0 25  86 23 68 74 74 70 3a 2f   rl0).'.%.#http:/
    0040  2f 63 72 6c 2e 72 6f 73  6b 61 7a 6e 61 2e 72 75   /crl.roskazna.ru
    0050  2f 63 72 6c 2f 6c 61 73  74 2e 63 72 6c            /crl/last.crl

    2.5.29.14: Flags = 0, Length = 16
    Идентификатор ключа субъекта
        af e5 5b f0 d9 4e cd af 3a 46 e2 85 02 56 1c 47 51 4d 2a 35

    0000  04 14 af e5 5b f0 d9 4e  cd af 3a 46 e2 85 02 56   ....[..N..:F...V
    0010  1c 47 51 4d 2a 35                                  .GQM*5


пока дошел до получения массива расширений сертификата либо

Код:
    0000  30 3a 06 08 2b 06 01 05  05 07 03 02 06 0e 2a 85   0:..+.........*.
    0010  03 03 3d 9e d7 36 01 06  03 04 01 01 06 0e 2a 85   ..=..6........*.
    0020  03 03 3d 9e d7 36 01 06  03 04 01 02 06 0e 2a 85   ..=..6........*.
    0030  03 03 3d 9e d7 36 01 06  03 04 01 04               ..=..6......

таких строк как certutil выдает из него

Код:
var
  pContext: PCCERT_CONTEXT;
  M: TMemoryStream;
  i, j, FileListi: integer;
  arExtension: array of CERT_EXTENSION;
  arAltNameEntry: array of CERT_ALT_NAME_ENTRY;
  res: bool;
  szOID: LPSTR;
  pExtension: PCERT_EXTENSION;
  cbStructInfo, pvStructInfo: Cardinal;
  AltNameInfo: PCERT_ALT_NAME_INFO;

begin
    for FileListi:=0 to CheckListBox1.Items.Count-1 do
    begin
      if CheckListBox1.Checked[FileListi] then
      try
        M:=TMemoryStream.Create;
        M.LoadFromFile(edit1.text+'\'+CheckListBox1.Items.Strings[FileListi]);
        pContext:=CertCreateCertificateContext(X509_ASN_ENCODING or
            PKCS_7_ASN_ENCODING, M.Memory, M.Size);
        if Assigned(pContext) then
        try
          pointer(arExtension):= pContext.pCertInfo.rgExtension;
          memo1.Lines.Add(IntToStr(pContext.pCertInfo.cExtension));
          for i:=0 to pContext.pCertInfo.cExtension-1 do
            begin
              memo1.Lines.Add('/////////////////////////////////////');

              memo1.Lines.Add(arExtension[i].pszObjId);
              memo1.Lines.Add(BoolToStr(arExtension[i].fCritical, true));
              memo1.Lines.Add(IntToStr(arExtension[i].Value.cbData));

              memo1.Lines.Add(ByteArrayToStrInv(arExtension[i].Value.pbData, arExtension[i].Value.cbData));
            end;

        finally
          if not CertFreeCertificateContext(pContext) then
            ShowMessage(SysErrorMessage(GetLastError));
        end;
      finally
        M.Free;
      end;
    end;
end;


в результате получаю:
Код:
/////////////////////////////////////
2.5.29.19
True
2
3000
/////////////////////////////////////
2.5.29.32
False
17
300F300D060B2A8503033D9ED736010202
/////////////////////////////////////
2.5.29.17
False
122
3078A012060355040CA00B1309333232313330363538860130A01806082A85030381030101A00C130A37373335303936333538A019060A2A8503033D9ED7360107A00B1309373733353031303031A01B060A2A8503033D9ED7360105A00D130B3033373332303031333639A00D06072A850301E03901A0021300
/////////////////////////////////////
2.5.29.15
True
4
030203E8
/////////////////////////////////////
2.5.29.37
False
60
303A06082B06010505070302060E2A8503033D9ED736010603040101060E2A8503033D9ED736010603040102060E2A8503033D9ED736010603040104
/////////////////////////////////////
2.5.29.35
False
24
3016801407B579B7013A0C81BD258173AB1A40E958C3F34D
/////////////////////////////////////
2.5.29.31
False
93
305B302EA02CA02A8628687474703A2F2F64632E75632D736673666B2E6C6F63616C2F63726C2F63757272656E742E63726C3029A027A0258623687474703A2F2F63726C2E726F736B617A6E612E72752F63726C2F6C6173742E63726C
/////////////////////////////////////
2.5.29.14
False
22
0414AFE55BF0D94ECDAF3A46E28502561C47514D2A35


а вот что дальше сделать с ними чтобы получить удобоваримый текст из них?
пробовал на примере szOID_SUBJECT_ALT_NAME2 через PCERT_ALT_NAME_INFO обработать отдельный связный с ним элемент массива расширений - как-то еще хуже было, ничего не получилось..
не подскажет кто куда дальше двигаться?
Offline Андрей Писарев  
#2 Оставлено : 18 февраля 2012 г. 19:38:40(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Цитата:
не подскажет кто куда дальше двигаться?


посмотреть ветку "встраивание" целиком + старый форум и воспользоваться поиском

CertFindExtension
CryptDecodeObject

и далее в зависимости от расширения
(PCRYPT_DATA_BLOB, BinToHex ... )
тебе в помощь

Отредактировано пользователем 18 февраля 2012 г. 19:42:47(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline bargof  
#3 Оставлено : 19 февраля 2012 г. 14:47:35(UTC)
bargof

Статус: Новичок

Группы: Участники
Зарегистрирован: 18.02.2012(UTC)
Сообщений: 2

кажется нашел в чем проблема.
неправильное описание структуры CERT_ALT_NAME_ENTRY в wincript2, из-за этого не получалось нормально декриптить..
не считая кучи других ошибок описания в этом винкрипте..
нету у кого случаем ссылки на правильный wincrypt для дельфи?
Offline Андрей Писарев  
#4 Оставлено : 19 февраля 2012 г. 14:56:10(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Не используй wincrYpt2

Цитата:
нету у кого случаем ссылки на правильный wincrypt для дельфи?

ссылка на правильный wincrypt - не существует ...


Use jwawincrypt Anxious


Отредактировано пользователем 19 февраля 2012 г. 15:43:11(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.