Статус: Новичок
Группы: Участники
Зарегистрирован: 22.03.2021(UTC) Сообщений: 3
Сказал(а) «Спасибо»: 1 раз
|
В документах по ГИС ЖКХ есть ссылка на примеры подписи xml: Ssylka na git.png (60kb) загружен 4 раз(а).В этих примерах есть библиотека Xades: Ssylka na library .png (27kb) загружен 8 раз(а).Объект SignatureDescription используется для формирования SignatureValue, который в дальнейшем фигурирует в передаваемой xml. kod.png (86kb) загружен 4 раз(а). kod2.png (84kb) загружен 3 раз(а).Всё это прекрасно работает на .NET Framework, но хотелось проверить, как без изменения этого кода будет работать на .NET Core
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
В core изменилась работа CryptoConfig. Теперь честно через него нельзя получить SignatureDescription, ибо он в нём отсутствует. В core описания SignatureDescription переехали во внутренний закртый класс CryptoHelpers в сборке Xml. CryptoConfig из старого фреймворка - https://referencesource....nfig.cs,2f2b8dcdee3aa37dНовый конфиг - https://github.com/dotne...tography/CryptoConfig.csНовый конфиг Xml - https://github.com/dotne...phy/Xml/CryptoHelpers.csОткрывать CryptoHelpers, как и делать по старому CryptoConfig пока не планируем, ибо стараемся сохранить максимальную совместимость с оригинальным core, даже в рамках спорных решений. Как вариант вам - либо получить CryptoHelpers из сборки System.Security.Cryptography.Xml и пользоваться им, либо написать функцию, которая сама по строке будет возвращать нужный тип описания. Код:var assm = Assembly.GetAssembly(typeof(SignedXml));
var type = assm.GetType("System.Security.Cryptography.Xml.CryptoHelpers");
var createFromKnownNameMethod = type.GetMethod(
"CreateFromKnownName",
BindingFlags.Static | BindingFlags.Public);
var descr = createFromKnownNameMethod.Invoke(null, new object[] { SignedXml.XmlDsigGost3410_2012_256Url });
|
|
1 пользователь поблагодарил Артём Макаров за этот пост.
|
madsen оставлено 23.03.2021(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 22.03.2021(UTC) Сообщений: 3
Сказал(а) «Спасибо»: 1 раз
|
Да, код рабочий, SignatureDescription таким образом можно получить. Ещё вопрос по поводу метода SetContainerPassword. Он убран и ему нет альтернативы? SetContPass.png (171kb) загружен 7 раз(а). NoSet.png (174kb) загружен 4 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Данный метод пока не реализовывали. Постараемся в ближайшее время добавить. В текущей версии указывать пароль на контейнер можно через указание его в CspParameters (KeyPassword). Отредактировано пользователем 24 марта 2021 г. 10:43:19(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.05.2020(UTC) Сообщений: 6
Сказал(а) «Спасибо»: 2 раз Поблагодарили: 1 раз в 1 постах
|
Коллеги, возникла нестандартная потребность. У клиента имеется лицензия на CSP 4.0, хочется на неткоре как-то взлететь с этой версией. Если попробовать поднять приложение и поработать с ним, то натыкаюсь на ошибку: Цитата:System.EntryPointNotFoundException: Unable to find an entry point named 'CertAddCertificateLinkToStore' in shared library 'libcapi20'. at Interop.crypt32.CertAddCertificateLinkToStore(SafeCertStoreHandle hCertStore, SafeCertContextHandle pCertContext, CertStoreAddDisposition dwAddDisposition, IntPtr ppStoreContext) at Internal.Cryptography.Pal.StorePal.LinkFromCertificateCollection(X509Certificate2Collection certificates) at Internal.Cryptography.Pal.FindPal..ctor(X509Certificate2Collection findFrom, X509Certificate2Collection copyTo, Boolean validOnly) at Internal.Cryptography.Pal.FindPal.OpenPal(X509Certificate2Collection findFrom, X509Certificate2Collection copyTo, Boolean validOnly) at Internal.Cryptography.Pal.FindPal.FindFromCollection(X509Certificate2Collection coll, X509FindType findType, Object findValue, Boolean validOnly) at System.Security.Cryptography.X509Certificates.X509Certificate2Collection.Find(X509FindType findType, Object findValue, Boolean validOnly) Подскажите, пожалуйста, в какую сторону копать, чтобы выйти из ситуации?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
На 4.0 полностью не взлетим, только с 5.0, причём относительно свежей. Вносили доработки и правки в саму CSP для корректной работы некоторых методов. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.09.2018(UTC) Сообщений: 4 Сказал «Спасибо»: 1 раз
|
Хочу уточнить, можно ли сейчас проверить открепленную подпись, полученную от cryptopro plugin? Подписывали хэш, подпись в формате cades-bes.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.03.2021(UTC) Сообщений: 1 Откуда: Korolyov
|
Добрый день! Возникла проблема с итеграцией с libcapi20 на AstraLinux. Сама либа подключается ок. Сертификаты и контейнеры находятся в системе, но возникает ошибка при проверке наличия сертификата в контейнерах. На Windows интеграция идет с либами crypt32.dll и advapi32.dll - проблемы не возникает. Системный журнал AstraLinux пишет следующее. мар 29 17:03:10 f3pos dotnet[1983]: <capi10>CryptAcquireContextW!WideCharToMultiByte error! мар 29 17:03:10 f3pos dotnet[1983]: <capi10>CryptGetUserKey!() invalid argument(s)! мар 29 17:03:10 f3pos dotnet[1983]: <capi10>CryptGetUserKey!failed: LastError = 0x57 мар 29 17:03:10 f3pos dotnet[1983]: <capi20>CryptExportPublicKeyInfoEx!failed: LastError = 0x57 мар 29 17:03:10 f3pos dotnet[1983]: <capi20>CryptExportPublicKeyInfo!failed: LastError = 0x57 мар 29 17:03:10 f3pos dotnet[1983]: <capi10>CryptGetUserKey!() invalid argument(s)! мар 29 17:03:10 f3pos dotnet[1983]: <capi10>CryptGetUserKey!failed: LastError = 0x57 мар 29 17:03:10 f3pos dotnet[1983]: <capi20>CryptExportPublicKeyInfoEx!failed: LastError = 0x57 мар 29 17:03:10 f3pos dotnet[1983]: <capi20>CryptExportPublicKeyInfo!failed: LastError = 0x57 начинается все с вызова метода CryptExportPublicKeyInfo имплементация: [DllImport("libcapi20.so", EntryPoint = "CryptExportPublicKeyInfo", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool CryptExportPublicKeyInfo( [In] IntPtr hProv, [In] uint dwKeySpec, [In] uint dwCertEncodingType, [Out] IntPtr pInfo, [In, Out] ref uint pcbInfo); сам кроссплатформенный сервис реализован на .net core 3.1 Отредактировано пользователем 29 марта 2021 г. 22:12:20(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.03.2021(UTC) Сообщений: 7 Откуда: Рязань Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте! Подскажите, пожалуйста, способ шифрования подписанного XML с использованием вашего CSP на Core. Необходимо создать сессионный ключ и зашифровать некоторые данные XML и сам ключ. Возможно у вас найдется какой-нибудь пример? Это бы очень облегчило жизнь) Ниже на всякий случай приведу указанные алгоритмы. Шифрование ключа по ГОСТ 2012-256: urn:ietf:params:xml:ns:cpxmlsec:algorithms:transport-gost2012-256 Шифрование данных: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gost28147 Спасибо! PS: с шифрованием ранее не сталкивался, поэтому если я что не так написал, прошу меня понять и простить) Upd: Нашел некий пример шифрования на Framework по своей задаче. Классы там более менее те же, (без "CP"). http://www.cryptopro.ru/...&m=111050#post111050Взаимодействие с контейнером CSP происходит. Значит механизм рабочий. Но если вдруг пример у кого нибудь есть, поделитесь пожалуйста. Спасибо! Отредактировано пользователем 30 марта 2021 г. 12:53:44(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.04.2021(UTC) Сообщений: 5 Откуда: Нижний Новгород
|
Прошу помощи по работе с проверкой цифровой подписи. Установлены Инструменты КриптоПРО. При помощи инструментов КриптоПРО создан сертификат Алгоритм подписи : ГОСТ Р 34.11/34.10-2001 Алгоритм откр. кл. : ГОСТ Р 34.10-2012 256 бит (512 бит) При помощи этого сертификата подписан файл File, получена подпись File.p7s Сертификат экспортирован в файл. Используя DotnetSampleProject подгружаем Сертификат, файл и файл подписи. Проверяем подпись - подпись не валидна. Код:var hash = HashAlgorithmName.Gost3411_2012_256;
var gostPk = gostCert.GetGost3410_2012_256PublicKey();
var dataValidationResult = gostPk.VerifyData(file, signedFile, hash);
dataValidationResult - false
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close