Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2015, 11:52   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию узнать дату окончания сертификата

Есть куча *.cer файлов. Как программно узнать дату окончания сертификата?
FaTaL вне форума Ответить с цитированием
Старый 21.04.2015, 12:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Насколько я помню нужно:
1) Загрузить файл сертификата в Stream
2) Скормить его функции CertCreateCertificateContext()
3) Она верет указатель на PCCERT_CONTEXT, в котором есть поля
pCertInfo^.NotBefore - дата начала
pCertInfo^.NotAfter - Дата окончания

Ну и там же будет другая сопутствующая инфа.
I'm learning to live...

Последний раз редактировалось Stilet; 21.04.2015 в 14:17.
Stilet вне форума Ответить с цитированием
Старый 21.04.2015, 13:49   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Stilet, спасибо. Всё получилось.
FaTaL вне форума Ответить с цитированием
Старый 21.04.2015, 14:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Красава )
...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.04.2023, 22:58   #5
Акима
Новичок
Джуниор
 
Регистрация: 01.04.2023
Сообщений: 7
По умолчанию

FaTaL, А можете помочь , а как можно в stream загрузить ссылку , как скормить ее
CertCreateCertificateContext() и как из pCertInfo^.NotAfter вывести дату , вы считай последняя надежда
Акима вне форума Ответить с цитированием
Старый 02.04.2023, 09:08   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Цитата:
Сообщение от Акима Посмотреть сообщение
CertCreateCertificateContext() и как из pCertInfo^.NotAfter вывести дату , вы считай последняя надежда
Еле нашёл свой старый, поросший мхом проект.
Код:
// Получение даты сертификата
function GetDateCert(CertFullPath : string; Begining : Boolean): TDate;
var
  cFile : TMemoryStream;
  cert  : PCCERT_CONTEXT;
begin
  result := IncYear(now, -100);
  cFile := TMemoryStream.Create;
  cFile.LoadFromFile(CertFullPath);
  cert := CertCreateCertificateContext(X509_ASN_ENCODING or PKCS_7_ASN_ENCODING,
            cFile.Memory, cFile.Size);
  try
    try
    if Begining then
    result := FileTime2DateTime(cert^.pCertInfo^.NotBefore) else
    result := FileTime2DateTime(cert^.pCertInfo^.NotAfter);
    except
      on E : Exception do
        MessageBox (frmMainCertInfo.Handle, PChar('Ошибка чтения данных из сертификата: '
        +#13#10+ CertFullPath+#13#10 +'Тескт ошибки:'+#13#10 + E.Message), 'Ошибка', MB_OK or MB_ICONERROR);
    end;
  finally
    CertFreeCertificateContext(cert);
    cFile.Free;
  end;
end;

function FileTime2DateTime(FileTime: TFileTime): TDateTime;
 var
    LocalFileTime: TFileTime;
    SystemTime: TSystemTime;
 begin
    FileTimeToLocalFileTime(FileTime, LocalFileTime) ;
    FileTimeToSystemTime(LocalFileTime, SystemTime) ;
    Result := SystemTimeToDateTime(SystemTime) ;
 end;
Использовал модуль Wcrypt2.pas
Вложения
Тип файла: zip Wcrypt2.zip (57.5 Кб, 4 просмотров)

Последний раз редактировалось FaTaL; 02.04.2023 в 09:21.
FaTaL вне форума Ответить с цитированием
Старый 02.04.2023, 15:54   #7
Акима
Новичок
Джуниор
 
Регистрация: 01.04.2023
Сообщений: 7
По умолчанию

Спасибо огромное , теперь осталось это в с++ перевести так еще в MFC запилить ,любит наш декан шутить над нами )

Последний раз редактировалось Акима; 02.04.2023 в 16:00.
Акима вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать дату установки ОС на компьютере megostudent Общие вопросы Delphi 20 30.11.2015 19:21
Как узнать дату создания файла ZelenuiBeret Помощь студентам 3 29.03.2013 09:12
узнать дату файла Артэс Общие вопросы C/C++ 10 16.07.2012 18:42
Узнать дату по гринвичу через интернет art-programs Работа с сетью в Delphi 4 23.08.2011 23:12
как узнать дату создания файла green-shrek Помощь студентам 5 25.02.2010 17:33