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

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline Рогнар Рыжий  
#1 Оставлено : 17 июня 2019 г. 4:21:57(UTC)
Рогнар Рыжий

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

Группы: Участники
Зарегистрирован: 13.06.2019(UTC)
Сообщений: 9
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 3 раз в 3 постах
Здравствуйте, мне необходимо достать данные (фамилию,имя,отчество) из сертификата X509Certificate Base64Binary идей вообще ни каких нет, с электронной подписью не приходилось работать. Вот пример программы где я пытаюсь достать данные из подписанного файла и расшифровать, схема подписи и файл с подписью xmldsig-core-schema.rar (3kb) загружен 29 раз(а). a59cbb3e-c23d-4dd6-9706-0ff79169204d.rar (4kb) загружен 32 раз(а). dostat' sertifikat.rar (4kb) загружен 43 раз(а).
Offline Андрей Писарев  
#2 Оставлено : 17 июня 2019 г. 9:39:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Здравствуйте.



Эта конференция требует регистрации перед тем как вы сможете увидеть скрытые сообщения.

Техническую поддержку оказываем тут
Наша база знаний
thanks 58 пользователей поблагодарили Андрей * за этот пост.
two_oceans оставлено 17.06.2019(UTC), Малакшинов Евгений оставлено 17.07.2019(UTC), prog_mail оставлено 01.10.2019(UTC), haword оставлено 12.11.2019(UTC), delem оставлено 21.11.2019(UTC), filial-foton оставлено 29.11.2019(UTC), vitalislep оставлено 19.12.2019(UTC), LONG11 оставлено 12.04.2020(UTC), Alex Zenon оставлено 15.04.2020(UTC), quartz оставлено 24.06.2020(UTC), olega69 оставлено 08.07.2020(UTC), eisy оставлено 09.07.2020(UTC), Дмитрий Серебренников оставлено 08.01.2021(UTC), city-med.info оставлено 16.02.2021(UTC), tarakan оставлено 29.04.2021(UTC), Nodem оставлено 24.05.2021(UTC), TyrinaOlga оставлено 26.05.2021(UTC), Lumaklin оставлено 08.06.2021(UTC), evarlamov оставлено 03.08.2021(UTC), OldDog оставлено 30.08.2021(UTC), savloni оставлено 29.10.2021(UTC), DenisVsrf оставлено 10.11.2021(UTC), mesplist оставлено 08.12.2021(UTC), sylfire оставлено 13.01.2022(UTC), Obliterator оставлено 27.01.2022(UTC), ma4balaka оставлено 12.02.2022(UTC), Михаил Д. оставлено 18.03.2022(UTC), Roman_kri оставлено 23.03.2022(UTC), SEZimbra оставлено 13.04.2022(UTC), bpostalias оставлено 13.06.2022(UTC), Den94 оставлено 23.08.2022(UTC), ВячеславБ оставлено 28.10.2022(UTC), Maxfactoris оставлено 23.11.2022(UTC), Termik оставлено 12.03.2023(UTC), lapoipopope оставлено 26.05.2023(UTC), Infopol оставлено 03.06.2023(UTC), mstdoc оставлено 06.06.2023(UTC), Вадим_9966989884 оставлено 17.08.2023(UTC), lvit007 оставлено 17.08.2023(UTC), sipacrh11 оставлено 27.08.2023(UTC), Илья В. оставлено 01.09.2023(UTC), AlexanderStork оставлено 12.09.2023(UTC), Egoryhka оставлено 21.09.2023(UTC), avshutko оставлено 29.09.2023(UTC), pimenov_d оставлено 08.11.2023(UTC), clipper оставлено 18.11.2023(UTC), racinghart оставлено 15.12.2023(UTC), temp_the оставлено 16.12.2023(UTC), K00zma оставлено 08.01.2024(UTC), mybiysk1 оставлено 12.03.2024(UTC), teedoru оставлено 31.03.2024(UTC), dimik78 оставлено 19.04.2024(UTC), fdan1c оставлено 10.06.2024(UTC), niky-ur оставлено 17.06.2024(UTC), gisma.86@mail.ru оставлено 17.07.2024(UTC), ttmmrr оставлено 21.07.2024(UTC), eshelkovoy оставлено 23.07.2024(UTC), Sann-X! оставлено 07.10.2024(UTC)
Offline Андрей Писарев  
#3 Оставлено : 17 июня 2019 г. 9:53:14(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
в SUBJECT будет для указанного xml:

