-
Notifications
You must be signed in to change notification settings - Fork 7
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
Сломался Gost EnvelopedCMS на win, не работал на Linux #56
Comments
Чиним явным копированием для ГОСТа if (padding == RSAEncryptionPadding.Pkcs1)
{
// begin: gost
switch (recipient.Certificate.GetKeyAlgorithm())
{
case Oids.Gost3410:
case Oids.Gost3410_2012_256:
case Oids.Gost3410_2012_512:
{
// copy from cert info explicitly
pEncodeInfo->KeyEncryptionAlgorithm.pszObjId = hb.AllocAsciiString(recipient.Certificate.GetKeyAlgorithm());
// uint, копируем
pEncodeInfo->KeyEncryptionAlgorithm.Parameters.cbData = pCertInfo->SubjectPublicKeyInfo.Algorithm.Parameters.cbData;
// копируем из памяти и записываем
var pbDataBytes = new byte[pCertInfo->SubjectPublicKeyInfo.Algorithm.Parameters.cbData];
Marshal.Copy(pCertInfo->SubjectPublicKeyInfo.Algorithm.Parameters.pbData, pbDataBytes, 0, pbDataBytes.Length);
pEncodeInfo->KeyEncryptionAlgorithm.Parameters.pbData = hb.AllocBytes(pbDataBytes);
break;
}
default:
{
// end: gost
pEncodeInfo->KeyEncryptionAlgorithm.pszObjId = hb.AllocAsciiString(Oids.Rsa);
pEncodeInfo->KeyEncryptionAlgorithm.Parameters.cbData = (uint)s_rsaPkcsParameters.Length;
pEncodeInfo->KeyEncryptionAlgorithm.Parameters.pbData = hb.AllocBytes(s_rsaPkcsParameters);
break;
}
} |
и добавляем тест из шарпея. |
... почему то не заработал csp-non persist сертификат при проверке Cms, не смог выкусить keyspec. В целом минор, но нужно будет выяснить в чём дело и можно ли исправить. |
На unix видимо и не работал. Судя по jira (https://jira.cp.ru/browse/CPCSP-11233) поведение методов исправлено только 15 октября 20 года, используемая версия csp для тестов - не позднее 27 августа. Раньше точно не работало - https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=61697#post61697 Актуализировать версию csp, проверить ещё раз. |
Обновился до |
Поддержка CMSG_CERT_COUNT_PARAM в capilight |
Нет еще прогнозов когда примерно сможете поправить?) |
Windows должен работать, на Linux ждём доработку в csp. |
Починили Теперь чиним |
Починили Сломались в corefx при поиске сертификата получателя по cn (строка из cms обрезалась до первого символа, и как результат не находил получателя) - тоже починили. Расшифрование чувствительно к сроку действия закрытого ключа (пишет access denied). Если будут падать тесты на этом - отключить временно тест. |
Тест ожидаемо ломается в ожидаемом месте. С отключение срока действия ключа пока вопрос. Убираю пока тест с unix. На винде остаётся. |
Проблема теста с контейнером на два ключа - на никсах ведёт себя иначе. Судя по всему шифрует и пытается расшифровать на ключе подписи. Надо будет перегенерить нормально ключевые контейнеры. |
В текущем релизе csp правок ещё нет, ждём следующего. После чего релизим corefx. Также надо будет обновить инструкцию по сборке в DotnetSampleProject, указав новые версии csp. В мастере всё должно работать с ночным csp (5.0.12515) на unix. Ночную сборку мастера corefx можно взять тут |
Поломался
EnvelopedCms
, скорее всего после очередного вливания из upstream. Тестов не было....При вызове
envelopedCms.Encrypt(recip1);
вываливается
ASN1 bad tag value met
Проблема в том, что после одного из вливаний появился код в
PkcsPalWindows.Encrypt.cs
когда раньше было явное копирование
The text was updated successfully, but these errors were encountered: