Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.1.31 SignedXml.ComputeSignature CryptographicException: Failed to create signing key #61

Closed
emejibka opened this issue Nov 21, 2022 · 4 comments
Assignees
Labels
invalid This doesn't seem right question Further information is requested

Comments

@emejibka
Copy link

Здравствуйте.
После обновления пакетов и рантайма из задачи #60, появились ошибки вычисления подписи в xml, на некоторых сертификатах, сделал тестовый проект на старой и новой версии рантайма, на старой версии ошибка не воспроизводится.
В стеке ничего особо информативного нет

System.Security.Cryptography.CryptographicException: Failed to create signing key.
   at System.Security.Cryptography.Xml.SignedXml.ComputeSignature()

Ссылки на примеры и тестовый сертификат (пароль на сертификат - пробел):
https://disk.yandex.ru/d/L487xFoXz6t-Hg
https://disk.yandex.ru/d/JTZYr2J7-XQSMA
https://disk.yandex.ru/d/KyTSixQutCmr6w

@emejibka
Copy link
Author

На windows воспроизводится, перед запускам примера необходимо поставить сертификат.

@Fasjeit Fasjeit self-assigned this Nov 21, 2022
@Fasjeit Fasjeit added invalid This doesn't seem right question Further information is requested labels Nov 21, 2022
@Fasjeit
Copy link
Collaborator

Fasjeit commented Nov 21, 2022

#59

@Fasjeit
Copy link
Collaborator

Fasjeit commented Nov 21, 2022

Проблема в том, в bin попадает сборка System.Security.Cryptography.Xml из рантайма, а не из packages\bin.

По опыту такое происходит тогда, когда установлена более свежая версия рантайма, чем используется в форке (в данном случае 3.1.31, используемая 3.1.30). При данной конфигурации build начинает проявлять интеллект и подсовывать сборки из рантайма, а не из указанный явно в проекте.

Дабы не выравнивать версии в форке и на машине (которые всё равно часто плавают) постоянно - решения следующие:

  1. Сделать post build event, который руками положит в bin нужные xml и pkcs сборки
  2. Или указать в проекте версию рантайма 3.1.3. Очень похоже, что если версия сборок меньше, чем версия рантайма - всегда используются сборки по ссылке. Бояться что стоит 3.1.3 не стоит - все сборки всё равно будут резолвиться в наш форкнутый рантайм версии 3.1.30. Т.е. будет загружен рантайм 3.1.3 для сборки, и параллельно форк 3.1.30, при этом использоваться будет второй и явно указанные сборки из проекта.

@Fasjeit Fasjeit changed the title System.Security.Cryptography.CryptographicException: Failed to create signing key 3.1.31 SignedXml.ComputeSignature CryptographicException: Failed to create signing key Nov 21, 2022
@emejibka
Copy link
Author

Спасибо, действительно не та версия сборки попадала в бинарники, но меня смутило что на некоторых текстовых сертификатах ошибка при этом не воспроизводилась.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
invalid This doesn't seem right question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants