KalkanCryptCom несколько проблем

  1. Сформированная подпись проходит проверку на ezsigner.kz, но если посмотреть на полученные данные как на контейнер ASN.1 (Например здесь http://lapo.it/asn1js/), то становится понятно, что в конце контейнера лишний байт равный 0. Это мешает некоторым сервисам корректно проверять данную подпись.
    Для формирования подписи используем вызов: SignData("", 2+16+2048, ДанныеДляПодписиВBase64, ПодписьВBase64)

  2. Стандарт Base64 предполагает, что строка данных должна быть разделена на строки не более 76 символов. Если передать в метод SignData такие “разделенные” данные, то результирующая подпись возвращается пустой при этом GetLastError = 0

  3. В документации заявлено, что практически все методы возвращают 0 или 1 в случае успеха или ошибки. В скриптовых языках, например, VBA,VBS, 1C это не работает, всегда возвращается пустое значение.

  4. Терминальный сервер (ограниченные права пользователя) + ПроксиСервер + Флаг 256 (отметка времени) приводят к падению библиотеки совместно с вызвавшим приложением. Воспроизводится на приложении из SDK (лежит в каталоге CSharp).
    Данные ошибки: Имя события проблемы: BEX
    Имя приложения: 1CV8C.exe
    Версия приложения: 8.3.15.1830
    Отметка времени приложения: 5df72045
    Имя модуля с ошибкой: MSVCR120.dll
    Версия модуля с ошибкой: 12.0.40649.5
    Отметка времени модуля с ошибкой: 56bc018f
    Смещение исключения: 000a47ab
    Код исключения: c0000417
    Данные исключения: 00000000
    Версия ОС: 6.1.7601.2.1.0.16.7
    Код языка: 1049
    Дополнительные сведения 1: 34a7
    Дополнительные сведения 2: 34a7ffd63fafc09aeeb55ce559df1001
    Дополнительные сведения 3: 3206
    Дополнительные сведения 4: 32066efc7f99a154c4f319f8448922fe

Добрый вечер,

Я бы рекомендовал вам подписывать с помощью NCALayer - это отработанный и активно используемый инструмент. Взаимодействовать с ним так же не сложно - WebSocket библиотеки есть практически для любых языков программирования. Бонусом получаете поддержку токенов, смарт-карт и удостоверений личности. Я на хабре писал как веб приложение с ним интегрировать, но, по сути, разницы особой нет: https://habr.com/ru/post/509108/

Только не подумайте что это официальный ответ из НИТ, я не сотрудник.

Добрый день!

  1. Символ 0 действительно есть. Но он установлен в связи со специфичностью реализации кода. Данный момент рассмотрим и предпримем меры для его исправления.

  2. Данная ситуация имеет место быть. Мы исправим ее в следующем обновлении.

  1. Да. При работе в скриптовых языках с KalkanCryptCOM нет возможности получить возвратный ответ методов. Необходимо при каждом вызове определенного метода вызывать метод GetLastErrorString().В это случае Вы получите сведенья об ошибке.
  1. Опишите подробнее, какие методы Вы запускаете и с какими параметрами?