Статус: Участник
Группы: Участники
Зарегистрирован: 24.12.2018(UTC) Сообщений: 13 Откуда: Россия
|
Автор: Максим Коллегин Может поделитесь кодом, чтобы я мог попробовать у себя? using System.Security.Cryptography.Pkcs; using System.Security.Cryptography.X509Certificates; private byte[] SignIt(byte[] input, X509Certificate2 cert) { try { ContentInfo contentInfo = new ContentInfo(input); SignedCms cms = new SignedCms(contentInfo, false); CmsSigner signer = new CmsSigner(cert); cms.ComputeSignature(signer, true); //вот здесь при запуске в Ms Excel возникает ошибка 'Доступ запрещен' byte[] output = cms.Encode(); return output; } catch (Exception x) { throw new Exception($"Ошибка подписания запроса при помощи сертификата пользователя. {x.Message}", x); } }
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
А если использовать встроенный в систему криптопровайдер -- подпись работает? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.12.2018(UTC) Сообщений: 13 Откуда: Россия
|
Автор: Максим Коллегин А если использовать встроенный в систему криптопровайдер -- подпись работает? Как это проверить: удалить КриптоПро и подписать?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Можно и не удалять, достаточно сделать сертификат на встроенном криптопровайдере. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.12.2018(UTC) Сообщений: 13 Откуда: Россия
|
Вопрос решен.
Резюме:
Если при использовании сертификатов ЭЦП в проектах MS Office (VSTO) в момент подписи документа при помощи сертификата методом SignedCms.ComputeSignature (пространство имен System.Security.Cryptography.Pkcs) возникает ошибка "Отказано в доступе", то нужно: - 32-битная версия MS Office: добавить в реестр "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\AppV\Subsystem\VirtualRegistry" в PassThroughPaths вот этот путь "HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro" - 64-битная версия MS Office: добавить в реестр "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\AppV\Subsystem\VirtualRegistry" в PassThroughPaths вот этот путь "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro"
Как сообщил Максим Коллегин, которому большое спасибо за помощь в решении данной проблемы, дистрибутивы КриптоПро обновлен и данной ошибки после обновления КриптоПро возникать не должно.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 14.12.2020(UTC) Сообщений: 3 Откуда: msk
|
Добрый день. Подскажите, пожалуйста, - та-же ошибка Access Denied, в том-же месте кода - при вызове ComputeSignature, но вызов не из проекта MS Office, а из обычного приложения. КриптоПро CSP 4.0.9963 Код:
at System.Security.Cryptography.Pkcs.SignedCms.CoSign(CmsSigner signer, Boolean silent)
at System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer, Boolean silent)
at sprelib.SignatureHelper.addsign(Byte[] data, Boolean isdeatach, Byte[] signs, X509Certificate2 certificate, Stream output)
Причем ошибка возникает при добавлении второй отсоединенной подписи. При первом подписывании всё норм. Как бороться ? Отредактировано пользователем 14 декабря 2020 г. 16:17:25(UTC)
| Причина: уточнение
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Сходу сложно сказать, на версии CSP5R2 воспроизводится? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 14.12.2020(UTC) Сообщений: 3 Откуда: msk
|
Автор: Максим Коллегин Сходу сложно сказать, на версии CSP5R2 воспроизводится? Не получится проверить. К сожалению у нас есть только 4 версия CSP
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 14.12.2020(UTC) Сообщений: 3 Откуда: msk
|
Появилась дополнительная информация по ошибке : Ошибка возникает при подписывании подписями с разными ГОСТ, то-есть когда подписываем отсоединенными подписями, например : ГОСТ 2001 + ГОСТ 2012 или ГОСТ 2012 + ГОСТ 2001 Если подписывать ГОСТ 2001 + ГОСТ 2001 или ГОСТ 2012 + ГОСТ 2012, всё нормально upd : попробовали в CSP5. Ошибка повторяется. Отредактировано пользователем 21 декабря 2020 г. 17:29:16(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close