Цитата:
ОГРН=1044205104580, ИНН=004205077509, СНИЛС=03816119646, STREET="ул. Волгоградская, д.23-А", SN=Карягин, G=Вячеслав Викторович, C=RU, L=Кемерово, S=42 - Кемеровская область, E=Gbmse42@fbmse.ru, O="ФКУ ""ГБ МСЭ по Кемеровской области"" Минтруда России", OU=Бюро 5, T=Руководитель бюро, CN="ФКУ ""ГБ МСЭ по Кемеровской области"" Минтруда России"



Либо модифицировать:

Цитата:
// SN = 2.5.4.4 Surname Фамилия
// G = 2.5.4.42 givenName Имя + Отчество

Surname := GetInfo(CERT_NAME_ATTR_TYPE, 0, PAnsiChar('2.5.4.4'));
givenName:= GetInfo(CERT_NAME_ATTR_TYPE, 0,PAnsiChar( '2.5.4.42'));



Техническую поддержку оказываем тут
Наша база знаний
thanks 4 пользователей поблагодарили Андрей * за этот пост.
Рогнар Рыжий оставлено 18.06.2019(UTC), Nodem оставлено 24.05.2021(UTC), fdan1c оставлено 10.06.2024(UTC), ttmmrr оставлено 21.07.2024(UTC)
Offline Андрей Писарев  
#4 Оставлено : 17 июня 2019 г. 9:56:15(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Поиск лучше делать по объектным идентификаторам (OID), чем парсить строку на разные вариации подстроки
(ИНН\INN = 1.2.643.3.131.1.1 , ОГРН\OGRN = 1.2.643.100.1 и т.п.)

Snimok ehkrana ot 2019-06-17 10-53-54.png (36kb) загружен 105 раз(а).

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
ttmmrr оставлено 21.07.2024(UTC)
Offline Рогнар Рыжий  
#5 Оставлено : 17 июня 2019 г. 9:59:01(UTC)
Рогнар Рыжий

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

Группы: Участники
Зарегистрирован: 13.06.2019(UTC)
Сообщений: 9
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 3 раз в 3 постах
Автор: Андрей Писарев Перейти к цитате
Поиск лучше делать по объектным идентификаторам (OID), чем парсить строку на разные вариации подстроки
(ИНН\INN = 1.2.643.3.131.1.1 , ОГРН\OGRN = 1.2.643.100.1 и т.п.)

Snimok ehkrana ot 2019-06-17 10-53-54.png (36kb) загружен 105 раз(а).



Дело в том что я не знаю как это реализовать в Delphi 7

thanks 1 пользователь поблагодарил Рогнар Рыжий за этот пост.
ttmmrr оставлено 21.07.2024(UTC)
Offline Андрей Писарев  
#6 Оставлено : 17 июня 2019 г. 10:00:48(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Автор: Рогнар Рыжий Перейти к цитате


Дело в том что я не знаю как это реализовать в Delphi 7



В первом от меня сообщении готовый код, что мешает скачать необходимое для работы с CryptoAPI,
указанное в uses и добавить в свой unit необходимое?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
ttmmrr оставлено 21.07.2024(UTC)
Offline Рогнар Рыжий  
#7 Оставлено : 17 июня 2019 г. 10:22:43(UTC)
Рогнар Рыжий

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

Группы: Участники
Зарегистрирован: 13.06.2019(UTC)
Сообщений: 9
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 3 раз в 3 постах
Автор: Андрей Писарев Перейти к цитате

В первом от меня сообщении готовый код, что мешает скачать необходимое для работы с CryptoAPI,
указанное в uses и добавить в свой unit необходимое?


Вы имеете ввиду Wcrypt2.pas

