19.01.2005 14:59:51Странность при выборе доступных сертификатов из хранилища (ASP, CAPICOM) Ответов: 0
Константин Старовойтов
Мы не можем выбрать сертикат из личного хранилища в нашем приложении. Имеются две ситуации:
1) В хранилище записан тестовый сертификат сгенерированный на сайте, также в хранилище записан мой реальный сертификат, хранящийся на Etoken - в этом случае оба сертификата видны в нашем ASP-приложении и могут быть выбраны;
2) В личном хранилище есть только реальный сертфикат (тестовый удален) - в этом случае приложение перестает видеть этот сертификат (хотя CSP его прекрасно видит). Если поставить тестовый сертикат опять, то приложение опять видит оба сертификата.
Привожу кусок соответствующего кода - может кто подскажет какую "детскую" ошибку мы совершаем?

function FilterCertificates()
{
// instantiate the CAPICOM objects
var MyStore = new ActiveXObject("CAPICOM.Store");
var FilteredCertificates = new ActiveXObject("CAPICOM.Certificates");

// open the current users personal certificate store
try
{
//ВОТ ЭТА СТРОЧКА
MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My",
CAPICOM_STORE_OPEN_READ_ONLY);
}
catch (e)
{
if (e.number != CAPICOM_E_CANCELLED)
{
alert("An error occurred while opening your personal
certificate store,
aborting");
return false;
}
}

// find all of the certificates that:
// * Are good for signing data
// * Have PrivateKeys associated with then - Note how this is being
done :)
// * Are they time valid
//И ПРО ЭТУ ОНИ ГОВОРИЛИ ЕЩЕ
var FilteredCertificates =

MyStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_KEY_USAGE,CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE).Find(CAPICOM_CERTIFICATE_FIND_TIME_VALID).Find(CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,CERT_KEY_SPEC_PROP_ID);
return FilteredCertificates;

// Clean Up
MyStore = null;
FilteredCertificates = null;