Статус: Новичок
Группы: Участники
Зарегистрирован: 27.07.2009(UTC) Сообщений: 7 Откуда: Саратов
|
По поводу пароля, действительно очень не удобно. Но мы его почти не используем (а точнее я вообще ни разу не встречал, чтобы мы или наши клиенты использовали пароль), поэтому в нашем конкретном случае, это не критично. Теперь стало понятно почему у вас возник вопрос, о том как мы сопостовляем сертификат с контейнером. Тогда сразу возникает встречный вопрос, есть ли другой способ определить соответсвует ли сертификат контейнеру, не требующий прав доступа к контейнеру?
И по поводу привязки. Вы имели ввиду, что сертификат установленный в хранилище на компьютере будет иметь привязку только к одному контейнеру? Если да, то нам надо установить сертификат только в контейнер закрытого ключа.
P.S. У меня есть еще несколько вопросов к вам, но я и так уже отклонился от темы топика, поэтому думаю лучше задать их в отдельной теме.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Цитата:По поводу пароля, действительно очень не удобно. Но мы его почти не используем (а точнее я вообще ни разу не встречал, чтобы мы или наши клиенты использовали пароль), поэтому в нашем конкретном случае, это не критично. Теперь стало понятно почему у вас возник вопрос, о том как мы сопостовляем сертификат с контейнером. Тогда сразу возникает встречный вопрос, есть ли другой способ определить соответсвует ли сертификат контейнеру, не требующий прав доступа к контейнеру? Документированных способов нет, недокументированные описывать не буду ). Цитата:И по поводу привязки. Вы имели ввиду, что сертификат установленный в хранилище на компьютере будет иметь привязку только к одному контейнеру? Если да, то нам надо установить сертификат только в контейнер закрытого ключа. Да, я писал именно о привязке с сертификата установленного в хранилище MY на контейнер. В любом случае, установка сертификатов во все контейнеры - "ничего страшного" не принесет. Цитата:P.S. У меня есть еще несколько вопросов к вам, но я и так уже отклонился от темы топика, поэтому думаю лучше задать их в отдельной теме. К Вашим услугам |
С уважением, Александр. |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Добрый день. Чтобы не плодить тем, осмелюсь задать вопрос тут. Не подскажите ли каким образом через криптопро .net можно получить следующую цепочку носитель->контейнер->сертификат? Задача вести учет таких связок. По этому функции списка носителей, контейнеров на каждом носителе и сертификатов в них были бы весьма удобны. Я понял из общения выше, прямого способа через .net пока что нет.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Подобного api нет. Принятые абстракции для CSP - контейнеры, для ОС - сертификаты, от последних и стоит отталкиваться. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Т.е. я полагаю, чтобы по сертификату узнать серийный номер носителя на котором он записан, нужно через P\invoke получить список носителей и имена контейнеров, затем по сертификату выяснить имя контейнера для сертификата и сопоставить (может есть более простой способ?) Просмотрел темы на форуме где используют функцию CryptGetProvParam(hProv, PP_ENUMREADERS, sb, ref pdwDataLen, dwFlags). Опробовал ее. список контейнеров получить у меня вышло, а вот список считывателей не получается, не подскажите в чем моя ошибка, или может быть уже была тема с разъяснением? Пишу на c#: Код:
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool CryptGetProvParam(
IntPtr hProv,
uint dwParam,
[In, Out] byte[] pbData,
ref uint dwDataLen,
uint dwFlags);
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool CryptGetProvParam(
IntPtr hProv,
uint dwParam,
[MarshalAs(UnmanagedType.LPStr)] StringBuilder pbData,
ref uint dwDataLen,
uint dwFlags);
[DllImport("advapi32.dll")]
public static extern bool CryptReleaseContext(
IntPtr hProv,
uint dwFlags);
const uint PP_ENUMREADERS = 114;
const uint CRYPT_FIRST = 0x00000001;
const uint PROV_RSA_FULL = 0x00000001;
static uint CSPKEYTYPE = 0; //default is CU keystores
Отредактировано пользователем 11 января 2013 г. 14:43:43(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
public string[] GetReaderNames() { int BUFFSIZE = 512; ArrayList readernames = new ArrayList(); uint pdwDataLen = 0; String provider = "Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider"; IntPtr hProv = IntPtr.Zero; uint dwFlags = CRYPT_FIRST;
StringBuilder sb = null; CryptGetProvParam(hProv, PP_ENUMREADERS, sb, ref pdwDataLen, dwFlags); BUFFSIZE = (int)(2 * pdwDataLen); sb = new StringBuilder(BUFFSIZE);
/* ---------- Get KeyContainer Names ------------- */ while (CryptGetProvParam(hProv, PP_ENUMREADERS, sb, ref pdwDataLen, dwFlags)) { dwFlags = 0; //required to continue entire enumeration readernames.Add(sb.ToString()); } if (hProv != IntPtr.Zero) CryptReleaseContext(hProv, 0);
if (readernames.Count == 0) readernames.Add("0 штук"); return (string[]) readernames.ToArray(Type.GetType("System.String")); }Ну и плюс функция которая вызывает метод Отредактировано пользователем 15 января 2013 г. 15:31:54(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Разобрался, указывал не совсем те параметры и не совсем те значения.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Не подскажите пример как через p\invoke, зная имя контейнера, извлечь сертификат?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,342 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: chikory Не подскажите пример как через p\invoke, зная имя контейнера, извлечь сертификат? По списку установленных сертификатов в цикле пройти и сверить информацию по контейнеру ... (?) |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.11.2011(UTC) Сообщений: 35 Откуда: Екатеринбург
|
Автор: Андрей * Автор: chikory Не подскажите пример как через p\invoke, зная имя контейнера, извлечь сертификат? По списку установленных сертификатов в цикле пройти и сверить информацию по контейнеру ... (?) Я имел в виду случай, когда сертификаты не установлены в хранилище сертификатов.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close