Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_TokenManage)(
  CK_SESSION_HANDLE     hSession,
  CK_ULONG              ulMode,
  CK_VOID_PTR           pValue
);

Параметры

hSession

[in]дескриптор сессии

ulMode

[in]

режим работы функции:

MODE_RESET_CUSTOM_PIN_TO_STANDARD – сбросить кастомизированный PIN-код по-умолчанию на стандартный.
MODE_RESET_PIN_TO_DEFAULT – сброс PIN-кода на PIN-код по-умолчанию
MODE_CHANGE_DEFAULT_PIN – установить кастомизированный PIN-код по-умолчанию.
MODE_FORCE_USER_TO_CHANGE_PIN – установить флаг принудительной смены PIN-кода.

pValue

[in] 
  • при режиме MODE_RESET_CUSTOM_PIN_TO_STANDARD в качестве параметра pValue передается указатель на тип пользователя (CKU_USER или CKU_SO), для которого сбрасывается PIN-код по-умолчанию
  • при режиме MODE_RESET_PIN_TO_DEFAULT в качестве параметра pValue передается указатель на тип пользователя (CKU_USER или CKU_SO или локальные пользователи), для которого сбрасывается PIN-код
  • при режиме MODE_CHANGE_DEFAULT_PIN в качестве параметра pValue передается указатель на структуру CK_VENDOR_PIN_PARAMS:
    typedef struct CK_VENDOR_PIN_PARAMS {
        CK_USER_TYPE userType;
        CK_UTF8CHAR_PTR pPinValue;
        CK_ULONG ulPinLength;
    } CK_VENDOR_PIN_PARAMS;
    userType – тип пользователя, для которого устанавливаем кастомизированный PIN-код (CKU_USER или CKU_SO)
    pPinValue – массив байт содержащий кастомизированный PIN-код по-умолчанию
  • при режиме MODE_FORCE_USER_TO_CHANGE_PIN в качестве параметра pValue передается указатель на тип пользователя (CKU_USER или CKU_SO), которого мы хотим заставить сменить PIN-код:

Возвращаемые значения

CKR_OK – функция выполнена успешно.

...

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_SlotManage) (
  CK_SLOT_ID slotID,
  CK_ULONG ulMode,
  CK_VOID_PTR pValue
)

Параметры

hSession

[in]дескриптор сессии

ulMode

[in]

режим работы функции:

MODE_GET_LOCAL_PIN_INFO – получение информации о локальных PIN-кодах

MODE_GET_PIN_SET_TO_BE_CHANGED – получение информации об принудительной смене PIN-кода

MODE_RESTORE_FACTORY_DEFAULTS – расширенная инициализация токена

MODE_GET_IMIT – получение имитовтавки (работает на ST23 2.0)

pValue

[out] 
  • При режиме MODE_GET_LOCAL_PIN_INFO – указатель, на структуру CK_LOCAL_PIN_INFO:
    typedef struct CK_LOCAL_PIN_INFO {
        CK_ULONG ulPinID;
        CK_ULONG ulMinSize;
        CK_ULONG ulMaxSize;
        CK_ULONG ulMaxRetryCount;
        CK_ULONG ulCurrentRetryCount;
        CK_FLAGS flags;
    } CK_LOCAL_PIN_INFO;

    ulPinID – идентификатор локального PIN-кода (входной параметр).
  • При режиме MODE_GET_PIN_SET_TO_BE_CHANGED – указатель тип пользователя (CKU_USER или CKU_SO), для которого хотим узнать установлен ли флаг принудительной смены PIN-кода.
  • При режиме MODE_GET_PIN_SET_TO_BE_CHANGED – указатель на структуру CK_VENDOR_RESTORE_FACTORY_DEFAULTS_PARAMS
    typedef struct CK_VENDOR_RESTORE_FACTORY_DEFAULTS_PARAMS {
        CK_ULONG ulSizeofThisStructure;
        CK_BYTE_PTR pAdminPin;
        CK_ULONG ulAdminPinLen;
        CK_RUTOKEN_INIT_PARAM_PTR pInitParam;
        CK_BYTE_PTR pNewEmitentKey;
        CK_ULONG ulNewEmitentKeyLen;
        CK_ULONG ulNewEmitentKeyRetryCount;
    } CK_VENDOR_RESTORE_FACTORY_DEFAULTS_PARAMS;

    CK_RUTOKEN_INIT_PARAM_PTR – описание структуры в заголовочном файле rtpkcs11t.h
    pNewEmitentKey– ключ Эмитента
    ulNewEmitentKeyRetryCount – количество попыток доступа к ключу Эмитента
  • При режиме MODE_GET_IMIT – указатель на структуру CK_TOKEN_IMIT_DATA 
    typedef struct CK_TOKEN_IMIT_DATA {
        CK_BYTE bMode;
        CK_BYTE pbGostSymmetricKey[32];
        CK_BYTE pbImit[8];
    } CK_TOKEN_IMIT_DATA;

    bMode IMIT_MODE_MASK_PATCH или IMIT_MODE_MASK (входной параметр)
    pbGostSymmetricKey – значение симметричного ключа (входной параметр)

Для режима работы функции MODE_GET_LOCAL_PIN_INFO в pValue возвращается указатель массив структур типа CK_LOCAL_PIN_INFO:

ulPinID

[in]

идентификатор PIN-кода

ulMinSize

[out]

заданная минимальная длина PIN-кода

ulMaxSize

[out] 

заданная максимальная длина PIN-кода

ulMaxRetryCount

[out] заданное максимальное значение счетчика неверных попыток ввода пароля

ulCurrentRetryCount

[out] 

текущее значение счетчика оставшихся попыток ввода пароля:

0 – PIN-код заблокирован

flags

[out] 

информационные флаги:

LOCAL_PIN_FLAGS_NOT_DEFAULT – локальный PIN-код не является PIN-кодом по умолчанию
LOCAL_PIN_FLAGS_FROM_SCREENPIN-код может введен только с экрана

Возвращаемые значения

CKR_OK – функция выполнена успешно.

...

slotID

[in]

идентификатор слота с подключенным токеном

userType

[in]

владелец раздела, допустимые значения:

CKU_USER – глобальный пользователь;
CKU_SO – глобальный администратор;
CKU_LOCAL_X, где X – число от 1 число X от 3 до 8 – локальный пользователь X

pPin

[in]PIN-код пользователя

ulPinLen

[in]длина PIN-кода пользователя

idVolume

[in]

идентификатор раздела

newAccessMode

[in]новые флаги доступа к разделу

bPermanent

[in]

флаг режима измения атрибута:

CK_TRUE – постоянное изменение атрибута доступа, действует вплоть до следующего изменения атрибутов;
СK_FALSE – временное изменение прав доступа, действует до первого отключения устройства из USB-порта, после чего права доступа сбрасываются на прежние.

...