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

Проблема(?) с настройками по-умолчанию #17

Open
Uriel6575 opened this issue Mar 29, 2019 · 4 comments
Open

Comments

@Uriel6575
Copy link

И снова приветствую!

Не уверен, что это баг, но с виду выглядит, что так.
Последовал данному в другом вопросе совету и убрал передачу типа провайдера в конструкторы алгоритмов. Использую соответствующие свойства GostCryptoConfig.

И тут вдруг выяснилось, что сломалось шифрование на сертификат ФСС, выпущенный по новым ГОСТам. Лечится это явной передачей CryptoPro_2012_512 в конструктор Gost_28147_89_SymmetricAlgorithm. Решил посмотреть, что происходит по-умолчанию и дошёл вот до этого куска:

protected GostSymmetricAlgorithm() : this(GostCryptoConfig.ProviderType)
{
}

Но ведь если шифрование идёт на новый ГОСТ, то надо брать значение не из ProviderType, а из ProviderType_2012_5121 или ProviderType_2012_1024. Не знаю, можно ли с этим что-то сделать, но поведение странное.

@AlexMAS
Copy link
Owner

AlexMAS commented Mar 30, 2019

Это странно, т.к. алгоритм симметричного шифрования не менялся и должен поддерживаться всеми криптопровпйдерами. Может, конечно, в новых версиях CryptoPro что-то изменилось. Можете сказать, какая у вас версия и привести пример кода.

@AlexMAS
Copy link
Owner

AlexMAS commented Mar 30, 2019

Да, есть ещё вариант, что от GostSymmetricAlgorithm.ProviderType зависит другой код, нужно посмотреть. Но пример использования был бы кстати. :)

@Uriel6575
Copy link
Author

Да всё просто, собственно. Или я что-то не так делаю?

using System;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Xml;
using GostCryptography.Base;
using GostCryptography.Config;
using GostCryptography.Gost_28147_89;
using GostCryptography.Xml;

namespace CryptoSample {
    internal class Program {
        public static void Main() {
            var fssCertUri = new Uri("https://cabinets.fss.ru/FSS_PROD_CERT_2019_34.10-2012.cer");
            var fssCertBytes = new WebClient().DownloadData(fssCertUri);
            var fssCert = new X509Certificate2(fssCertBytes);

            GostCryptoConfig.ProviderType_2012_512 = ProviderType.CryptoPro_2012_512;

            var xml = new XmlDocument();
            xml.LoadXml("<Test />");

            using (var gost28147 = new Gost_28147_89_SymmetricAlgorithm())
                GostEncryptedXml.EncryptKey(gost28147, (GostAsymmetricAlgorithm)fssCert.GetPublicKeyAlgorithm());
        }
    }
}

@Uriel6575
Copy link
Author

Ах да, прошу прощения.
КриптоПро CSP 4.0.9963
ViPNet CSP 4.2 (8.51670)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants