Пример проверки своего сертификата перед использованием
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 ;