Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2020(UTC) Сообщений: 4
|
Подскажите, как можно на стороне .net core проверить подпись в виде хэша, который создается плагином криптопро для браузеров? Заранее извиняюсь, если вдруг тот вопрос был уже. Не нашел что-то ответа. Или не понял его.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Автор: Gelious Подскажите, как можно на стороне .net core проверить подпись в виде хэша, который создается плагином криптопро для браузеров? Заранее извиняюсь, если вдруг тот вопрос был уже. Не нашел что-то ответа. Или не понял его. Для начала вам нужно разобраться, какой именно тип подписи формируется через плагин. Если Cades - то способ проверки на Linux это использование PInvoke на cades в csp. Если cms или xml - можно проверить, используя наш форк. Примеры проверки cms и xml аналогичны соответствующим примерам из КриптоПро.Net sdk (Классы SignedCms или SignedXml). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.05.2017(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 6 раз Поблагодарили: 2 раз в 2 постах
|
Добрый день. Создал сертификат используя проект DotnetCoreSampleProject
Получился сертификат: Issuer : CN=Experimental Issuing Authority Subject : CN=Experimental Issuing Authority Serial : 0x2F85BDF0478522C5 SHA1 Hash : 790eac451d28445715b74f6aae058efc1ae8e3d3 SubjKeyID : a49e62e27489710efb1ac170c50fa5fb12883b00 Signature Algorithm : ГОСТ Р 34.10-2001 PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits) Not valid before : 24/06/2020 09:20:22 UTC Not valid after : 08/08/2021 09:20:22 UTC PrivateKey Link : Yes Container : 2739bc65-1506-4da6-9388-993e76bd8408 Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0
Подскажите, почему Signature Algorithm : ГОСТ Р 34.10-2001, не должен ли он быть ГОСТ Р 34.10-2012?
|
1 пользователь поблагодарил thoth за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,318 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
Автор: thoth Добрый день. Создал сертификат используя проект DotnetCoreSampleProject
Получился сертификат: Issuer : CN=Experimental Issuing Authority Subject : CN=Experimental Issuing Authority Serial : 0x2F85BDF0478522C5 SHA1 Hash : 790eac451d28445715b74f6aae058efc1ae8e3d3 SubjKeyID : a49e62e27489710efb1ac170c50fa5fb12883b00 Signature Algorithm : ГОСТ Р 34.10-2001 PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits) Not valid before : 24/06/2020 09:20:22 UTC Not valid after : 08/08/2021 09:20:22 UTC PrivateKey Link : Yes Container : 2739bc65-1506-4da6-9388-993e76bd8408 Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0
Подскажите, почему Signature Algorithm : ГОСТ Р 34.10-2001, не должен ли он быть ГОСТ Р 34.10-2012? Должен, как создавали сертификат? Обращались к тестовому УЦ с ГОСТ 2001? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,318 Сказал «Спасибо»: 549 раз Поблагодарили: 2207 раз в 1722 постах
|
Автор: thoth Добрый день. Создал сертификат используя проект DotnetCoreSampleProject
Получился сертификат: Issuer : CN=Experimental Issuing Authority Subject : CN=Experimental Issuing Authority Serial : 0x2F85BDF0478522C5 SHA1 Hash : 790eac451d28445715b74f6aae058efc1ae8e3d3 SubjKeyID : a49e62e27489710efb1ac170c50fa5fb12883b00 Signature Algorithm : ГОСТ Р 34.10-2001 PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits) Not valid before : 24/06/2020 09:20:22 UTC Not valid after : 08/08/2021 09:20:22 UTC PrivateKey Link : Yes Container : 2739bc65-1506-4da6-9388-993e76bd8408 Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0
Подскажите, почему Signature Algorithm : ГОСТ Р 34.10-2001, не должен ли он быть ГОСТ Р 34.10-2012? Signature Algorithm : ГОСТ Р 34.10-2001 = это алгоритм подписи УЦ, а не вашего сертификата, в вашем используется 2012. Используйте УЦ с ГОСТ 2012. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.05.2017(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 6 раз Поблагодарили: 2 раз в 2 постах
|
Автор: Андрей * Автор: thoth Добрый день. Создал сертификат используя проект DotnetCoreSampleProject
Получился сертификат: Issuer : CN=Experimental Issuing Authority Subject : CN=Experimental Issuing Authority Serial : 0x2F85BDF0478522C5 SHA1 Hash : 790eac451d28445715b74f6aae058efc1ae8e3d3 SubjKeyID : a49e62e27489710efb1ac170c50fa5fb12883b00 Signature Algorithm : ГОСТ Р 34.10-2001 PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits) Not valid before : 24/06/2020 09:20:22 UTC Not valid after : 08/08/2021 09:20:22 UTC PrivateKey Link : Yes Container : 2739bc65-1506-4da6-9388-993e76bd8408 Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0
Подскажите, почему Signature Algorithm : ГОСТ Р 34.10-2001, не должен ли он быть ГОСТ Р 34.10-2012? Должен, как создавали сертификат? Обращались к тестовому УЦ с ГОСТ 2001? Я использовал метод из примера: /// <summary> /// Создать сертификат ГОСТ 34.10.2012 256 /// </summary> private static void MakeMeCert() { using (var parent = new Gost3410_2012_256CryptoServiceProvider()) { var parentReq = new CertificateRequest( "CN=Experimental Issuing Authority", parent, HashAlgorithmName.Gost3411_2012_256); parentReq.CertificateExtensions.Add( new X509BasicConstraintsExtension(true, false, 0, true)); parentReq.CertificateExtensions.Add( new X509SubjectKeyIdentifierExtension(parentReq.PublicKey, false)); using (var parentCert = parentReq.CreateSelfSigned( DateTimeOffset.UtcNow.AddDays(-45), DateTimeOffset.UtcNow.AddDays(365))) { byte[] certData = parentCert.Export(X509ContentType.Pfx, "1"); File.WriteAllBytes(@"MyCert.pfx", certData); } } }
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Автор: thoth Автор: Андрей * Автор: thoth Добрый день. Создал сертификат используя проект DotnetCoreSampleProject
Получился сертификат: Issuer : CN=Experimental Issuing Authority Subject : CN=Experimental Issuing Authority Serial : 0x2F85BDF0478522C5 SHA1 Hash : 790eac451d28445715b74f6aae058efc1ae8e3d3 SubjKeyID : a49e62e27489710efb1ac170c50fa5fb12883b00 Signature Algorithm : ГОСТ Р 34.10-2001 PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits) Not valid before : 24/06/2020 09:20:22 UTC Not valid after : 08/08/2021 09:20:22 UTC PrivateKey Link : Yes Container : 2739bc65-1506-4da6-9388-993e76bd8408 Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider Provider Info : ProvType: 80, KeySpec: 1, Flags: 0x0
Подскажите, почему Signature Algorithm : ГОСТ Р 34.10-2001, не должен ли он быть ГОСТ Р 34.10-2012? Должен, как создавали сертификат? Обращались к тестовому УЦ с ГОСТ 2001? Я использовал метод из примера: /// <summary> /// Создать сертификат ГОСТ 34.10.2012 256 /// </summary> private static void MakeMeCert() { using (var parent = new Gost3410_2012_256CryptoServiceProvider()) { var parentReq = new CertificateRequest( "CN=Experimental Issuing Authority", parent, HashAlgorithmName.Gost3411_2012_256); parentReq.CertificateExtensions.Add( new X509BasicConstraintsExtension(true, false, 0, true)); parentReq.CertificateExtensions.Add( new X509SubjectKeyIdentifierExtension(parentReq.PublicKey, false)); using (var parentCert = parentReq.CreateSelfSigned( DateTimeOffset.UtcNow.AddDays(-45), DateTimeOffset.UtcNow.AddDays(365))) { byte[] certData = parentCert.Export(X509ContentType.Pfx, "1"); File.WriteAllBytes(@"MyCert.pfx", certData); } } } День добрый. Была ошибка - неправильно проставлялся OID для сертификата. Сейчас исправили. Можно пробовать ночную сборку. https://ci.appveyor.com/...o/corefx/builds/34567607(visual studio (windows) / ubuntu) -> (artifacts) |
|
1 пользователь поблагодарил Артём Макаров за этот пост.
|
thoth оставлено 11.08.2020(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 21.05.2017(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 6 раз Поблагодарили: 2 раз в 2 постах
|
Автор: Артём Макаров Вы изменили на Oids.Gost3410_2012_256 и Oids.Gost3410_2012_512, которые в свою очередь соответствуют константам: public const string Gost3410_2012_256 = GostConstants.OID_CP_GOST_R3410_12_256; public const string Gost3410_2012_512 = GostConstants.OID_CP_GOST_R3410_12_512; Константы соответствуют: /// <summary> /// OID алгоритма открытого ключа/цифровой подписи ГОСТ Р 34.10-2012 256 /// </summary> internal const string OID_CP_GOST_R3410_12_256 = "1.2.643.7.1.1.1.1"; /// <summary> /// OID алгоритма открытого ключа/цифровой подписи ГОСТ Р 34.10-2012 512 /// </summary> internal const string OID_CP_GOST_R3410_12_512 = "1.2.643.7.1.1.1.2"; Вопрос:Почему не вот эти oid-ы: /// <summary> /// OID алгоритма цифровой подписи ГОСТ Р 34.10-2012 256 (используется как SignatureAlgorithm в сертификате) /// </summary> internal const string OID_CP_GOST_R3411_12_256_R3410 = "1.2.643.7.1.1.3.2"; /// <summary> /// OID алгоритма цифровой подписи ГОСТ Р 34.10-2012 512 (используется как SignatureAlgorithm в сертификате) /// </summary> internal const string OID_CP_GOST_R3411_12_512_R3410 = "1.2.643.7.1.1.3.3";
|
1 пользователь поблагодарил thoth за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.07.2020(UTC) Сообщений: 4
|
Автор: Артём Макаров Автор: Gelious Подскажите, как можно на стороне .net core проверить подпись в виде хэша, который создается плагином криптопро для браузеров? Заранее извиняюсь, если вдруг тот вопрос был уже. Не нашел что-то ответа. Или не понял его. Для начала вам нужно разобраться, какой именно тип подписи формируется через плагин. Если Cades - то способ проверки на Linux это использование PInvoke на cades в csp. Если cms или xml - можно проверить, используя наш форк. Примеры проверки cms и xml аналогичны соответствующим примерам из КриптоПро.Net sdk (Классы SignedCms или SignedXml). У нас на клиенте используется для подписи модели json плагин КриптоПро. И на сервере требуется расшифровать подпись, чтоб получить из нее данные. Не понятно, какую библиотеку для этого использовать и как. Ну или какой-нибудь сторонний апи. Насколько я понимаю, сформированная подпись в формате Pkcs7 Отредактировано пользователем 13 августа 2020 г. 10:07:50(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close