# API Активации

API Активации содержит всего 4 функции. Две предназначены для онлайн-активации и две для оффлайн, когда на компьютере отсутствует доступ в Интернет. API Активации предназначено для взаимодействия с Web License Manager, так что разработчику все равно необходимо вызывать API системы лицензирования, чтобы использовать серийные номера, полученные от WebLM.

VMProtectActivateLicense

Функция передает код активации на сервер и возвращает серийный номер, подходящий для этого конкретного компьютера. В противном случае возвращается код ошибки.

    int VMProtectActivateLicense(const char *code, char *serial, int size);

Параметр code содержит код активации, который получен от Web License Manager в процессе покупки лицензии. Параметр serial указывает на блок памяти размера size, в который будет помещен сгенерированный WebLM серийный номер.

VMProtectDeactivateLicense

Функция передает серийный номер на сервер для деактивации. Возможные коды возврата перечислены ниже.

    int VMProtectDeactivateLicense(const char *serial);

Параметр serial содержит серийный номер (не код активации), полученный ранее от WebLM в процессе активации.

VMProtectGetOfflineActivationString
VMProtectGetOfflineDeactivationString

Эти две функции работают практически аналогично двум предыдущим с той лишь разницей, что они не пытаются подключиться к серверу WebLM. Вместо этого они возвращают блок текста, который необходимо скопировать на компьютер где есть доступ в Интернет, открыть там форму оффлайн-активации WebLM и вставить туда этот текст.

    int VMProtectGetOfflineActivationString(const char *code, char *buf, int size);
    int VMProtectGetOfflineDeactivationString(const char *serial, char *buf, int size);

Параметры code и serial аналогичны параметрам онлайн-версий функций, параметр buf должен указывать на буфер размером 1000 байт или больше, туда будет скопирован текстовый блок для формы оффлайн-активации. Возможные коды ошибок перечислены ниже.

### Возможные Коды Ошибок

Код | Значение | Описание
--- | --- | ---
ACTIVATION_OK | 0 | Активация прошла успешно, переменная serial содержит серийный номер.
ACTIVATION_SMALL_BUFFER | 1 | Буфер для серийного номера слишком маленький. Минимальный размер буфера вычисляется по формуле: bits / 8 * 3 / 2 + N, где bits - длина RSA ключа в битах, а N - "константа безопасности" - дополнительное количество байт на случай переносов строк и прочих спец-символов. Рекомендуется использовать как минимум 10.
ACTIVATION_NO_CONNECTION | 2 | Модуль активации не смог подключиться к Web License Manager.
ACTIVATION_BAD_REPLY | 3 | Сервер активации вернул неожиданный результат. Это означает проблемы конфигурации сервера, неправильный url сервера активации или попытку взлома.
ACTIVATION_BANNED | 4 | Этот код активации заблокирован на сервере производителем ПО через интерфейс WebLM (например, из-за утечки кода активации с пиратской копией). Не путать с ACTIVATION_ALREADY_USED.
ACTIVATION_CORRUPTED | 5 | Что-то пошло совсем не так. Ошибка выдается системой самопроверки модуля активации и с высокой вероятностью означает попытку взлома. В случае получения этой ошибки дальнейшие операции с серийными номерами и активацией не могут считаться безопасными.
ACTIVATION_BAD_CODE | 6 | Данный код не найден в базе данных сервера активаций. Возможно пользователь ошибся при вводе кода, так что можно попросить его проверить правильность ввода данных.
ACTIVATION_ALREADY_USED | 7 | Счетчик активаций этого кода дошел до нуля и дальнейшие активации невозможны. Это не обозначает, что код плохой или заблокирован - код хороший. Пользователю нужно связаться с производителем ПО и докупить необходимое количество лицензий или же деинсталлировать программу на других компьютерах, чтобы увеличить значение счетчика в базе данных.
ACTIVATION_SERIAL_UNKNOWN | 8 | Ошибка деактивации. Означает, что данный серийный номер не найден в базе данных сервера. Соответственно, деактивация не может быть проведена успешно.
ACTIVATION_EXPIRED | 9 | Ошибка активации. Означает, что период действия кода активации истек.
ACTIVATION_NOT_AVAILABLE | 10 | Ошибка означает, что активация/деактивация недоступна.

### Маленькие хитрости

API Активации достаточно простое, так что с ним не должно возникнуть сложностей. Не забудьте предоставить пользователям интерфейс для оффлайн-активации, если онлайн-активация завершилась неудачей из-за проблем с доступом в интернет. Также не забывайте, что API Активации не сохраняет полученный серийный номер и не передает его модулю лицензирования - это задача разработчика. Нет необходимости вызывать API Активации при каждом запуске приложения - достаточно вызвать его один раз, получить серийный номер от WebLM, сохранить его в удобном месте и в дальнейшем использовать только его.

© 2006-2015 Copyright VMProtect Software