Пример проверки своего сертификата перед использованием
VBScript
' получаем объект CAPICOM.Certificate Dim oCert: Set oCert = GetCapicomCertificate() Dim PKIValidator: Set PKIValidator = _ CreateObject("PKIValidator.PrivateKeyUsageValidator") ' Проверяем конечный сертификат на данный момент времени, ' если необходимо проверить можно ли использовать закрытый ключ ' в данный момент времени. Данная проверка не выполняет ' проверку статуса сертификата на отзыв. Dim isCertValidNowByPKUP: isCertValidNowByPKUP = _ PKIValidator.IsCertValidNow(oCert) ' Закрытый ключ сертификата не может использоваться ' для подписи или шифрования. Его срок действия либо уже истек, ' либо еще не наступил. If Not isCertValidNowByPKUP Then _ DoSmthIfError()
C#
// Получаем сертфикат CAPICOM (существует только 32-битная capicom.dll!) CAPICOM.CertificateClass certCapicom = GetCapicomCertificate(); // Получаем сертификат X509Certificate2 System.Security.Cryptography.X509Certificates.X509Certificate2 certX509 = GetX509Certificate(); // Создаем объект PKIValidatorLib.PrivateKeyUsageValidatorClass validator = new PKIValidatorLib.PrivateKeyUsageValidatorClass(); bool isValidByPKUPNow; try { // Проверяем на текущий момент, передавая CAPICOM.Certificate isValidByPKUPNow = validator.IsCertValidNow(certCapicom); // Можно воспользоваться X509Certificate2, при этом будет передаваться PCCERT_CONTEXT // Обязательно надо преобразовать IntPtr с помощью метода IntPtr.ToInt64(), иначе // 64-битный указатель будет передан неправильно! isValidByPKUPNow = validator.IsCertValidNow(certX509.Handle.ToInt64()); } catch (Exception ex) { DoSmthIfError("Invalid Parameter" + ex.Message); return; } if (!isValidByPKUPNow) DoSmthIfError("Not valid now"); return ;