-
Notifications
You must be signed in to change notification settings - Fork 42
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
Нет возможности указать пароль контейнера закрытого ключа при создании открепленной подписи #16
Comments
Присоединяюсь к вопросу |
Здравствуйте. Класс private static byte[] SignMessage(X509Certificate2 certificate, SecureString password, byte[] message)
{
using (var privateKey = (Gost_R3410_2012_512_AsymmetricAlgorithm)certificate.GetPrivateKeyAlgorithm())
{
privateKey.SetContainerPassword(password);
// Далее логика подписи...
var signedCms = new GostSignedCms(new ContentInfo(message), true);
var signer = new CmsSigner(certificate);
signer.IncludeOption = X509IncludeOption.EndCertOnly;
signedCms.ComputeSignature(signer);
return signedCms.Encode();
}
} P.s. К сожалению, не смог проверить работоспособность этого подхода, т.к. на машине не установлен CSP. Отпишитесь, пожалуйста, получилось или нет решить проблему. |
Спасибо за ответ. но такой способ не помог. |
Выяснилось, что на данный момент возможности программно указать пароль к контейнеру закрытого ключа на данный момент нет. Текущая реализация То, о чем вы спрашиваете, только планируется в .NET Core 3. Возможно, появится и в очередной версии .NET Framework. |
Спасибо, что подтвердили мои опасения ) |
Да пока пусть будет открыта. :) |
Использую GostCryptography, для создания открепленной (CMS Sign, PKCS7) подписи. Пользуюсь примером из тестового проекта "SignedCmsSignTest", идущего вместе с исходниками. Никак не получается программно указать пароль контейнера VipNet для создания автоматизации ЦП. Для обычного шифрования/подписи данных проблем не возникает, но в случае создания открепленной подписи, в классах GostSignedCms и NET CmsSigner нет возможности указать пароль контейнера приватного ключа или Алгоритм подписи с уже заданным ключом.
Даже когда использую конструктор public CmsSigner (CspParameters parameters) и в CspParameters, заполненным параметрами из сертификата добавляю SecureString с необходимым паролем и флагом подавления окна cspKeyParams.Flags = CspProviderFlags.NoPromp - все равно во время выполнения VipNet вываливает диалоговое окно с предложением ввести пароль контейнера.
Судя по исходникам NET эти два параметра CspParameters просто игнорируются в недрах класса CmsSigner.
Можно ли добавить какую-либо возможность использовать в библиотеке пароль контейнера в данном случае?
P.S. Спасибо за библиотеку!
The text was updated successfully, but these errors were encountered: