кодирование_декодирование_base64

Добрый день, наткнулся на такое странное поведение.
Подписываю сообщение -
var sign_gen = rutoken_plugin.sign(
            device_user,
            cert_list_user[0],
            data_res,
            true,
            {detached: true, addUserCertificate: true});

Если я правильно понимаю, то true - это флаг того что приходит base64-encode строка.
На этом месте вываливалась ошибка: 1-uncaught exception: 1.
Я решил поэкспериментировать с исходным файлом, в итоге вижу такое поведение

1. Cтрока в фале: "<?xml version="1.0" encoding="utf-8"?>
<ФайлПФР><"
base64: 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPNCk0LDQudC70J/QpNCgPjw='
нормально подписывается
2. 1. Cтрока в фале: "<?xml version="1.0" encoding="utf-8"?>
<ФайлПФР><Ф"
base64: 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPNCk0LDQudC70J/QpNCgPjzQpA=='
вываливаетя с такой ошибкой.

незнаю с какой стороны копать, может подскажете?

Re: кодирование_декодирование_base64

Я не совсем понял, что именно вы подписываете.

"<?xml version="1.0" encoding="utf-8"?>
<ФайлПФР><"
base64: 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPNCk0LDQudC70J/QpNCgPjw='"

Или только "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPNCk0LDQudC70J/QpNCgPjw="

Re: кодирование_декодирование_base64

Я подписываю именно base64, кусок строки это просто исходная строка.

Re: кодирование_декодирование_base64

tsvetovpavel пишет:

Я подписываю именно base64, кусок строки это просто исходная строка.

А вам нужно, чтобы была подписана именно base64-строка или же чтобы внутри плагина она была сначала декодирована и подписано именно это декодированное (бинарное) представление данных?

Re: кодирование_декодирование_base64

Виктор Ткаченко пишет:
tsvetovpavel пишет:

Я подписываю именно base64, кусок строки это просто исходная строка.

А вам нужно, чтобы была подписана именно base64-строка или же чтобы внутри плагина она была сначала декодирована и подписано именно это декодированное (бинарное) представление данных?

Нужно, чтобы внутри плагина строка была раскодирована, и подписано бинарное представление.

Re: кодирование_декодирование_base64

Порежьте вашу base64-строку на строки длиной 64 символа.

Чтобы получилось нечто типа

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPNCk0LDQudC70J/
QpNCgPjw=

Re: кодирование_декодирование_base64

Не очень понял Вашу идею... А как эти куски подписывать?

Re: кодирование_декодирование_base64

Я вот что имел ввиду.

Предположим у вас base64-строка:

"PHB1Ymxpc2hEYXRhPjxwdWJsaXNoUHJvZmlsZSBwcm9maWxlTmFtZT0iaWxkYXJBa3RpdiAtIFdlYiBEZXBsb3kiIHB1Ymxpc2hNZXRob2Q9Ik1TRGVwbG95IiBwdWJsaXNoVXJsPSJpbGRhcmFrdGl2LnNjbS5henVyZXdlYnNpdGVzLm5ldDo0NDMiIG1zZGVwbG95U2l0ZT0iaWxkYXJBa3RpdiIgdXNlck5hbWU9IiRpbGRhckFrdGl2IiB1c2VyUFdEPSJzR2t3NDh0OHlGVFJSOFRueTh4dGE4cURnZUJ6TW1nMndSOGV3Y3E2M2h2UWpxM0VYS2RQYmxCQ2thUjIiIGRlc3RpbmF0aW9uQXBwVXJsPSJodHRwOi8vaWxkYXJha3Rpdi5henVyZXdlYnNpdGVzLm5ldCIgU1FMU2VydmVyREJDb25uZWN0aW9uU3RyaW5nPSIiIG15U1FMREJDb25uZWN0aW9uU3RyaW5nPSIiIGhvc3RpbmdQcm92aWRlckZvcnVtTGluaz0iIiBjb250cm9sUGFuZWxMaW5rPSJodHRwOi8vd2luZG93cy5henVyZS5jb20iPjxkYXRhYmFzZXMvPjwvcHVibGlzaFByb2ZpbGU+PHB1Ymxpc2hQcm9maWxlIHByb2ZpbGVOYW1lPSJpbGRhckFrdGl2IC0gRlRQIiBwdWJsaXNoTWV0aG9kPSJGVFAiIHB1Ymxpc2hVcmw9ImZ0cDovL3dhd3MtcHJvZC1ibHUtMDE3LmZ0cC5henVyZXdlYnNpdGVzLndpbmRvd3MubmV0L3NpdGUvd3d3cm9vdCIgZnRwUGFzc2l2ZU1vZGU9IlRydWUiIHVzZXJOYW1lPSJpbGRhckFrdGl2XCRpbGRhckFrdGl2IiB1c2VyUFdEPSJzR2t3NDh0OHlGVFJSOFRueTh4dGE4cURnZUJ6TW1nMndSOGV3Y3E2M2h2UWpxM0VYS2RQYmxCQ2thUjIiIGRlc3RpbmF0aW9uQXBwVXJsPSJodHRwOi8vaWxkYXJha3Rpdi5henVyZXdlYnNpdGVzLm5ldCIgU1FMU2VydmVyREJDb25uZWN0aW9uU3RyaW5nPSIiIG15U1FMREJDb25uZWN0aW9uU3RyaW5nPSIiIGhvc3RpbmdQcm92aWRlckZvcnVtTGluaz0iIiBjb250cm9sUGFuZWxMaW5rPSJodHRwOi8vd2luZG93cy5henVyZS5jb20iPjxkYXRhYmFzZXMvPjwvcHVibGlzaFByb2ZpbGU+PC9wdWJsaXNoRGF0YT4NCg0KDQo8cHVibGlzaERhdGE+PHB1Ymxpc2hQcm9maWxlIHByb2ZpbGVOYW1lPSJBa3RpdlZha2F0aW9uIC0gV2ViIERlcGxveSIgcHVibGlzaE1ldGhvZD0iTVNEZXBsb3kiIHB1Ymxpc2hVcmw9ImFrdGl2dmFrYXRpb24uc2NtLmF6dXJld2Vic2l0ZXMubmV0OjQ0MyIgbXNkZXBsb3lTaXRlPSJBa3RpdlZha2F0aW9uIiB1c2VyTmFtZT0iJEFrdGl2VmFrYXRpb24iIHVzZXJQV0Q9Ijl1ZmZxSm02UUF0cUs0TGhqcHBCMEViMUhad0RUR29udW1pZW9RZWJia3I0TFNvb2Nxd2VabU5RV2h1YSIgZGVzdGluYXRpb25Bc
HBVcmw9Imh0dHA6Ly9ha3RpdnZha2F0aW9uLmF6dXJld2Vic2l0ZXMubmV0IiBTUUxTZXJ2ZXJEQkNvbm5lY3Rpb25TdHJpbmc9IiIgbXlTUUxEQkNvbm5lY3Rpb25TdHJpbmc9IiIgaG9zdGluZ1Byb3ZpZGVyRm9ydW1MaW5rPSIiIGNvbnRyb2xQYW5lbExpbms9Imh0dHA6Ly93aW5kb3dzLmF6dXJlLmNvbSI+PGRhdGFiYXNlcy8+PC9wdWJsaXNoUHJvZmlsZT48cHVibGlzaFByb2ZpbGUgcHJvZmlsZU5hbWU9IkFrdGl2VmFrYXRpb24gLSBGVFAiIHB1Ymxpc2hNZXRob2Q9IkZUUCIgcHVibGlzaFVybD0iZnRwOi8vd2F3cy1wcm9kLWJsdS0wMTcuZnRwLmF6dXJld2Vic2l0ZXMud2luZG93cy5uZXQvc2l0ZS93d3dyb290IiBmdHBQYXNzaXZlTW9kZT0iVHJ1ZSIgdXNlck5hbWU9IkFrdGl2VmFrYXRpb25cJEFrdGl2VmFrYXRpb24iIHVzZXJQV0Q9Ijl1ZmZxSm02UUF0cUs0TGhqcHBCMEViMUhad0RUR29udW1pZW9RZWJia3I0TFNvb2Nxd2VabU5RV2h1YSIgZGVzdGluYXRpb25BcHBVcmw9Imh0dHA6Ly9ha3RpdnZha2F0aW9uLmF6dXJld2Vic2l0ZXMubmV0IiBTUUxTZXJ2ZXJEQkNvbm5lY3Rpb25TdHJpbmc9IiIgbXlTUUxEQkNvbm5lY3Rpb25TdHJpbmc9IiIgaG9zdGluZ1Byb3ZpZGVyRm9ydW1MaW5rPSIiIGNvbnRyb2xQYW5lbExpbms9Imh0dHA6Ly93aW5kb3dzLmF6dXJlLmNvbSI+PGRhdGFiYXNlcy8+PC9wdWJsaXNoUHJvZmlsZT48L3B1Ymxpc2hEYXRhPg=="


Нужно вставить сепараторы в конец каждого блока по 64 символа.

Пример такой вставки:

var data = "PHB1Ymxpc2hEYXRhPjxwdWJsaXNoUHJvZmlsZSBwcm9maWxlTmFtZT0iaWxkYXJBa3RpdiAtIFdlYiBEZXBsb3kiIHB1Ymxpc2hNZXRob2Q9Ik1TRGVwbG95IiBwdWJsaXNoVXJsPSJpbGRhcmFrdGl2LnNjbS5henVyZXdlYnNpdGVzLm5ldDo0NDMiIG1zZGVwbG95U2l0ZT0iaWxkYXJBa3RpdiIgdXNlck5hbWU9IiRpbGRhckFrdGl2IiB1c2VyUFdEPSJzR2t3NDh0OHlGVFJSOFRueTh4dGE4cURnZUJ6TW1nMndSOGV3Y3E2M2h2UWpxM0VYS2RQYmxCQ2thUjIiIGRlc3RpbmF0aW9uQXBwVXJsPSJodHRwOi8vaWxkYXJha3Rpdi5henVyZXdlYnNpdGVzLm5ldCIgU1FMU2VydmVyREJDb25uZWN0aW9uU3RyaW5nPSIiIG15U1FMREJDb25uZWN0aW9uU3RyaW5nPSIiIGhvc3RpbmdQcm92aWRlckZvcnVtTGluaz0iIiBjb250cm9sUGFuZWxMaW5rPSJodHRwOi8vd2luZG93cy5henVyZS5jb20iPjxkYXRhYmFzZXMvPjwvcHVibGlzaFByb2ZpbGU+PHB1Ymxpc2hQcm9maWxlIHByb2ZpbGVOYW1lPSJpbGRhckFrdGl2IC0gRlRQIiBwdWJsaXNoTWV0aG9kPSJGVFAiIHB1Ymxpc2hVcmw9ImZ0cDovL3dhd3MtcHJvZC1ibHUtMDE3LmZ0cC5henVyZXdlYnNpdGVzLndpbmRvd3MubmV0L3NpdGUvd3d3cm9vdCIgZnRwUGFzc2l2ZU1vZGU9IlRydWUiIHVzZXJOYW1lPSJpbGRhckFrdGl2XCRpbGRhckFrdGl2IiB1c2VyUFdEPSJzR2t3NDh0OHlGVFJSOFRueTh4dGE4cURnZUJ6TW1nMndSOGV3Y3E2M2h2UWpxM0VYS2RQYmxCQ2thUjIiIGRlc3RpbmF0aW9uQXBwVXJsPSJodHRwOi8vaWxkYXJha3Rpdi5henVyZXdlYnNpdGVzLm5ldCIgU1FMU2VydmVyREJDb25uZWN0aW9uU3RyaW5nPSIiIG15U1FMREJDb25uZWN0aW9uU3RyaW5nPSIiIGhvc3RpbmdQcm92aWRlckZvcnVtTGluaz0iIiBjb250cm9sUGFuZWxMaW5rPSJodHRwOi8vd2luZG93cy5henVyZS5jb20iPjxkYXRhYmFzZXMvPjwvcHVibGlzaFByb2ZpbGU+PC9wdWJsaXNoRGF0YT4NCg0KDQo8cHVibGlzaERhdGE+PHB1Ymxpc2hQcm9maWxlIHByb2ZpbGVOYW1lPSJBa3RpdlZha2F0aW9uIC0gV2ViIERlcGxveSIgcHVibGlzaE1ldGhvZD0iTVNEZXBsb3kiIHB1Ymxpc2hVcmw9ImFrdGl2dmFrYXRpb24uc2NtLmF6dXJld2Vic2l0ZXMubmV0OjQ0MyIgbXNkZXBsb3lTaXRlPSJBa3RpdlZha2F0aW9uIiB1c2VyTmFtZT0iJEFrdGl2VmFrYXRpb24iIHVzZXJQV0Q9Ijl1ZmZxSm02UUF0cUs0TGhqcHBCMEViMUhad0RUR29udW1pZW9RZWJia3I0TFNvb2Nxd2VabU5RV2h1YSIgZGVzdGluYXRpb25BcHBVcmw9Imh0dHA6Ly9ha3RpdnZha2F0aW9uLmF6dXJld2Vic2l0ZXMubmV0IiBTUUxTZXJ2ZXJEQkNvbm5lY3Rpb25TdHJpbmc9IiIgbXlTUUxEQkNvbm5lY3Rpb25TdHJpbmc9IiIgaG9zdGluZ1Byb3ZpZGVyRm9ydW1MaW5rPSIiIGNvbnRyb2xQYW5lbExpbms9Imh0dHA6Ly93aW5kb3dzLmF6dXJlLmNvbSI+PGRhdGFiYXNlcy8+PC9wdWJsaXNoUHJvZmlsZT48cHVibGlzaFByb2ZpbGUgcHJvZmlsZU5hbWU9IkFrdGl2VmFrYXRpb24gLSBGVFAiIHB1Ymxpc2hNZXRob2Q9IkZUUCIgcHVibGlzaFVybD0iZnRwOi8vd2F3cy1wcm9kLWJsdS0wMTcuZnRwLmF6dXJld2Vic2l0ZXMud2luZG93cy5uZXQvc2l0ZS93d3dyb290IiBmdHBQYXNzaXZlTW9kZT0iVHJ1ZSIgdXNlck5hbWU9IkFrdGl2VmFrYXRpb25cJEFrdGl2VmFrYXRpb24iIHVzZXJQV0Q9Ijl1ZmZxSm02UUF0cUs0TGhqcHBCMEViMUhad0RUR29udW1pZW9RZWJia3I0TFNvb2Nxd2VabU5RV2h1YSIgZGVzdGluYXRpb25BcHBVcmw9Imh0dHA6Ly9ha3RpdnZha2F0aW9uLmF6dXJld2Vic2l0ZXMubmV0IiBTUUxTZXJ2ZXJEQkNvbm5lY3Rpb25TdHJpbmc9IiIgbXlTUUxEQkNvbm5lY3Rpb25TdHJpbmc9IiIgaG9zdGluZ1Byb3ZpZGVyRm9ydW1MaW5rPSIiIGNvbnRyb2xQYW5lbExpbms9Imh0dHA6Ly93aW5kb3dzLmF6dXJlLmNvbSI+PGRhdGFiYXNlcy8+PC9wdWJsaXNoUHJvZmlsZT48L3B1Ymxpc2hEYXRhPg==";
            var arr = data.match(/.{1,64}/g);
            var newStr = '';
            arr.forEach(function outputItem(item, i, arr) {
                //newArr.push(item + '\n');
                newStr+= item + '\n';
            });
            newStr = newStr.slice(0,-1); 

            plugin.pluginObject.sign(ui.device(), ui.certificate(), newStr, true, options, $.proxy(function (res) {
                if (ui.useConsole) {
                    console.timeEnd("sign");
                }
                ui.setContent(this.container, res);
                $.proxy(ui.printResult, ui)(res);
            }, this), $.proxy(ui.printError, ui));
        }
    });

Re: кодирование_декодирование_base64

Ок. Спасибо большое. Буду пробовать так.

Re: кодирование_декодирование_base64

Если не проблема, то напишите мне в личку, что за проект вы делаете.