| ||||
| ||||
пытаюсь подписать сообщение из .net framework указанным алгоритмом. Сертификат создал. Не могу понять - какая константа соответствует алгоритму эцп. На CALG_GR3411 - ругается, невалидный говорит алгоритм. По идее вроде должна быть - CALG_GR3410, но тогда он CryptoPro спрашивает пароль, и затем выводит окно для рандомного ввода, после этого видимо что-то ломает в хранилище... Обычный стандартный микрософтовский алгоритм работает. Код: Random r = new Random(); byte[] b = new byte[1024]; r.NextBytes(b); System.Security.Cryptography.CspParameters parameter = new System.Security.Cryptography.CspParameters(13); //parameter.Flags = System.Security.Cryptography.CspProviderFlags.UseDefaultKeyContainer | //System.Security.Cryptography.CspProviderFlags.UseExistingKey ; parameter.ProviderName = "Crypto-Pro Cryptographic Service Provider"; parameter.ProviderType = 2; parameter.KeyNumber = (1<<13) | (7<<9) | 30; //CALG_GR3410 parameter.KeyContainerName = "42fc2272-61e3-4cff-8ad5-d5bb444c8a2f"; System.Security.Cryptography.DSACryptoServiceProvider provider = new System.Security.Cryptography.DSACryptoServiceProvider(parameter); byte[] bb = provider.SignData(b); bool res = provider.VerifyData(b, bb); Console.ReadLine(); Не сталкивался ли кто с этой проблемой? | ||||
Ответы: | ||||
| ||||
А вас эта строчка не смучает: System.Security.Cryptography.DSACryptoServiceProvider(parameter)? | ||||
| ||||
вообще смущает, правда непонятно почему в цеплюсплюс я работаю с чистым апи, а в дотнете работаю с реальными провайдерами... :( Проблема закрыта - пришлось писать на апи. | ||||