| ||||
| ||||
Мы не можем выбрать сертикат из личного хранилища в нашем приложении. Имеются две ситуации: 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; |