Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Maxim Korobov  
#1 Оставлено : 28 февраля 2008 г. 19:48:23(UTC)
Maxim Korobov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Как можно установить пароль на ключевой контейнер?
Умеет делать утилита CSP в панели управления (Сервис -> Изменить пароль). Требуется автоматизировать этот процесс.
CryptSetProvParam, в частности, с параметром PP_SIGNATURE_PIN используется для задания пароля, избавляя пользователя от ручного ввода.
Offline Максим Коллегин  
#2 Оставлено : 29 февраля 2008 г. 1:14:50(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
WinCryptEx.h
Код:
#define PP_SET_PIN 107
#define PP_CHANGE_PIN 108
/*!
 * \ingroup ProCSPData
 *
 * \brief Структура передачи информации для:
 *  1) смены пароля контейнера,
 *  2) указания способа доступа к контейнеру (имя, handle, пароль), на ключе которого
 *     зашифровано содержимое другого контейнера.
 *
 * \req_wincryptex
 * \sa CPSetProvParam
 */
typedef struct _CRYPT_PIN_PARAM {
    BYTE type;
    /*!< Тип данных.
 *  CRYPT_PIN_PASSWD - пароль или PIN,
 *  CRYPT_PIN_ENCRYPTION - HANDLE контейнера зашифрования.
 *  CRYPT_PIN_QUERY - тип и значение выбираются в окне,
 *  CRYPT_PIN_CLEAR - очистить пароль.
 *  CRYPT_PIN_NK - разбить на части k из n
 */
     CRYPT_PIN_SOURCE dest; /*!< Данные соответствующего типа */
} CRYPT_PIN_PARAM;
Знания в базе знаний, поддержка в техподдержке
Offline Maxim Korobov  
#3 Оставлено : 29 февраля 2008 г. 20:41:40(UTC)
Maxim Korobov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Можете привести пример вызова?
Это точно относится к CryptSetProvParam, а не к CPSetProvParam?
Offline Максим Коллегин  
#4 Оставлено : 29 февраля 2008 г. 23:07:17(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
К обеим.
Знания в базе знаний, поддержка в техподдержке
Offline Maxim Korobov  
#5 Оставлено : 1 марта 2008 г. 14:00:22(UTC)
Maxim Korobov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Пожалуйста, приветиде пример вызова.
Мне необходимо для смены пароля контейнера.
Offline Максим Коллегин  
#6 Оставлено : 1 марта 2008 г. 17:09:52(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,395
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 718 раз в 622 постах
Изменение пина с запросом нового в окне:
Код:

#include "WinCryptEx.h"
....
CRYPT_PIN_PARAM param;
param.type = CRYPT_PIN_QUERY;
param.dest.passwd = NULL;
ret = CryptSetProvParam (hProv, PP_CHANGE_PIN, (UCHAR*)&param, 0);

Знания в базе знаний, поддержка в техподдержке
Offline Maxim Korobov  
#7 Оставлено : 4 марта 2008 г. 15:22:14(UTC)
Maxim Korobov

Статус: Активный участник

Группы: Участники
Зарегистрирован: 19.02.2008(UTC)
Сообщений: 66
Откуда: Москва

Спасибо.

В Delphi (с использование wincryptex.pas) установка пароля будет выглядеть так:

Код:

  var
  Param: CRYPT_PIN_PARAM;
  PassStr: string;
  pass: PByte;  
  ---
  PassStr := 'test';
  Param._type := CRYPT_PIN_PASSWD;
  Param.dest.passwd := @PassStr[1];  // Не @PassStr!

  pass := @Param;
  if not CryptSetProvParam(context_sender.Provider, PP_CHANGE_PIN, pass, 0) then begin
    ShowMessage(IntToStr(GetLastError));
  end;
  pass := nil;
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.