Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Подпись файла/текста на сервере с указанным сертификатом + проверка на клиенте Capicom
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2011(UTC) Сообщений: 20
|
Задача - подписать данные на сервере сертификатом из eToken, после чего проверить их там же или на клиенте в браузере с помощью Capicom. Просмотрел все примеры, не нашел, как выбрать сертификат для подписи и в каком формате надо делать подпись, чтобы потом на клиенте ее могли проверить? При этом, во время подписания на сервере никаких запросов быть не должно(pin/сертификат и т.п.) Отредактировано пользователем 20 мая 2011 г. 16:11:47(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
CAPICOM умеет работать только с PKCS#7. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2011(UTC) Сообщений: 20
|
Kirill Sobolev написал:CAPICOM умеет работать только с PKCS#7. Так, и что это значит? Просто я только начал вникать в эту область. Есть ли какие-то вариант по последнему предложению? Отредактировано пользователем 20 мая 2011 г. 17:27:48(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Так, и что это значит? Это ответ на вопрос Цитата:в каком формате надо делать подпись |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2011(UTC) Сообщений: 20
|
Кхм, хорошо, спасибо. А нет ли у вас примеров кода, который можно использовать, как базу? Например: на выход от CAPICOM выходит подпись в виде строки - что это за строка? base64? Как эту подпись проверить на сервере? Как выбрать сертификат программно и подписать им что-то, так, чтобы CAPICOM мог это прочитать? Я задаю эти вопросы, т.к. сейчас у нас куплен CSP, думаем, насчет покупки Sharpei, хотелось бы понять, как это все будет работать.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2011(UTC) Сообщений: 20
|
Разобрался. Чтобы совпал формат подписи: Код:
var data = Encoding.Unicode.GetBytes("123123"); // то, что подписываем на клиенте
var extSign = Convert.FromBase64String(sig); // sig == то, что получаем от SignedData.Sign(Signer, true, 0);
var contentInfo = new ContentInfo(data);
var signedCms = new SignedCms(contentInfo, true);
signedCms.Decode(encodedSignature);
signedCms.CheckSignature(true); // проверка
Все еще остался вопрос: как бы мне подписывать данные с помощью сертификата, но так, чтобы eToken у меня не спрашивал пароль
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2011(UTC) Сообщений: 20
|
Спасибо. Теперь получаю такое: Код:
System.InvalidCastException was unhandled
Message=[A]CryptoPro.Sharpei.Gost3410CryptoServiceProvider cannot be cast to [B]CryptoPro.Sharpei.Gost3410CryptoServiceProvider. Type A originates from 'CryptoPro.Sharpei.Base, Version=1.4.0.10, Culture=neutral, PublicKeyToken=473b8c5086e795f5' in the context 'Default' at location 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\CryptoPro.Sharpei.Base\v4.0_1.4.0.10__473b8c5086e795f5\CryptoPro.Sharpei.Base.dll'. Type B originates from 'CryptoPro.Sharpei.Base, Version=1.0.0.10, Culture=neutral, PublicKeyToken=473b8c5086e795f5' in the context 'Default' at location 'C:\Windows\assembly\GAC_MSIL\CryptoPro.Sharpei.Base\1.0.0.10__473b8c5086e795f5\CryptoPro.Sharpei.Base.dll'.
Source=ConsoleApplication1
StackTrace:
at ConsoleApplication1.Program.SignMsg(Byte[] msg, X509Certificate2 signerCert) in c:\Program Files (x86)\Crypto Pro\Sharpei SDK\Examples\ConsoleApplication1\Program.cs:line 109
at ConsoleApplication1.Program.Main(String[] args) in c:\Program Files (x86)\Crypto Pro\Sharpei SDK\Examples\ConsoleApplication1\Program.cs:line 59
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.05.2011(UTC) Сообщений: 20
|
Нашел, ссылка была на версию для .NET 2.0
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Подпись файла/текста на сервере с указанным сертификатом + проверка на клиенте Capicom
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close