Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
Подскажите, поддерживается ли шифрование средствами плагина на Linux? Мой пример отлично работает на Windows - шифрование и дешифрование проходит без проблем... Однако на Linux я получаю ошибку: Цитата:Error: Error calling method on NPObject! При этом сам плагин у меня рабочий, так как на ваших тестовых страницах успешно проходит подписание. Собственно код: Код:
try {
var oEnvelop = ObjCreator("CAdESCOM.CPEnvelopedData");
} catch (err) {
alert('Failed to create CAdESCOM.CPEnvelopedData: ' + err.number);
return;
}
var CADESCOM_BASE64_TO_BINARY=0x01;
var certificateTo = GetCertificate(certListBoxId);
var dataToCrypt = document.getElementById("InputTxtBox").value;
try {
oEnvelop.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oEnvelop.Content = dataToCrypt;
oEnvelop.Recipients.Clear();
oEnvelop.Recipients.Add(certificateTo);
var EncryptedData = oEnvelop.Encrypt();
document.getElementById("OutputTxtBox").innerHTML = EncryptedData;
}
catch(ex) {
document.getElementById("OutputTxtBox").innerHTML = ex;
}
Версия плагина: 2.0.2051 Версия CSP: 4.0.9518 Версия браузера: Mozilla Firefox 37.0.2 64bit Версия ОС: Ubuntu 14.04.2 LTS 3.13.0-51-generic x86_64 Вывод dpkg -l | grep csp: Цитата:ii cprocsp-npcades-64 4.0.0-4 amd64 CryptoPro CAdES NPAPI plugin library. Build 9549. ii cprocsp-rdr-gui-gtk-64 4.0.0-4 amd64 GUI components for CryptoPro CSP readers. Build 9518. ii lsb-cprocsp-base 4.0.0-4 all Crypto-Pro CSP library. Build 9518. ii lsb-cprocsp-cades-64 4.0.0-4 amd64 CryptoPro CAdES shared library. Build 9549. ii lsb-cprocsp-capilite-64 4.0.0-4 amd64 CryptoAPI lite. Build 9518. ii lsb-cprocsp-kc1-64 4.0.0-4 amd64 Crypto-Pro CSP library. Build 9518. ii lsb-cprocsp-kc2-64 4.0.0-4 amd64 CryptoPro CSP KC2. Build 9518. ii lsb-cprocsp-ocsp-util-64 4.0.0-4 amd64 CryptoPro PKI shared library. Build 9549. ii lsb-cprocsp-rdr-64 4.0.0-4 amd64 CryptoPro CSP readers. Build 9518. ii lsb-cprocsp-tsp-util-64 4.0.0-4 amd64 CryptoPro TSP client. Build 9549.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
На каком вызове ломается? |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
Вот тут у вас именно base64 данные? var dataToCrypt = document.getElementById("InputTxtBox").value; |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
cross, спасибо за ответы, проблемы удалось побороть - данные действительно передавал на в base64 виде. Однако, возник новый вопрос, не получается заставить работать функцию проверки подписи (делал в строгом соотвествии с примерами http://cpdn.cryptopro.ru...tent/cades/plugin.html).Код:
function VerifySignCades(signatureBody, dataToVerify) {
var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
var CADESCOM_CADES_BES = 1;
var CADESCOM_BASE64_TO_BINARY = 1;
try {
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = StringToBase64(dataToVerify);
oSignedData.VerifyCades(signatureBody, CADESCOM_CADES_BES);
} catch (ex) {
throw "Failed to verify signature. Error: " + GetErrorMessage(ex);
return false;
}
return true;
}
На выходе получаю точно такую же ошибку: Цитата:Error: Error calling method on NPObject! Что любопытно, данный код работает в Internet Explorer, но на любом другом браузере (вне зависимости от ОС) - возвращает описанную выше ошибку.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 24.11.2009(UTC) Сообщений: 965 Откуда: Crypto-Pro
Сказал(а) «Спасибо»: 3 раз Поблагодарили: 174 раз в 152 постах
|
У вас отсоединеная подпись ведь? Нужен третий параметр в VerifyCades() |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
Да, вы правы, не хватало третьего параметра: Код:
oSignedData.VerifyCades(signatureBody, CADESCOM_CADES_BES, true);
Теперь проверка подписи корректно работает во всех браузерах на Windows, однако, на Linux проблема осталась: "Error calling method on NPObject!" Для диагностики проблемы я добавил проверочный вывод данных, хранящихся в свойствах объекта oSignedData.Content и заметил интересуню особеннесть. Так выглядит вывод лога на Windows: Цитата:Переданы данные для проверки: VGVzdF90ZXh0 Данные записаны в свойство Content: VGVzdF90ZXh0
Результат провери подписи: true
А так выглядит уже на Linux: Цитата:Переданы данные для проверки: VGVzdF90ZXh0 Данные записаны в свойство Content: VGVzdF90ZXh0
Failed to verify signature. Error: Error calling method on NPObject!
Таким образом, видим что на Linux в свойтсве oSignedData.Content хранится дополнительный символ новой строки. Может ли это быть причиной проблемы? В таком случае это недоработка плагина? Собственно код: Код:
var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
var CADESCOM_CADES_BES = 1;
var CADESCOM_BASE64_TO_BINARY = 1;
dataToVerify = StringToBase64(dataToVerify);
log("Переданы данные для проверки: " + dataToVerify);
try {
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = dataToVerify;
log("Данные записаны в свойство Content: " + oSignedData.Content);
log("----------------------------------------------------------")
oSignedData.VerifyCades(signatureBody, CADESCOM_CADES_BES, true);
} catch (ex) {
throw "Failed to verify signature. Error: " + GetErrorMessage(ex);
return false;
}
return true;
Отредактировано пользователем 27 мая 2015 г. 10:43:02(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
Автор: cross  У вас отсоединеная подпись ведь? Подпись создаю так: Код:
var certObject = GetCertificate(certThumbprint);
try {
var oSigner = ObjCreator("CAdESCOM.CPSigner");
} catch (ex) {
throw "Failed to create CAdESCOM.CPSigner: " + ex.number;
}
if (oSigner) {
oSigner.Certificate = certObject;
}
else {
throw "Failed to create CAdESCOM.CPSigner";
}
var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
var CADES_BES = 1;
var CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
var CADESCOM_BASE64_TO_BINARY = 1;
var Signature;
oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oSignedData.Content = StringToBase64(dataToSign);
oSigner.Options = CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
try {
Signature = oSignedData.SignCades(oSigner, CADES_BES, true);
} catch (ex) {
throw "Failed to create signature. Error: " + GetErrorMessage(ex);
}
return Signature;
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
Проблема решилась удалением и повторной установкой пакетов КриптоПро...
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.04.2015(UTC) Сообщений: 29
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 6 раз в 5 постах
|
Помимо установки стандартных пакетов может помочь установка cprocsp-curl-64-4.0.0-4.x86_64.rpm
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.10.2017(UTC) Сообщений: 1  Откуда: Спб Сказал(а) «Спасибо»: 1 раз
|
Автор: IOFeed  Подскажите, поддерживается ли шифрование средствами плагина на Linux? Мой пример отлично работает на Windows - шифрование и дешифрование проходит без проблем... Однако на Linux я получаю ошибку: Цитата:Error: Error calling method on NPObject! При этом сам плагин у меня рабочий, так как на ваших тестовых страницах успешно проходит подписание. Собственно код: Код:
try {
var oEnvelop = ObjCreator("CAdESCOM.CPEnvelopedData");
} catch (err) {
alert('Failed to create CAdESCOM.CPEnvelopedData: ' + err.number);
return;
}
var CADESCOM_BASE64_TO_BINARY=0x01;
var certificateTo = GetCertificate(certListBoxId);
var dataToCrypt = document.getElementById("InputTxtBox").value;
try {
oEnvelop.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
oEnvelop.Content = dataToCrypt;
oEnvelop.Recipients.Clear();
oEnvelop.Recipients.Add(certificateTo);
var EncryptedData = oEnvelop.Encrypt();
document.getElementById("OutputTxtBox").innerHTML = EncryptedData;
}
catch(ex) {
document.getElementById("OutputTxtBox").innerHTML = ex;
}
Версия плагина: 2.0.2051 Версия CSP: 4.0.9518 Версия браузера: Mozilla Firefox 37.0.2 64bit Версия ОС: Ubuntu 14.04.2 LTS 3.13.0-51-generic x86_64 Вывод dpkg -l | grep csp: Цитата:ii cprocsp-npcades-64 4.0.0-4 amd64 CryptoPro CAdES NPAPI plugin library. Build 9549. ii cprocsp-rdr-gui-gtk-64 4.0.0-4 amd64 GUI components for CryptoPro CSP readers. Build 9518. ii lsb-cprocsp-base 4.0.0-4 all Crypto-Pro CSP library. Build 9518. ii lsb-cprocsp-cades-64 4.0.0-4 amd64 CryptoPro CAdES shared library. Build 9549. ii lsb-cprocsp-capilite-64 4.0.0-4 amd64 CryptoAPI lite. Build 9518. ii lsb-cprocsp-kc1-64 4.0.0-4 amd64 Crypto-Pro CSP library. Build 9518. ii lsb-cprocsp-kc2-64 4.0.0-4 amd64 CryptoPro CSP KC2. Build 9518. ii lsb-cprocsp-ocsp-util-64 4.0.0-4 amd64 CryptoPro PKI shared library. Build 9549. ii lsb-cprocsp-rdr-64 4.0.0-4 amd64 CryptoPro CSP readers. Build 9518. ii lsb-cprocsp-tsp-util-64 4.0.0-4 amd64 CryptoPro TSP client. Build 9549.
Привет, друг! Скажи как у тебя получилось в линукс подцепить комовскую библиотеку CAdESCOM? На сколько я знаю API BrowserPlugin не позволяет шифровать и дешифровать сообщения, там только доступны функции для создания подписи?
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close