thanks 1 пользователь поблагодарил Рогнар Рыжий за этот пост.
ttmmrr оставлено 21.07.2024(UTC)
Offline Андрей Писарев  
#8 Оставлено : 17 июня 2019 г. 10:35:02(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2217 раз в 1731 постах
Автор: Рогнар Рыжий Перейти к цитате

Вы имеете ввиду Wcrypt2.pas


Можно и его.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
ttmmrr оставлено 21.07.2024(UTC)
Offline Рогнар Рыжий  
#9 Оставлено : 17 июня 2019 г. 10:59:57(UTC)
Рогнар Рыжий

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

Группы: Участники
Зарегистрирован: 13.06.2019(UTC)
Сообщений: 9
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 3 раз в 3 постах
Автор: Андрей Писарев Перейти к цитате

В первом от меня сообщении готовый код, что мешает скачать необходимое для работы с CryptoAPI,
указанное в uses и добавить в свой unit необходимое?


Можете посоветовать что можно почитать или где поискать как работать с CryptoAPI или где посмотреть примеры как работать, или поподробней объяснить что нужно написать в моем unit.

Отредактировано пользователем 17 июня 2019 г. 11:02:22(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Рогнар Рыжий за этот пост.
ttmmrr оставлено 21.07.2024(UTC)
Offline two_oceans  
#10 Оставлено : 17 июня 2019 г. 12:45:05(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Автор: Рогнар Рыжий Перейти к цитате
Вы имеете ввиду Wcrypt2.pas
Не не не... это вредный совет, так как этот модуль очень старый, тем более из комплекта дельфи 7, многие функции/константы просто не будут работать, особенно если писать 64-разрядное приложение. Лучше скачать jwawincrypt, например, у меня 1.17 2007/09/05, там хотя бы несложно допилить описание типов хэндлов до 64 битных. Там же есть комментарии на английском к каждой функции, еще можно почитать MSDN игнорируя, что функции по мнению Майкрософт устарели и будут удалены в будущих версиях виндоуз.

Как бы для сертификата даже особо и криптографии не надо, достаточно только нескольких функций. Для получения данных из подписанного файла Вам нужно: 1) выделить нужный текст, содержащий сертификат в Base64 из файла. Это можно сделать либо строковыми функциями либо xml парсерсом и его функциями. Предполагаю, что это Вы уже сделали.

2) декодировать сертификат из Base64, есть огромная куча реализаций для дельфи, но конечно ничто не мешает написать свою. К слову есть и реализация в CryptoAPI StringToBinary, но мне так и не удалось заставить ее работать - вместо декодирования кодирует еще раз, поэтому нашел исходник юнита base64 и скопипастил в свой юнит. Не весь юнит base64 подключил, так как там реализовано в виде объекта и тянулясь длинная объектная цепочка наследования и скомпилированная библиотека распухала в разы.

3) передать сертификат декодированный из base64 certData в
Код:
pCertCont:=CertCreateCertificateContext(X509_ASN_ENCODING or PKCS_7_ASN_ENCODING, PByte(CertData.str), CertData.Len);
У меня для удобства передачи между библиотеками свои строки - запись в которой str адрес буфера строки, Limit длина буфера выделенная, Len занятая длина буфера без конечного символа 0. Возвращается указатель на контекст сертификата, контекст удобен тем, данные закодированные в сертификате автоматически частично раскодированы и их можно уже и вручную выдергивать, но мы же не варвары, есть специальные функции для имени и различных хэшей сертификата.

С другой стороны, вручную удобнее выдергивать серийный номер сертификата, так как в дельфи его надо заодно перевернуть. Перевод номера сертификата в десятичное представление - отдельная тема, так как у стандартных целочисленных типов не хватает длины чтобы вместить скажем 22 или 27 байт серийного номера.

В коде выше конечно отличная альтернатива шагам 4 и 5.

Отредактировано пользователем 17 июня 2019 г. 13:08:05(UTC)  | Причина: Не указана

thanks 2 пользователей поблагодарили two_oceans за этот пост.
Рогнар Рыжий оставлено 18.06.2019(UTC), ttmmrr оставлено 21.07.2024(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
4 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.