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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline IOFeed  
#11 Оставлено : 6 октября 2017 г. 14:47:33(UTC)
IOFeed

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

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

Сказал(а) «Спасибо»: 9 раз
Поблагодарили: 6 раз в 5 постах
Цитата:
Скажи как у тебя получилось в линукс подцепить комовскую библиотеку CAdESCOM?
На сколько я знаю API BrowserPlugin не позволяет шифровать и дешифровать сообщения, там только доступны функции для создания подписи?


Позволяет и шифровать и расшифровывать сообщения. Просто нет примеров в официальной документации (по крайней мере раньше небыло).
Описание объектов есть: http://cpdn.cryptopro.ru..._c_p_enveloped_data.html

Цитата:
Но как ты создавал объекты, которые доступны только через виндовый ActivX?


Это сейчас они доступны только через ActivX, но когда я писал данный пост они были доступны, в частности, в Firefox, т.к. на тот момент еще была поддержка NPAPI плагина, интерфейс которого полностью повторяет версию для ActivX.
На данный момент, чтобы заюзать мой пример под linux нужна либо старая версия Firefox с поддержкой NPAPI и соответствующим образом настроенный плагин, либо переписать его с использованием нового асинхронного интерфейса.

Например:
Код:

var CADESCOM_BASE64_TO_BINARY = 0x01;
var CADESCOM_STRING_TO_UCS2LE = 0x00;
var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;

var encryptedData = {};
var success;
var error;

var result = new Promise(function(resolve, reject){
	success = resolve;
	error = reject;
});

cadesplugin.async_spawn(function *() { //cadesplugin.async_spawn
	try {
		var oStore = yield cadesplugin.CreateObjectAsync("CAPICOM.store");
		yield oStore.Open();
		var all_certs = yield oStore.Certificates;
		var oCerts = yield all_certs.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certThumbprint);

		if (oCerts.Count === 0) {
			encryptedData.error = "Certificate not found";
			success(encryptedData);
			return;
		}
		var certificate = yield oCerts.Item(1);

		var oEnvelop = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPEnvelopedData");
		yield oEnvelop.propset_ContentEncoding(CADESCOM_BASE64_TO_BINARY);
		yield oEnvelop.propset_Content(dataToCrypt);
		var recipients = yield oEnvelop.Recipients;
		yield recipients.Clear();
		yield recipients.Add(certificate);

		encryptedData.base64 = yield oEnvelop.Encrypt();
		encryptedData.ber = cadesplugin.Base64ToBer(encryptedData.base64);
		success(encryptedData);
	}
	catch (ex) {
		encryptedData.error = "Failed to crypt data. Error: " + cadesplugin.GetErrorMessage(ex);
		success(encryptedData);
	}
});
return result;
thanks 1 пользователь поблагодарил IOFeed за этот пост.
SantaKlaus оставлено 06.10.2017(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.