Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2010(UTC) Сообщений: 14 Откуда: Москва
|
Добрый день!
Решаю задачу подписи с токена из браузера на javascipt через capicom. Вот код:
try { //Создаем необходимые объекты ActiveX var CertStore = new ActiveXObject("CAPICOM.Store"); var Signer = new ActiveXObject("CAPICOM.Signer"); var SignedAuth = new ActiveXObject("CAPICOM.SignedData"); } catch (e) { alert('Ошибка инициализации CAPICOM. \n\nОшибка: ' + e.description ); CertStore.Close(); return return_array; }
try {
//Открываем хранилище сертификатов пользователя/компьютера только для чтения CertStore.Open(CAPICOM_CURRENT_USER_STORE, "MY", CAPICOM_STORE_OPEN_READ_ONLY); //CAPICOM_LOCAL_MACHINE_STORE
} catch (e) { alert('Ошибка открытия хранилища. \n\nОшибка: ' + e.description ); CertStore.Close(); return return_array; }
//Выбираем сертификат try {
var Certificates = CertStore.Certificates;
Certificates = Certificates.Find(CAPICOM_CERTIFICATE_FIND_KEY_USAGE, CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE); Certificates = Certificates.Find(CAPICOM_CERTIFICATE_FIND_TIME_VALID); Certificates = Certificates.Find(CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, CERT_KEY_SPEC_PROP_ID); Certificates = Certificates.Find(CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY, CAPICOM_PROPID_KEY_PROV_INFO); switch (Certificates.Count) {
case 0: alert("Нет сертификатов"); break;
case 1: break; default: Certificates = CertStore.Certificates.Select( "Выберите сертификат для подписи документа." , "Выберите один из сертификатов", false); } } catch (e) { alert('Ошибка выбора сертификата. \n\nОшибка: ' + e.description ); return return_array; }
if (Certificates.Count == 0) { alert('Нет подходящих сертификатов'); }
Возник вопрос: есть ли возможность выбрать из хранилища CAPICOM.Store только те сертификаты, которым соответствует закрытый ключ на вставленном токене? Другими словами вывести только сертификаты с токена. Потому как сейчас поиск сертификатов в хранилище выдает все установленные сертификаты, что неудобно: системой будут пользоваться много людей, и необходимо скрыть от них чужие сертификаты. Нужно вывести только сертификаты с токена.
Заранее спасибо.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.10.2010(UTC) Сообщений: 14 Откуда: Москва
|
Ни у кого нет идей? Хотя бы в какую сторону копать?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Вообще с помощью CAPICOM напрямую обратиться к токену нельзя, можно разве что получить уникальное имя контейнера, соответствующего сертификату. А хорошая идея в том, чтобы у каждого человека - пользователя системы было свое хранилище My, тогда и путаницы будет меньше. |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close