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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alexeyng  
#1 Оставлено : 26 апреля 2012 г. 19:50:26(UTC)
alexeyng

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.04.2012(UTC)
Сообщений: 61

Подскажите как реализовать подпись на клиенте и проверку ее на сервере.

На сервере получаю хэш файла и передаю его клиенту в hidden поле, предварительно сделав Base64
Цитата:
hfHASH.Value = Convert.ToBase64String(hash);

На клиенте подписываю этот хэш таким образом
Цитата:
var oStore = CreateObject("CAPICOM.Store");
var oSigner = CreateObject("CAdESCOM.CPSigner");
var CADESCOM_CADES_X_LONG_TYPE_1 = 0x5d;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_MY_STORE = "My";
var CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
var CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;

var oStore = CreateObject("CAPICOM.Store");
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oSigner = CreateObject("CAdESCOM.CPSigner");
//oSigner.Certificate = oCertificate;
oSigner.TSAAddress = "http://cryptopro.ru/tsp/";

var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
oSignedData.Content = dataToSign;

try {
var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_X_LONG_TYPE_1);
alert(sSignedMessage);
} catch (err) {
alert("Failed to create signature. Error: " + GetErrorMessage(err));
return;
}

oStore.Close();


Затем на сервере необходимо проверить, что хэш подписан именно этим клиентом

Цитата:

private bool CheckSign()
{
dynamic signedData = new CAdESCOM.CadesSignedData();
bool res = signedData.VerifyCades(signedMessage, CAdESCOM.CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, false);

return res;
}


Я так понимаю, что серверу недостаточно только signedMessage нужен ещё открытый ключ. Поправте меня, если я что-то не понимаю или не в ту сторону двигаюсь.

Отредактировано пользователем 26 апреля 2012 г. 19:51:09(UTC)  | Причина: Не указана

Online Андрей Писарев  
#2 Оставлено : 26 апреля 2012 г. 19:55:51(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,340
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Цитата:
Поправте меня, если я что-то не понимаю или не в ту сторону двигаюсь.


Подпись хеша от хеша... это то, что действительно нужно?
(опять на тему про большой объем данных\чтобы реальные данные не пересылать?)

Отредактировано пользователем 26 апреля 2012 г. 19:57:34(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline alexeyng  
#3 Оставлено : 26 апреля 2012 г. 20:11:29(UTC)
alexeyng

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.04.2012(UTC)
Сообщений: 61

Андрей,

Такого рода тех. документ, нужно по некоторому докменту получить его хэш на сервере, зетем передать его клиенту, клиент подписывает этот хэш и передает обратно на сервер, серве должен проверить подписанный хэш. Как это можно орагнизовать? Первоначально просили вобще подписывать бинарный документ, так что подписывать хэш гораздо лучше. Подскажите как мне это правильно реализовать?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.