Для того, чтобы разработчик был уверен что все сгенерированные клиенту обновления были применены клиентом к ключу, можно к Entitlement’ам, на этапе их генерации добавлять атрибут ACKNOWLEDGEMENT_REQUEST. Данный атрибут отвечает за то, что статус Entitlement’а в Sentinel EMS UI, будет значится как Acknowledged(подтверждённый) только после того, как в Sentinel EMS будет добавлена информация о состоянии ключа из *.c2v файла, полученного с ключа на момент после применения обновления. Благодаря чему можно быть уверенным, что состояние лицензий в ключах клиентов всегда в актуальном состоянии. С помощью EMS Web Service API можно выполнять доставку и чтение *.c2v файлов, подтверждающих факт применения обновлений, до сервера Sentinel EMS, для этого используется запрос: Update Protection Key. По требованиям для работы здесь ситуация полностью аналогична процессу доставки новых лицензий, а именно, требуется чтобы Sentinel EMS был настроен на работу через интернет и доступен по сети + защищенное приложение, из которого выполняется запрос на активацию, должно иметь доступ в интернет.
Пример реализации:
В защищаемую программу добавляем функцию, которая будет выполняться периодически при запущенном ПО и наличии на ПК подключения к интернету.
Функция должна реализовывать следующую логику:
1) Выполнение сбора данных (C2V файла) с HL/SL ключа клиента, (функция Hasp.GetInfo из Sentinel Licensing API):
Пример кода вызова функции:
//
string scope =
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" +
"<haspscope>" +
" <hasp id=\\" + KeyID + "\" />" + // KeyID нужно заменить на Key ID того
ключа, для которого необходимо проверить обновления
"</haspscope>" +
"";
string format =
"<haspformat format=\"updateinfo\"/>";
string vendorCode = “Ваш_Vendor_Code”;
string info = null;
HaspStatus status = Hasp.GetInfo(scope, format, vendorCode, ref info);
if (HaspStatus.StatusOk != status)
{
//handle error
}
//
2) Получив C2V с ключа, необходимо выполнить один POST запрос target.ws из Sentinel EMS Web Service API:
В качестве параметра в запрос необходимо передать в параметре C2V, данные, полученный в результате выполнения функции Hasp.GetInfo из Sentinel Licensing API, а в параметре action требуется передать значение “Checkin ”.