Доброго времени суток!
Я не могу доподписать алгоритмом CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 файл больше 45МБ подписанный CADESCOM_HASH_ALGORITHM_CP_GOST_3411 вылетает ошибка "
Lost connection to extension" на yield oSignedData1.propset_Content(Base64Data); тоже и при обратной последовательности алгоритмов.
В документации написано что в зависимости от конфигурации компьютера (используемая оперативная память, количество открытых вкладок браузера и т.п.) размер файлов, которые возможно будет подписать вариируется от 10 МБ до 60 МБ. Если есть необходимость подписания файлов большего размера, то рекомендуется использовать Подпись файла с использованием FileAPI. Что я и делаю как описано в Подпись файла с использованием FileAPI и чтением файла по частям т.е. кодированный файл частями добавляю в yield oHashedData1.Hash(Base64Data[i]); и далее само доподписание:
var oSignedData1 = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData1.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
yield oSignedData1.propset_Content(Base64Data);
yield oSignedData1.VerifyCades(sign_message, cadesplugin.CADESCOM_CADES_BES, true);
var sSignedMessage1 = yield oSignedData1.CoSignHash(oHashedData1, oSigner1, cadesplugin.CADESCOM_CADES_BES);
Для файлов меньше 45МБ все проходит отлично вне зависимости от того каким алгоритмом был сначала подписан файл Алгоритмом ГОСТР34.11-94 или Алгоритмом ГОСТР34.10-2012. Или это третье подписание 3411 когда файл уже был подписан и 3411 и 3411_2012_256. Большой файл при этом выдает ошибку "Lost connection to extension" на yield oSignedData1.propset_Content(Base64Data); потому что просто не помешается. Раньше я использовал:
var oSignedData1 = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData1.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
yield oSignedData1.VerifyHash(oHashedData1, sign_message, cadesplugin.CADESCOM_CADES_BES);
var sSignedMessage1 = yield oSignedData1.CoSignHash(oHashedData1, oSigner1, cadesplugin.CADESCOM_CADES_BES);
И это работает при доподписании файла любого размера но только одним алгоритмом заранее указанным в
var oHashedData1 = yield cadesplugin.CreateObjectAsync("CAdESCOM.HashedData");
yield oHashedData1.propset_DataEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
yield oHashedData1.propset_Algorithm(oAlg);// 100 или 101
иначе ошибка "
неправильное значение хэша".
Я вижу здесь не разрешимое противоречие
или доподписывать маленький файл(в моем случае <45МБ) любым из двух алгоритмом или любой файл но только алгоритмом первой подписи. Подскажите пожалуйста выход из данного тупика.