Описание интерфейса плагина
Заголовочный .h-файл предоставляет интерфейс для работы с устройствами смарт-карт.
Макросы
| Макрос | Назначение | |
|---|---|---|
PLUGINTOKENS_LIBRARY_H | Предпроцессорный макрос для условной компиляции. Служит для обеспечения единственного включения кода из заголовочного файла и предотвращения проблем с повторным определением типов, функций и переменных | #ifndef PLUGINTOKENS_LIBRARY_H #define PLUGINTOKENS_LIBRARY_H <...> #endif //PLUGINTOKENS_LIBRARY_H |
_WINDOWS | Если макрос _WINDOWS определен (компилируется под Windows), то будет выполнено следующее условие внутри блока #ifdef. Если же макрос не определен (компилируется не под Windows), то будет выполнено условие после блока #else. Правильный атрибут экспорта/импорта функций определяется с помощью | #ifdef _WINDOWS
#ifdef PLUGINTOKENS_EXPORTS
#define PLUGINTOKENS_API extern "C" __declspec(dllexport)
#else
#define PLUGINTOKENS_API extern "C" __declspec(dllimport)
#endif
#else
#define PLUGINTOKENS_API extern "C"
#endif
|
PLUGINTOKENS_EXPORTS | Управляет экспортом или импортом функций | |
PLUGINTOKENS_API | Определяет атрибуты экспорта или импорта функций при работе с динамическими библиотеками (DLL) в зависимости от компиляционных настроек | |
CP_TRACE_ERROR | Определяют уровни логирования | #define CP_TRACE_ERROR 3 #define CP_TRACE_INFO 5 #define CP_TRACE_DEBUG 7 #define CP_TRACE_HARD_DEBUG 10 |
MAX_DEVICE_COUNT | Определяет максимальное количество устройств | #define MAX_DEVICE_COUNT 20 |
Структуры
| Структура | Назначение | |
|---|---|---|
SPluginInfo | Содержит информацию о плагине, включая его версию, официальный сайт и название компании | typedef struct {
char version[100];
char site[1024];
char company[256];
} SPluginInfo;
|
SDeviceInfo | Содержит информацию об устройстве смарт-карты, включая его идентификатор, серийный номер, идентификатор производителя, модель, метку, флаги, максимальную длину PIN-кода, минимальную длину PIN-кода и требование PIN-кода | typedef struct {
char id[32];
char serialNumber[100];
char manufacturerID[100];
char model[100];
char label[100];
long flags;
int nlMaxPinLen;
int nlMinPinLen;
bool pin_required;
} SDeviceInfo;
|
SCertInfo | Содержит информацию о сертификате, включая его представление в формате base64 и флаг, указывающий, является ли сертификат секретным ключом | typedef struct {
const char *certBase64;
bool isSecretKey;
} SCertInfo;
|
SDevices | Содержит список устройств в виде массива структур SDeviceInfo, а также количество устройств в массиве | typedef struct {
SDeviceInfo* devices;
int count;
} SDevices;
|
SCerts | Содержит список сертификатов в виде массива структур SCertInfo, а также количество сертификатов в массиве | typedef struct {
SCertInfo* certs;
int count;
} SCerts;
|
Перечисление FactorsType | Перечисляет поддерживаемые факторы для аутентификации | enum FactorsType : int {
EMPTY = 0,
PASSWORD = 1,
TOTP = 2,
SMS = 3,
KERBEROS = 4,
SMARTCARD = 5,
EMAIL = 6,
TELEGRAM = 7,
PAYCONTROL = 8,
AUTHENTICATOR = 9,
QRSIGNIN = 10
};
|
Функции
Все функции объявлены с использованием макроса PLUGINTOKENS_API
| Функция | Назначение | Пример вызова |
|---|---|---|
get_LastError() | Возвращает код ошибки последней выполненной операции | PLUGINTOKENS_API int get_LastError(); |
get_PluginInfo() | Возвращает информацию о плагине, включая его версию и другие сведения | PLUGINTOKENS_API SPluginInfo get_PluginInfo(); |
PluginInit() | Инициализирует плагин и принимает в качестве параметров уровень журналирования (LogLevel) и данные устройства или имя библиотеки PKCS11 с полным путем. ETOKEN, RUTOKEN, RUTOKEN_ECP Возвращает код лога | PLUGINTOKENS_API int PluginInit(int LogLevel, const char* data); |
PluginFinalize() | Завершает работу плагина. Нет возвращаемого значения. | PLUGINTOKENS_API void PluginFinalize(); |
get_PluginFactor() | Возвращает тип поддерживаемого фактора авторизации. В данном случае SMARTCARD (5) | PLUGINTOKENS_API int get_PluginFactor(); |
get_DeviceInfo() | Возвращает информацию об указанном устройстве. Принимает аргумент | PLUGINTOKENS_API SDeviceInfo get_DeviceInfo(const char* id); |
get_Devices() | Возвращает список доступных устройств | PLUGINTOKENS_API SDevices get_Devices(); |
WaitDevice() | Ожидает активности устройств с заданными параметрами, переданными в аргументе | PLUGINTOKENS_API SDevices WaitDevice(SDevices info); |
DeviceAuth() | Выполняет авторизацию на устройстве. Принимает два аргумента: | PLUGINTOKENS_API bool DeviceAuth(const char* id, const char* pin); |
GetCertificates() | Возвращает список сертификатов с указанной карты | PLUGINTOKENS_API SCerts GetCertificates(const char* id, const char* pin); |
AuthByCertificate() | Выполняет подпись данных секретным ключом на карте в связке с сертификатом | PLUGINTOKENS_API char* AuthByCertificate(const char* id, const char* pin, SCerts certs, const char* data); |
get_IsSupportData() | Выполняет проверку поддержки данных на устройстве. Возвращает результат проверки (true или false) | PLUGINTOKENS_API bool get_IsSupportData(string id); |