В принципе логично)Дата подписи файла должна-быть раньше истечения сертификата.
Я вроде как разобрался, в коде я указал "На время действия не смотри, а смотри кем этот сертификат выдан". Алгоритм считает большинство системных файлов валидными, но не все. Тот же autoruns показывает другую информацию.
Сделал тестовый сертификат, конечно же недействительный, как считает винда. Алгоритм также его считает недействительным, что верно, НО...
...почему файл приложения, рекомендованное для написания курсача, считается виндой действительным, алгоритмом проверки - нет?
Не могу понять в чём путаница. Прилагаю код:
Проверка лицензии файла:
public static byte Verify(string filePath)
{
X509Certificate2 theCertificate;
try
{
X509Certificate theSigner = X509Certificate.CreateFromSignedFile(filePath);
theCertificate = new X509Certificate2(theSigner);
X509Chain theCertificateChain = new X509Chain();
theCertificateChain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
theCertificateChain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
theCertificateChain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 1, 0);
theCertificateChain.ChainPolicy.VerificationFlags = X509VerificationFlags.IgnoreNotTimeValid;
bool isValid = theCertificateChain.Build(theCertificate);
if (isValid)
{
return 0;
}
else if (!isValid)
{
return 1;
}
else return 2;
}
catch
{
return 2;
}
}
Последнее редактирование: