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

Вернуть функциональность метода ContainerCertificate для Gost_XXX_CryptoServiceProvider из Sharpei #27

Open
Fasjeit opened this issue Jun 4, 2020 · 7 comments
Assignees
Labels
enhancement New feature or request Need tests

Comments

@Fasjeit
Copy link
Collaborator

Fasjeit commented Jun 4, 2020

Вернуть метод по заданию и получению сертификатов через открытый в CSP контейнер.

Основная проблема - невозможность использовать сборку X509 внутри сборки CSP. Возможно придётся делать полуметод в Csp сборке, и метод в x509Certificates, который его вызывает (в виде расширения?)

@Fasjeit Fasjeit added the enhancement New feature or request label Jun 4, 2020
@Fasjeit Fasjeit self-assigned this Jun 4, 2020
@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Jun 4, 2020

Сообщение на форме - https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=115925#post115925

@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Jul 2, 2020

Т.к. не можем обращаться в x509 внутри Csp сборки сделали через отдельные методы.

Для получения сертификата нужно проставить ссылку на закрытый ключ:

using (Gost3410_2012_256CryptoServiceProvider prov = GetGostProviderWithCert())
{
    var certData = prov.ContainerCertificate;
    var certFromContainer = new X509Certificate2(certData);
    certFromContainer.PrivateKey = prov;
}

либо использовать новый конструктор:

using (Gost3410_2012_256CryptoServiceProvider prov = GetGostProviderWithCert())
{
    var certData = prov.ContainerCertificate;
    var certFromContainer = new X509Certificate2(certData, prov);
}

Открытие контейнера с сертификатом, например так

private static Gost3410_2012_256CryptoServiceProvider GetGostProviderWithCert()
{
    CspParameters cpsParams = new CspParameters(
        75,
        "",
        "\\\\.\\HDIMAGE\\09041229");
     return new Gost3410_2012_256CryptoServiceProvider(cpsParams);
}

@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Jul 2, 2020

ToDo: add tests

@Fasjeit Fasjeit changed the title Вернуть метод ContainerCertificate для Gost_XXX_CryptoServiceProvider из Sharpei Вернуть функциональность метода ContainerCertificate для Gost_XXX_CryptoServiceProvider из Sharpei Jul 2, 2020
@madmaxio
Copy link

madmaxio commented Aug 4, 2020

Подскажите, может ли этот проект работать на linux? Если да какой нужно для этого CSP нужен и где можно более подробную информацию получить? Можно ли поучаствовать в проекте?

@KovtunovSergey
Copy link
Member

@madmaxio может, версии CSP начиная с 4.0, далее смотрите раздел Wiki https://github.com/CryptoPro/corefx/wiki

@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Aug 4, 2020

@madmaxio Текущие инструкции по сборке можно посмотреть в тестовом проекте windows, linux. Если интересует локальная сборка модифицированного рантайма обратите внимание на раздел "Сборка проекта со сборкой corefx" в обоих файлах.

Желательная версия CSP - текущий релиз 5.0. В более ранних версиях есть некоторые ошибки на Linux.
Wiki сейчас носит исключительно информационно-историческую ценность. За актуальными инструкциями по сборке рекомендуется обращаться к инструкциям в тестовом проекте.

@madmaxio
Copy link

madmaxio commented Aug 4, 2020

Спасибо.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request Need tests
Projects
None yet
Development

No branches or pull requests

3 participants