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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Aleksandr G*  
#1 Оставлено : 7 декабря 2017 г. 12:19:27(UTC)
Aleksandr G*

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

Группы: Участники
Зарегистрирован: 13.09.2016(UTC)
Сообщений: 126

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 35 раз в 28 постах
Здравствуйте.

Для программной проверки лицензии на CSP используем CryptGetProvParam со значением PP_LICENSE.
Возвращаемые CryptGetProvParam результаты:
1. (корректно) Лицензия установлена и действительна - true
2. (некорректно) Лицензия установлена и истекла - true
3. (некорректно) Лицензия не установлена - true, в pbData пустая строка
4. (корректно) Лицензия установлена, но имеет неверный формат - false

В документации:
Цитата:
PP_LICENSE Возвращает серийный номер клиентской лицензии на CSP. Если лицензия не установлена или не действительна, функция возвращает FALSE. Серийный номер возвращается в виде строки символов типа char, заканчивающейся нулём. Возвращаемый серийный номер не содержит разделителей.

Offline Aleksandr G*  
#2 Оставлено : 7 декабря 2017 г. 17:45:11(UTC)
Aleksandr G*

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

Группы: Участники
Зарегистрирован: 13.09.2016(UTC)
Сообщений: 126

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 35 раз в 28 постах
Пример кода:

Код:

        static HCRYPTPROV hCryptProv = 0;
		DWORD cbData = 0;
		LPBYTE pbData;
		Handle<std::string> license;

		if (!CryptAcquireContext(
			&hCryptProv,
			NULL,
			NULL,
			PROV_GOST_2001_DH,
			CRYPT_VERIFYCONTEXT))
		{
			THROW_EXCEPTION(0, Key, NULL, "CryptAcquireContext. Error: %d", GetLastError());
		}

		if (!CryptGetProvParam(
			hCryptProv,
			PP_LICENSE,
			NULL,
			&cbData,
			0))
		{
			THROW_EXCEPTION(0, Key, NULL, "CryptGetProvParam. Error: %d", GetLastError());
		}

		pbData = (LPBYTE)malloc(cbData);

		if (!CryptGetProvParam(
			hCryptProv,
			PP_LICENSE,
			pbData,
			&cbData,
			0))
		{
			THROW_EXCEPTION(0, Key, NULL, "CryptGetProvParam. Error: %d", GetLastError());
		}

		license = new std::string((char *)pbData);

		if (hCryptProv) {
			if (!CryptReleaseContext(hCryptProv, 0)) {
				THROW_EXCEPTION(0, Csp, NULL, "CryptReleaseContext. Error: %d", GetLastError());
			}
		}

		hCryptProv = 0;

		if (pbData) {
			free((BYTE*)pbData);
		}

         return license;
Offline Русев Андрей  
#3 Оставлено : 15 декабря 2017 г. 10:44:20(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Спасибо за указание на проблему, поправим.
Официальная техподдержка. Официальная база знаний.
Offline Зубов Иван  
#4 Оставлено : 27 декабря 2017 г. 10:55:27(UTC)
Зубов Иван

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

Группы: Участники
Зарегистрирован: 02.11.2017(UTC)
Сообщений: 44
Мужчина

Сказал «Спасибо»: 6 раз
Поблагодарили: 19 раз в 17 постах
Починили, в следующих релизах (включая скорый релиз CSP 4.0 R3) этой проблемы не будет. Спасибо за сообщение об ошибке, Александр!
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Зубов Иван за этот пост.
Aleksandr G* оставлено 28.12.2017(UTC)
Offline Василий Анисимов  
#5 Оставлено : 26 июня 2020 г. 14:58:49(UTC)
Василий Анисимов

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

Группы: Участники
Зарегистрирован: 27.04.2012(UTC)
Сообщений: 119
Мужчина
Российская Федерация
Откуда: Digital Design

Сказал «Спасибо»: 19 раз
Поблагодарили: 1 раз в 1 постах
Добрый день! Возможно ли как-то проверить, сколько дней осталось до истечения лицензии? Необходимо для своевременного информирования пользователей необходимости добавить новую лицензию.
ВАСИЛИЙ АНИСИМОВ
Ведущий iOS разработчик в «Digital Design»
www.digdes.ru
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.