Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline xlink  
#1 Оставлено : 18 ноября 2010 г. 18:25:43(UTC)
xlink

Статус: Участник

Группы: Участники
Зарегистрирован: 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 только те сертификаты, которым соответствует закрытый ключ на вставленном токене? Другими словами вывести только сертификаты с токена. Потому как сейчас поиск сертификатов в хранилище выдает все установленные сертификаты, что неудобно: системой будут пользоваться много людей, и необходимо скрыть от них чужие сертификаты. Нужно вывести только сертификаты с токена.

Заранее спасибо.
Offline xlink  
#2 Оставлено : 19 ноября 2010 г. 17:44:44(UTC)
xlink

Статус: Участник

Группы: Участники
Зарегистрирован: 13.10.2010(UTC)
Сообщений: 14
Откуда: Москва

Ни у кого нет идей? Хотя бы в какую сторону копать?
Offline Kirill Sobolev  
#3 Оставлено : 19 ноября 2010 г. 22:20:57(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Вообще с помощью CAPICOM напрямую обратиться к токену нельзя, можно разве что получить уникальное имя контейнера, соответствующего сертификату.
А хорошая идея в том, чтобы у каждого человека - пользователя системы было свое хранилище My, тогда и путаницы будет меньше.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.