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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Alex_DotNETAlexAlex_DotNET112358  
#1 Оставлено : 20 августа 2019 г. 15:53:54(UTC)
Alex_DotNETAlexAlex_DotNET112358

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

Группы: Участники
Зарегистрирован: 13.03.2019(UTC)
Сообщений: 79
Российская Федерация

Сказал(а) «Спасибо»: 4 раз

Устанавливаю программно сертификат:
Код:
	BOOL AddScardKey(std::wstring keyName, DWORD dwProvType, std::wstring wsCert, std::wstring wsContainerName, std::wstring wsProvName)
	{
		// Декодировать сертификат
		std::vector<BYTE> data = Base64::decode(WC2MB(wsCert));
		AutoCERTCNTXT pCertContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, data.data(), data.size());
		
		char provName[1024];        // имя криптопровайдера
		DWORD wDataLen = 1024;     // длина имени криптопровайдера
		
		// Заполняем структуру
		CRYPT_KEY_PROV_INFO prov_info;
		ZeroMemory(&prov_info, sizeof(prov_info));
		prov_info.pwszContainerName = const_cast<wchar_t*>(wsContainerName.data());
		prov_info.pwszProvName = const_cast<wchar_t*>(wsProvName.data());
		prov_info.dwKeySpec = AT_KEYEXCHANGE;
		prov_info.dwProvType = dwProvType;

		// Устанавливаем свойство сертификата (тут проставляется ссылка на закрытый ключ)
		if (!CertSetCertificateContextProperty(pCertContext, CERT_KEY_PROV_INFO_PROP_ID, 0, &prov_info)) return false;

		// Открываем личное хранилище
		AutoCERTSTORE hCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_CURRENT_USER, L"MY");
		if (!hCertStore) return false;

		// Устанавливаем сертификат в Личное хранилище
		if (!CertAddCertificateContextToStore(hCertStore, pCertContext, CERT_STORE_ADD_REPLACE_EXISTING, NULL)) return false;

		return true;
	}


Какое значение указывать в pwszContainerName?
Если программно взять имя контейнера, то получается что то вроде: SCARD\rutoken_ecp_36be7985\0A00\D370
Его полностью указывать или нужно оставить только rutoken_ecp_36be7985?

Спасибо.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.