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

Реализация экспорта\транспорта\keyWrap\EncryptedXml #43

Open
Fasjeit opened this issue Jan 27, 2021 · 3 comments
Assignees
Labels
enhancement New feature or request Need tests

Comments

@Fasjeit
Copy link
Collaborator

Fasjeit commented Jan 27, 2021

Ветка - https://github.com/CryptoPro/corefx/tree/gost_xml_encrypt

Большая доработка шифрование и экспорта.

Текущие изменения:

  • Возможность выбора провайдера для 28147
  • Транспорт и эфемерные провайдеры для 3410 (2001 + 2012)
  • Множество исправлений Get\Set KeyParam
  • Исправления для GostRngCryptoServiceProvider
  • Единый класс KeyExchangeFormatter для работы со всеми гостами
  • Исправления Agree методов для 2012 ГОСТов
  • Пересобран и переделан ASN по аналогии с КриптоПро.NET (удобнее перенос из CSP при использовании ASN компилятора)
  • CryptoPro12 key wrap по умолчанию для всех провайдеров (при unwrap как и раньше понимаем оба, даже если явно прередан CryptoPro, при явном указании как и раньше можно выбирать любой wrapMethod)

В настоящий успешно собирается с netstandatd'ом из одноименной ветки.

Функциональность Классы Состояние Описание
KeyExchange GostKeyExchangeFormatter done (win), done (unix) Код аналогичен KeyExchange.cs из КриптоПро.NET. VKO в сторону получателя
gEncrypt не реализованная функциональность в криптопро.NET и тут (явное шифрование на 3410)
gEncryptFileAgree GostSharedSecretAlgorithm done(win), done(unix) Код аналогичен gEncryptFileAgree .cs из КриптоПро.NET. Создание и использование ключа через согласование
gEncryptFileEphem GostSharedSecretAlgorithm done (win), done (unix) Исходный пример аналогичен gEncryptFileAgree, но ключи задаются сертификатами
gEncryptFileTransport GostKeyExchangeFormatter done (win), done (unix) Исходный пример аналогичен KeyExchange, но ключи задаются сертификатами
EncryptedXml (key container) done (win), done (unix) EncryptAKey
EncryptedXml (x509 certificate) done (win), done (unix) EncryptCertificate
@Fasjeit Fasjeit added the enhancement New feature or request label Jan 27, 2021
@Fasjeit Fasjeit self-assigned this Jan 27, 2021
@Fasjeit Fasjeit changed the title Реализация экспорта\транспорта\keyWrap Реализация экспорта\транспорта\keyWrap\EncryptedXml Feb 3, 2021
@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Feb 4, 2021

Тесты Csp
GostKeyExchangeTests
GostKeyWrapTest
GostSharedSecretTest

Тесты Xml
GostEncryptedXmlTest
GostSignedXmlTest

Изменения в мастер ветке.

@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Feb 4, 2021

В encryptedXml оставил по максимуму оригинального кода, включая ветки RSA, которые сейчас не задействованы (ибо сейчас происходит ветвление на оригинальный и "наш" код по алгоритму). Во-первых для простоты нахождения потенциальных проблем путём сравнения с КриптоПро.NET, во-вторых ещё не очень понятно что будет с RSA на unix, возможно придётся задействовать данных код.

@Fasjeit
Copy link
Collaborator Author

Fasjeit commented Feb 4, 2021

Пререлиз с изменениями:
https://github.com/CryptoPro/corefx/releases/tag/v3.1.1-cprocsp-preview4.325

ToDo:

  • выяснить, остался ли баг, с передачей во флагах << keySize при транспорте (вроде при эфемерных провайдерах). Было упоминание в коде шарпея, сейчас перенесён его код дублированием без передачи keySize. Ошибку на коде от ms ловил, на шарпеевском нет. Посмотреть чем ещё отличаются. Осписаться в комментарии в коде.
  • удалить ветки

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

1 participant