Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.08.2012(UTC) Сообщений: 60
Сказал(а) «Спасибо»: 11 раз
|
Ситауция следующая. В браузере подписывается сообщение с прикрепленной подписью. На сервере сообщение выделяется из подписи, но оно разделено пробелами. Т.е. переданный base64 после расшифровки выглядит вот так. Код:S G V s b G 8 g d 2 9 y b G Q =
Если загрузить файл подписать, а потом проверить на сервере, то возвращается корректная base64 строка без пробелов. Предварительное удаление пробелов перед декодировкой на сервере выглядит выглядит жутким костылем. В чем может быть причина такого поведения? На сервере Ubuntu 16.10, CSP 4.0, Plugin 2.0, Chrome 56
Код:kn@pc:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
PS. Код подписания сообщения. Hello World полученный с тестовой страницы плагина также идет с пробелами после выделения из подписи.
Код:function sign(id, dataToSign) {
dataToSign = "Hello world";
dataToSign = window.btoa(dataToSign);
console.log(dataToSign);
return new Promise(function(resolve, reject){
cadesplugin.async_spawn(function *(args) {
try {
var oStore = yield cadesplugin.CreateObjectAsync("CAPICOM.Store");
yield oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var CertificatesObj = yield oStore.Certificates;
var oCertificate = yield CertificatesObj.Item(id);
var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
yield oSigner.propset_Certificate(oCertificate);
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData.propset_Content(dataToSign);
var sSignedMessage = yield oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, false);
yield oStore.Close();
args[2](sSignedMessage);
}
catch (err)
{
args[3](cadesplugin.getLastError(err));
}
}, id, dataToSign, resolve, reject);
});
}
Отредактировано пользователем 25 мая 2017 г. 10:18:11(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 31.08.2012(UTC) Сообщений: 60
Сказал(а) «Спасибо»: 11 раз
|
UP. Есть какие либо мысли? Подпись разбирается с проблема на двух разных серверах. По факту это оказываются не пробелы, а спецсимволы.  hello-world-problem.jpg (25kb) загружен 7 раз(а).
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,087   Сказал «Спасибо»: 612 раз Поблагодарили: 2375 раз в 1868 постах
|
Здравствуйте. ContentEncoding почему не указан? Посмотрите пример. Цитата: // Значение свойства ContentEncoding должно быть задано // до заполнения свойства Content oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY; oSignedData.Content = dataToSign; |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close