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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2023, 19:25   #1
Акима
Новичок
Джуниор
 
Регистрация: 01.04.2023
Сообщений: 7
По умолчанию Проблема с курсовой

Почему CERT_INFO_VALIDITY_FLAG "неинициализированная локальная переменная " ?

void CКурсвя1Dlg::OnBnClickedButton1()
{

PCCERT_CONTEXT pCertContext = NULL;
// открываем файл в режиме чтения
HANDLE hCertFile = CreateFile(m_selectedFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hCertFile != INVALID_HANDLE_VALUE)
{
// читаем содержимое файла
DWORD fileSize = GetFileSize(hCertFile, NULL);
BYTE* pData = new BYTE[fileSize];
DWORD bytesRead = 0;
ReadFile(hCertFile, pData, fileSize, &bytesRead, NULL);
// закрываем файл
CloseHandle(hCertFile);

// создаем контекст сертификата из данных
pCertContext = CertCreateCertificateContext(X509_A SN_ENCODING, pData, fileSize);
delete[] pData;
}

if (pCertContext != NULL)
{
// получаем информацию о сертификате, включая дату истечения
PCERT_INFO pCertInfo = pCertContext->pCertInfo;

SYSTEMTIME stExpire;
DWORD cbData = (sizeof(FILETIME));
DWORD CERT_INFO_VALIDITY_FLAG;



if (CertGetCertificateContextProperty( pCertContext, CERT_INFO_VALIDITY_FLAG, &stExpire, &cbData))
{
// преобразуем структуру SYSTEMTIME в строку
CString expireDate;
expireDate.Format(_T("%02d.%02d.%04 d"), stExpire.wDay, stExpire.wMonth, stExpire.wYear);

// создаем отчет в текстовом формате
CString report;
report.Format(_T("Сертификат истекает %s"), expireDate);

// сохраняем отчет в файл
CString reportFilePath = m_selectedFilePath + _T(".txt");
CStdioFile reportFile;
if (reportFile.Open(reportFilePath, CFile::modeCreate | CFile::modeWrite))
{
reportFile.WriteString(report);
reportFile.Close();
}
}

// освобождаем контекст сертификата
CertFreeCertificateContext(pCertCon text);
}

}

void CКурсвя1Dlg::OnEnChangeMfceditbrows e1()
{

CMFCEditBrowseCtrl m_editBrowse;
m_editBrowse.GetWindowText(filePath );
// сохраняем путь к выбранному файлу в глобальной переменной
m_selectedFilePath = filePath;
}
Акима вне форума Ответить с цитированием
Старый 02.04.2023, 19:48   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
DWORD CERT_INFO_VALIDITY_FLAG;
А чем она инициализирована?
p51x на форуме Ответить с цитированием
Старый 02.04.2023, 20:28   #3
Акима
Новичок
Джуниор
 
Регистрация: 01.04.2023
Сообщений: 7
По умолчанию

p51x, НУ по идеи stExpire и cbData.
Акима вне форума Ответить с цитированием
Старый 02.04.2023, 21:00   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы о чем?

Код:
SYSTEMTIME stExpire;
Код:
DWORD cbData = (sizeof(FILETIME));
Код:
DWORD CERT_INFO_VALIDITY_FLAG;
Это три РАЗНЫЕ переменные. Они должны отдельно инициализироваться.
p51x на форуме Ответить с цитированием
Старый 02.04.2023, 21:10   #5
Акима
Новичок
Джуниор
 
Регистрация: 01.04.2023
Сообщений: 7
По умолчанию

p51x, Ой ошибся , я ни знаю чему ее присваивать , но ERT_INFO_VALIDITY_FLAG это флаг, который указывает, что необходимо извлечь время действия сертификата.
Акима вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
курсовой в С# YaDenis Помощь студентам 1 15.04.2013 21:26
Проблема с курсовой katorgindenis2 Помощь студентам 8 10.03.2013 17:13
Проблема с курсовой, есть идеи? bars21 Помощь студентам 0 21.12.2011 20:47
Проблема с курсовой Danilyuk Помощь студентам 3 20.05.2008 15:54