У меня есть функция, которая читает содержимое подписанного файла (например, [MYFILE] .xml.p7m) с помощью этого кода:
Dim signedCms As New SignedCms()
signedCms.Decode([MYFILEBYTES])
Dim content As Byte() = signedCms.ContentInfo.Content
К сожалению, мне нужно запустить эту программу в старой системе "Windows Server 2003 R2", но она генерирует следующее исключение:
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Security.Cryptography.CryptographicException
Stack:
at System.Security.Cryptography.Pkcs.SignedCms.OpenToDecode(Byte[],
System.Security.Cryptography.Pkcs.ContentInfo, Boolean)
at System.Security.Cryptography.Pkcs.SignedCms.Decode(Byte[])
с сообщением «Неизвестный криптографический алгоритм».
На другом компьютере с Windows Server 2003 R2 он работает правильно.
У меня вопрос: какой компонент я должен установить на "Windows Server 2003 R2", чтобы оператор signedCms.Decode работал правильно?
Спасибо за предложение ... Я нашел этот пост docs.microsoft.com/it-it/security-updates/securitybulletins/… и установил патч для ОС Windows Server 2003. Он работает!





Это говорит о том, что в полезной нагрузке указан нестандартный алгоритм подписи или нестандартный алгоритм дайджеста (вам нужно будет предоставить пример для любой другой помощи). Если этот «нестандартный» алгоритм - SHA-2, то вам, вероятно, понадобятся определенные патчи, перечисленные в blogs.technet.microsoft.com/pki/2010/09/30/sha2-and-windows. И перейти на ОС, поддержка которой не прекращалась более 3 лет.