Нужна помощь! Ошибка при проверке подписи: The hash value is not correct. #43
-
Добрый день. Помогите разобраться в чем может заключаться проблема валидации открепленной подписи определенных файлов. Практически все остальные файлы валидируются без ошибок. Валидирую через SignedCms -CheckSignature(true), в момент валидации возникает ошибка. Описание ошибки: The hash value is not correct.System.Security.Cryptography.CryptographicException
HResult=0x80131501
Message=The hash value is not correct.
Source=LibCore.Security.Cryptography.Pkcs
StackTrace:
at LibCore.Security.Cryptography.Pkcs.Detours.SignerInfoDetour.PrepareDigest(Boolean compatMode, SignerInfo instance)
at LibCore.Security.Cryptography.Pkcs.Detours.SignerInfoDetour.VerifySignature(GostCmsSignature signatureProcessor, X509Certificate2 certificate, Boolean compatMode, SignerInfo instance)
at LibCore.Security.Cryptography.Pkcs.Detours.SignerInfoDetour.Prefix(X509Certificate2Collection extraStore, X509Certificate2 certificate, Boolean verifySignatureOnly, SignerInfo __instance)
at System.Security.Cryptography.Pkcs.SignerInfo.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly)
at System.Security.Cryptography.Pkcs.SignedCms.CheckSignatures(SignerInfoCollection signers, X509Certificate2Collection extraStore, Boolean verifySignatureOnly)
at System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly)
at System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(Boolean verifySignatureOnly)
at CryptoTools.Controllers.CryptoController.<VerifySign>d__4.MoveNext() in D:\Projects\SaInSpUtils.DevExpress\CryptoTools\Controllers\CryptoController.cs:line 117
This exception was originally thrown at this call stack:
LibCore.Security.Cryptography.Pkcs.Detours.SignerInfoDetour.PrepareDigest(bool, System.Security.Cryptography.Pkcs.SignerInfo)
LibCore.Security.Cryptography.Pkcs.Detours.SignerInfoDetour.VerifySignature(LibCore.Security.Cryptography.GostCmsSignature, System.Security.Cryptography.X509Certificates.X509Certificate2, bool, System.Security.Cryptography.Pkcs.SignerInfo)
LibCore.Security.Cryptography.Pkcs.Detours.SignerInfoDetour.Prefix(System.Security.Cryptography.X509Certificates.X509Certificate2Collection, System.Security.Cryptography.X509Certificates.X509Certificate2, bool, System.Security.Cryptography.Pkcs.SignerInfo)
System.Security.Cryptography.Pkcs.SignerInfo.CheckSignature(System.Security.Cryptography.X509Certificates.X509Certificate2Collection, bool)
System.Security.Cryptography.Pkcs.SignedCms.CheckSignatures(System.Security.Cryptography.Pkcs.SignerInfoCollection, System.Security.Cryptography.X509Certificates.X509Certificate2Collection, bool)
System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(System.Security.Cryptography.X509Certificates.X509Certificate2Collection, bool)
System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(bool)
CryptoTools.Controllers.CryptoController.VerifySign(System.Guid, System.Guid) in CryptoController.cs Технические подробностиИспользуется LibCore версии 2023.8.9.1. Подпись действительна, валидируется другими средствами. Такая ошибка возникла впервые, остальные подписи валидировались. Изначально подумал что проблема в корневых сертификатах, установил корневые сертификаты. Попробовал свалидировать подпись средствами cryptcp - все проверяется успешно. Подскажите пожалуйста в чем проблема? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 4 replies
-
Здравствуйте, а что за странное условие с ASCII? Он идет по этой ветке или в условие else? Ошибка проверки подписи может быть связана с кодировкой |
Beta Was this translation helpful? Give feedback.
-
У вас присоединённая подпись (содержимое включается в саму подпись). Подпись из вложения успешно проверяется так, явно указывать исходные подписываемые данные в var signedCms = new SignedCms();
// DetachedData - base64 из файла без BEGIN/END и переносов строк
signedCms.Decode(Convert.FromBase64String(DetachedData));
signedCms.CheckSignature(false); |
Beta Was this translation helpful? Give feedback.
У вас присоединённая подпись (содержимое включается в саму подпись).
Подпись из вложения успешно проверяется так, явно указывать исходные подписываемые данные в
ContentInfo
не нужно: