Page tree

Versions Compared

Key

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

...

Code Block
collapsetrue
CK_BYTE Pin[] = {'1', '2', '3', '4', '5', '6', '7', '8'};		// текущий PIN-код Пользователя или локальный PIN-код
CK_SLOT_ID slots[100];											// массив идентификаторов слотов

.
.
rv = pfGetFunctionListEx -> C_EX_SetLocalPIN(
	slots[0], 													// считаем, что токен подключен к первому слоту
	Pin, 														// текущий PIN-код Пользователя или текущий локальный PIN-код
	arraysize(Pin),												// длина текущего PIN-кода Пользователя или локального PIN-кода
	"000000000000000000000000000000",							// указатель на новый Локальный PIN-код
	30,															// длина нового Локального PIN-кода
	0x1F														// идентификатор Локального PIN-кода
);
if (rv != CKR_OK)												// проверка результата
	printf("C_EX_SetLocalPIN() -> failed \n");
else
	printf("C_EX_SetLocalPIN() -> OK \n"); 

к содержанию ↑

C_EX_TokenManage() 
Anchor
C_EX_TokenManageSlotAndToken
C_EX_TokenManageSlotAndToken

Назначение

Предоставляет механизм принудительной смены PIN-кода пользователя.

...

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 – функция выполнена успешно.

...

CKR_USER_NOT_LOGGED_IN – пользователь SKU_SO не авторизован на токене (режимы)


Info
titleМультифункциональная функция

Здесь описаны не все возможные параметры функции. Описание других параметров функции можно найти здесь

к содержанию ↑

C_EX_SlotManage

...

  1. получить расширенную информацию о всех локальных PIN-кодах токена.
  2. получить информацию об установленном флаге принудительной смене PIN-кода
  3. выполнить расширенную инициализацию токена

Синтаксис

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_LOCAL_PIN_

...

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

...

ulPinID

...

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

...

ulMinSize

...

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

...

ulMaxSize

...

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

...

ulMaxRetryCount

...

ulCurrentRetryCount

...

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

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

...

flags

...

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

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

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 – функция выполнена успешно.

CKR_PIN_EXPIRED – если PIN-код нужно сменить смене (MODE_GET_PIN_SET_TO_BE_CHANGED).

CKR_ARGUMENTS_BAD – неверно указаны аргументы функции.

к содержанию ↑

Функции для работы с сертификатами

C_EX_GetCertificateInfoText()

Назначение

Функция позволяет получить информацию о сертификате из токена в текстовом виде.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_GetCertificateInfoText)(
	CK_SESSION_HANDLE	hSession, 
	CK_OBJECT_HANDLE 	hCert,
	CK_CHAR_PTR* 		pInfo, 
	CK_ULONG_PTR 		pulInfoLen
);

Параметры

hSession[in]дескриптор сессии
hCert[in]дескриптор объекта (сертификата)
pInfo[out]указатель на буфер, содержащий текстовую информацию о сертификате
pulInfoLen[out]размер буфера, в байтах

Примечание

Функция может быть вызвана из любого состояния. Так как память для массива выделяется внутри функции, по окончании работы функции pInfo нужно высвободить функцией C_EX_FreeBuffer.

к содержанию ↑

C_EX_CreateCSR()

Назначение

Создает запрос на выпуск сертификата в центр сертификации и упаковывает его в формат PKCS#10.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_CreateCSR)(
	CK_SESSION_HANDLE 	hSession,
	CK_OBJECT_HANDLE 	hPublicKey,
	CK_CHAR_PTR 		*dn,
	CK_ULONG 			dnLength,
	CK_BYTE_PTR 		*pCsr,
	CK_ULONG_PTR 		pulCsrLength,

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

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

CKR_PIN_EXPIRED – если PIN-код нужно сменить смене (MODE_GET_PIN_SET_TO_BE_CHANGED).

CKR_ARGUMENTS_BAD – неверно указаны аргументы функции.

к содержанию ↑

Функции для работы с сертификатами

C_EX_GetCertificateInfoText()

Назначение

Функция позволяет получить информацию о сертификате из токена в текстовом виде.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_GetCertificateInfoText)(
	CK_SESSION_HANDLE	hSession, 
	CK_OBJECT_HANDLE 	hCerthPrivKey,
	CK_CHAR_PTR 		*pAttributes,
	CK_ULONG 		pInfo, 	ulAttributesLength,
	CK_CHAR_PTR 		*pExtensions,
	CK_ULONG_PTR 			pulInfoLenulExtensionsLength
);

Параметры

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

hPublicKey

[in]дескриптор объекта (сертификата)
pInfo[out]указатель на буфер, содержащий текстовую информацию о сертификате
pulInfoLen[out]размер буфера, в байтах

Примечание

Функция может быть вызвана из любого состояния. Так как память для массива выделяется внутри функции, по окончании работы функции pInfo нужно высвободить функцией C_EX_FreeBuffer.

к содержанию ↑

C_EX_CreateCSR()

Назначение

Создает запрос на выпуск сертификата в центр сертификации и упаковывает его в формат PKCS#10.

Синтаксис

открытого ключа для создания сертификата

dn

[in]

уникальное имя – массив строк, где в первой строке располагается тип поля в текстовом формате или идентификатор объекта (CN или «2.5.4.3»). Во второй строке должно находиться значение поля в кодировке UTF8.

Последующие поля передаются аналогично, количество строк должно быть кратно двум

dnLength

[in]количество строк в массиве, на который ссылается параметр dn

pCsr

[in]

указатель на указатель на массив байт, в который будет записан созданный запрос на сертификат

pulCsrLength

[in]указатель на переменную, в которой сохраняется размер массива.

hPrivKey

[in]

закрытый ключ, соответствующий открытому ключу, на который ссылается параметр hPublicKey. Если значение установлено в «0», то поиск закрытого ключа будет осуществляться по ID открытого ключа.

pAttributes

[in]

дополнительные атрибуты для включения в запрос. Формат аналогичен формату параметра dn (например, «1.2.840.113549.1.9.7» или «challengePassword»).

ulAttributesLength

[in]количество атрибутов в массиве, на который указывает параметр attributes.

pExtensions

[in]расширения для включения в запрос. Формат аналогичен параметру dn

ulExtensionsLength

[in]количество расширений в параметрах extensions

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions". Память для массива pCsr выделяется внутри функции, поэтому после окончания работы память необходимо освободить, вызвав функцию C_EX_FreeBuffer(). 

Функция поддерживает генерацию запроса на сертификат для следующих типов ключей: ГОСТ 34.10-2012 с длиной закрытого ключа 256 бит, ГОСТ 34.10-2001 и RSA (типы ключей CKK_GOSTR3410 и CKK_RSA).

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

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

Пример

к содержанию ↑

Функции для работы с CMS/PKCS#7 сообщениями

C_EX_PKCS7Sign()

Назначение

Подписывает переданные на вход данные в формате PKCS#7.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7Sign)(
	CK_SESSION_HANDLE 		hSession,
	CK_BYTE_PTR 			pData
Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_CreateCSR)(
	CK_SESSION_HANDLE 	hSession,
	CK_OBJECT_HANDLE 	hPublicKey,
	CK_CHAR_PTR 		*dn,
	CK_ULONG 					dnLengthulDataLen,
	CK_OBJECT_HANDLE 		hCert,
	CK_BYTE_PTR 			*pCsrppEnvelope,
	CK_ULONG_PTR 			pulCsrLengthpEnvelopeLen,
	CK_OBJECT_HANDLE 		hPrivKey,
	CK_OBJECT_CHARHANDLE_PTR 		*pAttributesphCertificates,
	CK_ULONG 			ulAttributesLength,
	CK_CHAR_PTR 		*pExtensions	ulCertificatesLen,
	CK_ULONG 				ulExtensionsLengthflags
);

Параметры

hSession[in]дескриптор сессии
hPublicKeypData[in]указатель на байт-массив CK_BYTE, содержащий данные для подписи
ulDataLenдескриптор открытого ключа для создания сертификатаdn[in]

уникальное имя – массив строк, где в первой строке располагается тип поля в текстовом формате или идентификатор объекта (CN или «2.5.4.3»). Во второй строке должно находиться значение поля в кодировке UTF8.

Последующие поля передаются аналогично, количество строк должно быть кратно двум

dnLength

[in]количество строк в массиве, на который ссылается параметр dn

pCsr

[in]

указатель на указатель на массив байт, в который будет записан созданный запрос на сертификат

длина данных для подписи
hCert[in]дескриптор сертификата
ppEnvelope[out]указатель на байт-массив, в который передаются данные (сообщение)
pEnvelopeLen[out]указатель на длину созданного буфера с сообщением

pulCsrLength

[in]указатель на переменную, в которой сохраняется размер массива.
hPrivKey[in]

закрытый ключ, соответствующий открытому ключу, на который ссылается параметр hPublicKey. Если значение установлено в «0», то поиск закрытого ключа будет осуществляться по ID открытого ключа.

pAttributes

[in]

дополнительные атрибуты для включения в запрос. Формат аналогичен формату параметра dn (например, «1.2.840.113549.1.9.7» или «challengePassword»).

дескриптор закрытого ключа, соответствующего указанному сертификату. Если равен 0, то закрытый ключ будет искаться по ID сертификата
phCertificates[in]указатель на массив сертификатов, цепочку сертификатов
ulCertificatesLenulAttributesLength[in]количество атрибутов в массиве, на который указывает параметр attributes.сертификатов в параметре phCertificates
flagspExtensions[in]расширения для включения в запрос. Формат аналогичен параметру dn

переменная типа CK_ULONG, может принимать следующие значения:

0 – хеширование программное, исходные данные, на которые ссылается указатель pData, сохраняются вместе с подписанным сообщением;
PKCS7_DETACHED_SIGNATURE – исходные данные, на которые ссылается указатель pData, не сохраняются вместе с подписанным сообщением.
USE_HARDWARE_HASH - использовать аппаратное хеширование.

ulExtensionsLength

[in]количество расширений в параметрах extensions

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions". Память для массива pCsr выделяется Буфер ppEnvelope создается внутри функции, поэтому после . После окончания работы память с ним необходимо освободить его, вызвав функцию функцию C_EX_FreeBuffer(). 

Функция поддерживает генерацию запроса на сертификат для следующих типов ключейподпись по следующим алгоритмам: ГОСТ 34.10-2012 с длиной закрытого ключа 256 бит , ГОСТ и ГОСТ 34.10-2001 и RSA (типы ключей CKKмеханизм CKM_GOSTR3410 и CKK_RSA).

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

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

Пример

к содержанию ↑

Функции для работы с CMS/PKCS#7 сообщениями

C_EX_

...

PKCS7VerifyInit()

Назначение

Подписывает переданные Инициализирует процесс проверки подписи переданных на вход данные данных в формате PKCS#7.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7SignPKCS7VerifyInit)(
	CK_SESSION_HANDLE 			hSession,
	CK_BYTE_PTR 			pData	pCms,
	CK_ULONG 				ulDataLen	ulCmsSize,
	CK_VENDOR_OBJECTX509_STORE_HANDLEPTR 		hCertpStore,
	CK_VENDOR_BYTECRL_PTRMODE 			*ppEnvelopeckMode,
	CK_ULONG_PTRFLAGS 				pEnvelopeLen,
	CK_OBJECT_HANDLE 		hPrivKey,	flags 
);
 
typedef struct CK_VENDOR_X509_STORE {
	CK_OBJECTVENDOR_HANDLEBUFFER_PTR 	pTrustedCertificates; 	phCertificates,		// указатель на массив доверенных сертификатов	
	CK_ULONG 				ulCertificatesLen,ulTrustedCertificateCount;	// количество доверенных сертификатов в массиве
	CK_ULONG_VENDOR_BUFFER_PTR 	pCertificates; 				flags
);

Параметры

...

переменная типа CK_ULONG, может принимать следующие значения:

0 – хеширование программное, исходные данные, на которые ссылается указатель pData, сохраняются вместе с подписанным сообщением;
PKCS7_DETACHED_SIGNATURE – исходные данные, на которые ссылается указатель pData, не сохраняются вместе с подписанным сообщением.
USE_HARDWARE_HASH - использовать аппаратное хеширование.

// указатель на массив, содержащий сертификаты для проверки подписи
	CK_ULONG 				ulCertificateCount;			// количество сертификатов в цепочке сертификатов
	CK_VENDOR_BUFFER_PTR 	pCrls;						// указатель на массив списков отзыва сертификатов
	CK_ULONG 				ulCrlCount;					// количество списков отзыва сертификатов в массиве
} CK_VENDOR_X509_STORE; 


typedef struct CK_VENDOR_BUFFER {
	CK_BYTE_PTR pData;		// указатель на массив байтов
	CK_ULONG ulSize;		// длина массива
}

Параметры

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

pCms

[in]указатель на массив байтов, содержащий сообщение в формате PKCS#7 для проверки

ulCmsSize

[in]длина сообщения

pStore

[in]

указатель на структуру типа CK_VENDOR_X509_STORE, которая содержит указатели на необходимые для проверки подписи доверенные сертификаты, сертификаты подписывающей стороны и списки отозванных сертификатов

ckMode

[in]

политика проверки списков отозванных сертификатов (CRLs), может принимать следующие значения:

OPTIONAL_CRL_CHECK – отсутствие списка отозванных сертификатов не вызывает ошибку при проверке подписи;
LEAF_CRL_CHECK – требуется наличие списка отозванных сертификатов для проверки сертификата подписанта;
ALL_CRL_CHECK требуется наличие списка отозванных сертификатов для проверки каждого сертификата из цепочки

flags[in]

опции проверки подписи, могут принимать следующие значения:

CKF_VENDOR_DO_NOT_USE_INTERNAL_CMS_CERTS – не использовать содержащиеся в CMS сообщении сертификаты для поиска сертификатов подписантов (сертификаты должны быть заданы в структуре CK_VENDOR_X509_STORE);
CKF_VENDOR_ALLOW_PARTIAL_CHAINS – для проверки подписи достаточно, чтобы хотя бы один сертификат удостоверяющего центра из цепочки сертификатов подписывающей стороны находился в списке доверенных.

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions". 

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

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

CKR_OPERATION_ACTIVE,

CKR_FUNCTION_FAILED,

CKR_FUNCTION_NOT_SUPPORTED.

к содержанию ↑

C_EX_PKCS7Verify()

Назначение

Выполняет проверкy присоединенной (attached) подписи в формате PKCS#7 и возвращает данные, которые были подписаны, и сертификаты подписантов.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7Verify)(
	CK_SESSION_HANDLE 			hSession,
	CK_BYTE_PTR_PTR 			ppData,
	CK_ULONG_PTR 				pulDataSize,
	CK_VENDOR_BUFFER_PTR_PTR 	ppSignerCertificates,
	CK_ULONG_PTR 				pulSignerCertificatesCount 
);

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions". Буфер ppEnvelope создается внутри функции. После окончания работы с ним необходимо освободить его, вызвав функцию C_EX_FreeBuffer().

Функция поддерживает подпись по следующим алгоритмам: ГОСТ 34.10-2012 с длиной закрытого ключа 256 бит и ГОСТ 34.10-2001 (механизм CKM_GOSTR3410).

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

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

к содержанию ↑

C_EX_PKCS7VerifyInit()

Назначение

Инициализирует процесс проверки подписи переданных на вход данных в формате PKCS#7.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7VerifyInit)(
	CK_SESSION_HANDLE 			hSession,
	CK_BYTE_PTR 				pCms,
	CK_ULONG 					ulCmsSize,
	CK_VENDOR_X509_STORE_PTR 	pStore,
	CK_VENDOR_CRL_MODE 			ckMode,
	CK_FLAGS 					flags 
);
 
typedef struct CK_VENDOR_X509_STORE {
	CK_VENDOR_BUFFER_PTR 	pTrustedCertificates; 		// указатель на массив доверенных сертификатов	
	CK_ULONG 				ulTrustedCertificateCount;	// количество доверенных сертификатов в массиве
	CK_VENDOR_BUFFER_PTR 	pCertificates; 				// указатель на массив, содержащий сертификаты для проверки подписи
	CK_ULONG 				ulCertificateCount;			// количество сертификатов в цепочке сертификатов
	CK_VENDOR_BUFFER_PTR 	pCrls;						// указатель на массив списков отзыва сертификатов
	CK_ULONG 				ulCrlCount;					// количество списков отзыва сертификатов в массиве
} CK_VENDOR_X509_STORE; 


typedef struct CK_VENDOR_BUFFER {
	CK_BYTE_PTR pData;		// указатель на массив байтов
	CK_ULONG ulSize;		// длина массива
}

Параметры

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

pCmsppData

[inout]указатель на массив байтов, содержащий сообщение в формате PKCS#7 для проверки

ulCmsSize

[in]длина сообщения

pStore

[in]

указатель на структуру типа CK_VENDOR_X509_STORE, которая содержит указатели на необходимые для проверки подписи доверенные сертификаты, сертификаты подписывающей стороны и списки отозванных сертификатов

ckMode

[in]

политика проверки списков отозванных сертификатов (CRLs), может принимать следующие значения:

OPTIONAL_CRL_CHECK – отсутствие списка отозванных сертификатов не вызывает ошибку при проверке подписи;
LEAF_CRL_CHECK – требуется наличие списка отозванных сертификатов для проверки сертификата подписанта;
ALL_CRL_CHECK требуется наличие списка отозванных сертификатов для проверки каждого сертификата из цепочки

flags[in]

опции проверки подписи, могут принимать следующие значения:

CKF_VENDOR_DO_NOT_USE_INTERNAL_CMS_CERTS – не использовать содержащиеся в CMS сообщении сертификаты для поиска сертификатов подписантов (сертификаты должны быть заданы в структуре CK_VENDOR_X509_STORE);
CKF_VENDOR_ALLOW_PARTIAL_CHAINS – для проверки подписи достаточно, чтобы хотя бы один сертификат удостоверяющего центра из цепочки сертификатов подписывающей стороны находился в списке доверенных.

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions". 

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

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

CKR_ARGUMENTS_BAD,

CKR_OPERATION_ACTIVE,

CKR_FUNCTION_FAILED,

CKR_FUNCTION_NOT_SUPPORTED.

к содержанию ↑

C_EX_PKCS7Verify()

Назначение

Выполняет проверкy присоединенной (attached) подписи в формате PKCS#7 и возвращает данные, которые были подписаны, и сертификаты подписантов.

Синтаксис

данные, которые были подписаны (EncapsulatedContentInfo)

pulDataSize

[out]размер данных

ppSignerCertificates

[out]

указатель на массив, содержащий сертификаты подписантов

pulSignerCertificatesCount

[out]

количество сертификатов в массиве

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions", после вызова функции C_EX_PKCS7Verifyinit.

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

CKR_OK – функция выполнена успешно.
CKR_CERT_CHAIN_NOT_VERIFIED – функция выполнена успешно, но цепочка сертификации не проверялась,

CKR_ARGUMENTS_BAD,

CKR_CERT_CHAIN_NOT_VERIFIED,

CKR_FUNCTION_NOT_SUPPORTED,

CKR_HOST_MEMORY,

CKR_OPERATION_NOT_INITIALIZED,

CKR_SIGNATURE_INVALID.

к содержанию ↑

C_EX_PKCS7VerifyUpdate()

Назначение

Начинает процесс проверки отсоединенной (detached) подписи в формате PKCS#7.

Синтаксис

Code Block
CK_DEFINE_
Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7VerifyPKCS7VerifyUpdate)(
	CK_SESSION_HANDLE 			hSession,
	CK_BYTE_PTR_PTR     			ppDatapData,
	CK_ULONG_PTR 	       			pulDataSize,
	CK_VENDOR_BUFFER_PTR_PTR 	ppSignerCertificates,
	CK_ULONG_PTR 				pulSignerCertificatesCount 
);

typedef struct CK_VENDOR_BUFFER {
	CK_BYTE_PTR pData;		// указатель на массив байтов
	CK_ULONG ulSize;		// длина массива
}

ulDataSize
);

Параметры

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

ppDatapData

[outin]указатель на массив байтов, содержащий данныеблок данных, которые были подписаны (EncapsulatedContentInfo)

pulDataSizeulDataSize

[outin]размер данных

ppSignerCertificates

[out]

указатель на массив, содержащий сертификаты подписантов

pulSignerCertificatesCount

[out]

количество сертификатов в массиве

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions",  после вызова функции C_EX_PKCS7Verifyinit.

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

PKCS7VerifyInit. Для завершения процесса проверки подписи необходим вызов функции C_EX_PKCS7Verifyfinal.

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

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

CKR_ARGUMENTS_BAD,

CKR_CERT_CHAIN_NOT_VERIFIED,CKR_FUNCTION_NOT_SUPPORTED,

CKR_HOST_MEMORY,

CKR_OPERATION_NOT_INITIALIZED,CKR_SIGNATURE_INVALID.

к содержанию ↑

C_EX_

...

PKCS7VerifyFinal()

Назначение

Начинает Завершает процесс проверки отсоединенной (detached) подписи  подписи в формате PKCS#7 и возвращает сертификаты подписантов.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7VerifyUpdatePKCS7VerifyFinal)(
	CK_SESSION_HANDLE 			hSession,
	CK_VENDOR_BUFFER_BYTEPTR_PTR     			pData	ppSignerCertificates,
	CK_ULONG_PTR 	       			ulDataSizepulSignerCertificatesCount 
);

Параметры

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

pDatappSignerCertificates

[inout]

указатель на массив

байтов

, содержащий

блок данных, которые были подписаны (EncapsulatedContentInfo)

сертификаты подписантов

pulSignerCertificatesCountulDataSize

[inout]размер данных

количество сертификатов в массиве

Примечание

Функция может быть вызвана только из состояний  "R/W User Functions" и  "R User Functions",  после вызова функции C_EX_PKCS7VerifyInit. Для завершения процесса проверки подписи необходим вызов функции C_EX_PKCS7VerifyfinalPKCS7VerifyUpdate.

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

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

CKR_SIGNATURE_INVALID,

CKR_ARGUMENTS_BAD,

CKR_CERT_CHAIN_NOT_VERIFIED,

CKR_FUNCTION_NOT_SUPPORTED,

...

CKR_OPERATION_NOT_INITIALIZED.

к содержанию ↑

...

Функции для работы с флеш-памятью 

 

AUI Button
button-stylePrimary
button-textподробнее про управление памятью
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=13795364#id-%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D1%87%D0%B5%D1%80%D0%B5%D0%B7PKCS#11-%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%D1%8E%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%AD%D0%A6%D0%9FFlash

C_EX_

...

GetDriveSize()

Назначение

Завершает процесс проверки отсоединенной (detached) подписи в формате PKCS#7 и возвращает сертификаты подписантовВозвращает размер флеш-памяти токена.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_PKCS7VerifyFinalGetDriveSize)(
	  CK_SESSION_HANDLE 			hSession,
	CK_VENDOR_BUFFER_PTR_PTR 	ppSignerCertificates,
	SLOT_ID            slotID,
  CK_ULONG_PTR 				pulSignerCertificatesCount 
);
          pulDriveSize 
);

Параметры

hSession

slotID

[in]

дескриптор сессии

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

pulDriveSizeppSignerCertificates

[out]

указатель на массив, содержащий сертификаты подписантов

pulSignerCertificatesCount

[out]

количество сертификатов в массиве

Примечание

...

возвращаемый размер флеш-памяти в Мб

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

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

CKR_SIGNATURE_INVALID,

CKR_ARGUMENTS_BAD,

CKR_CERT_CHAIN_NOT_VERIFIED,

CKR_FUNCTION_NOT_SUPPORTED,

CKR_HOST_MEMORY,

CKR_OPERATION_NOT_INITIALIZED.

к содержанию ↑

Функции для работы с флеш-памятью 

 

AUI Button
button-stylePrimary
button-textподробнее про управление памятью
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=13795364#id-%D0%92%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D1%87%D0%B5%D1%80%D0%B5%D0%B7PKCS#11-%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C%D1%8E%D0%A0%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD%D0%AD%D0%A6%D0%9FFlash

C_EX_GetDriveSize()

Назначение

Возращает размер флеш-памяти токена.

Синтаксис

Пример

Code Block
collapsetrue
CK_ULONG ulDriveSize = 0;         
Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_GetDriveSize)(
  CK_SLOT_ID            slotID,
  CK_ULONG_PTR        // Общий pulDriveSizeобъем 
);

Параметры

slotID

[in]

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

pulDriveSize

[out]

возвращаемый размер флеш-памяти в Мб

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

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

Пример

Code Block
collapsetrue
CK_ULONG ulDriveSize = 0;                               // Общий объем флеш-памяти
 
флеш-памяти
 
printf("Get Flash memory size");
rv = pFunctionListEx->C_EX_GetDriveSize(aSlots[0],      // Идентификатор слота с подключенным токеном
										&ulDriveSize);  // Возвращаемый размер флеш-памяти в Мб
if (rv != CKR_OK)
	printf(" -> Failed\n");
else
{
	printf(" -> OK\n");
	printf("Memory size: %d Mb\n", (int)ulDriveSize);
}

...

Разбивает флеш-память токена на независимые разделы с разными правами доступа.

Синтаксис


Info
titleФункция приводит к переподключению токена

После окончания работы этой функции происходит переподключение токена. Нет никаких гарантий, что работу с этим токеном можно производить по старому SLOT_ID: он может начать указывать на другой токен или не быть валидным вовсе. Новый SLOT_ID токена можно найти, например, по серийному номеру. 

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_
Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_FormatDrive)  (
  CK_SLOT_ID                    slotID, 
  CK_USER_TYPE                  userType,  
  CK_UTF8CHAR_PTR               pPin,    
  CK_ULONG                      ulPinLen,  
  CK_VOLUME_FORMAT_INFO_EXTENDED_PTR   pInitParams,
  CK_ULONG                      ulInitParamsCount
);
 
typedef struct CK_VOLUME_FORMAT_INFO_EXTENDED
{
  CK_ULONG                ulVolumeSize; 
  CK_ACCESS_MODE_EXTENDED accessMode;      
  CK_OWNER_EXTENDED       volumeOwner;
  CK_FLAGS                flags;
} CK_VOLUME_FORMAT_INFO_EXTENDED;

...

Функция измененяет флаг доступа к разделу.

Info

Синтаксис

titleФункция приводит к переподключению токена

После изменения доступа к разделу на постоянной основе происходит переподключение токена. Нет никаких гарантий, что работу с этим токеном можно производить по старому SLOT_ID: он может начать указывать на другой токен или не быть валидным вовсе. Новый SLOT_ID токена можно найти, например, по серийному номеру. 

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_ChangeVolumeAttributes)(
  CK_SLOT_ID        
Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_ChangeVolumeAttributes)(
  CK_SLOT_ID                    slotID,
  CK_USER_TYPE                  userType,
  CK_UTF8CHAR_PTR               pPin,
  CK_ULONG                      ulPinLen,
  CK_VOLUME_ID_EXTENDED         idVolume,
  CK_ACCESS_MODE_EXTENDED       newAccessMode,
  CK_BBOOL                      bPermanent
);

...

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-порта, после чего права доступа сбрасываются на прежние.

...

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

Примечания

Формат возвращаемой записи журнала и пример парсинга доступны по ссылке.

Пример

Code Block
collapsetrue
CK_BYTE_PTR           pJournal = NULL_PTR;          // Указатель на значение журнала
CK_ULONG              ulJournalSize = 0;            // Размер журнала
  
while(TRUE)
{
...
    /* Получить размер журнала */
    printf("Getting journal size");
    rv = pFunctionListEx->C_EX_GetJournal(aSlots[0],      // Хэндл слота с подключенным токеном
                                          NULL_PTR,       // Указатель на журнал
                                          &ulJournalSize);// Размер журнала
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
  
    pJournal = (CK_BYTE*)malloc(ulSlotCount * sizeof(CK_BYTE));
    if (pJournal == NULL)
    {
        printf("Memory allocation for pJournal failed! \n");
        break;
    }
    memset(pJournal, 0, (ulJournalSize * sizeof(CK_BYTE)));
  
    /* Получить журнал */
    printf("Getting journal");
    rv = pFunctionListEx->C_EX_GetJournal(aSlots[0],       // Хэндл слота с подключенным токеном
                                          pJournal,       // Указатель на журнал
                                          &ulJournalSize);// Размер журнала
    if (rv != CKR_OK)
    {
        printf(" -> Failed %X\n", (int)rv);
        break;
    }
    printf(" -> OK\n");
  
    ...
    break;
}

к содержанию ↑

Функции для работы с беспроводным каналом связи 

AUI Button
button-stylePrimary
button-textподробнее про Secure Messaging
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=10059883
 

C_EX_LoadActivationKey()

Назначение

Активирует защищенный канал связи с токеном с использованием пароля (поддерживается только в 20-й версии прошивки)

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_LoadActivationKey)(
  CK_SESSION_HANDLE hSession,
  CK_BYTE_PTR       key,
  CK_ULONG          keySize
);

Параметры

hSession

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

key

[in]указатель на пароль

keySize

[in]длина пароля

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

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

к содержанию ↑

C_EX_SetActivationPassword()

Назначение

Активирует защищенный канал связи с токеном с использованием пароля (поддерживается с 21-й версии прошивки).

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_SetActivationPassword)(
  CK_SLOT_ID        slotID,
  CK_UTF8CHAR_PTR   password
);

Параметры

hSession

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

password

[in]пароль активации

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

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

к содержанию ↑

C_EX_GenerateActivationPassword()

Назначение

Журнал позволяет хранить только одну запись с информацией о последней выполненной операции подписи. Неудачные попытки подписи в журнале не фиксируются. Описание формата записи журнала доступно по ссылке.

Для получения записи журнала необходимо вызвать функцию C_EX_GetJournal() с переданными в нее значением слота, к которому подключен Рутокен  ЭЦП, и данными буфера, в который будет возвращена запись журнала. Вызов функции C_EX_GetJournal() с указателем на NULL вместо буфера вернет длину записи журнала.

Перед запросом информации о журнале необходимо выполнить аутентификацию Пользователем.
Получение значения журнала

CK_BYTE_PTR           pJournal = NULL_PTR;          // Указатель на значение журнала
CK_ULONG              ulJournalSize = 0;            // Размер журнала
  
while(TRUE)
{
...
    /* Получить размер журнала */
    printf("Getting journal size");
    rv = pFunctionListEx->C_EX_GetJournal(aSlots[0],      // Хэндл слота с подключенным токеном
                                          NULL_PTR,       // Указатель на журнал
                                          &ulJournalSize);// Размер журнала
    if (rv != CKR_OK)
    {
        printf(" -> Failed\n");
        break;
    }
    printf(" -> OK\n");
  
    pJournal = (CK_BYTE*)malloc(ulSlotCount * sizeof(CK_BYTE));
    if (pJournal == NULL)
    {
        printf("Memory allocation for pJournal failed! \n");
        break;
    }
    memset(pJournal, 0, (ulJournalSize * sizeof(CK_BYTE)));
  
    /* Получить журнал */
    printf("Getting journal");
    rv = pFunctionListEx->C_EX_GetJournal(aSlots[0],       // Хэндл слота с подключенным токеном
                                          pJournal,       // Указатель на журнал
                                          &ulJournalSize);// Размер журнала
    if (rv != CKR_OK)
    {
        printf(" -> Failed %X\n", (int)rv);
        break;
    }
    printf(" -> OK\n");
  
    ...
    break;
}


к содержанию ↑

Функции для работы с беспроводным каналом связи 

AUI Button
button-stylePrimary
button-textподробнее про Secure Messaging
button-urlhttps://dev.rutoken.ru/pages/viewpage.action?pageId=10059883
 

C_EX_LoadActivationKey()

Назначение

Активирует защищенный канал связи с токеном с использованием пароля (поддерживается только в 20-й версии прошивки)Генерирует пароль для активации защищенного канала связи с токеном.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_GenerateActivationPasswordLoadActivationKey)(
  CK_SESSION_HANDLE     hSession,
  CK_ULONG              ulPasswordNumber,
  CK_UTF8CHARBYTE_PTR       pPassword,
  CK_ULONG_PTR          pulPasswordSizekey,
  CK_ULONG              ulPasswordCharacterSet
);

Параметры

...

hSession

...

ulPasswordNumber

...

порядковый номер генерируемого пароля. Допустимые значения от 1 до 6 и

GENERATE_NEXT_PASSWORD – генерировать следующий пароль (только для 21-й версии микропрограммы)

...

pPassword

...

pulPasswordSize

...

ulPasswordCharacterSet

...

набор допустимых символов:

CAPS_AND_DIGITS – заглавные буквы латинского алфавита без O и цифры без 0
CAPS_ONLY – заглавные буквы латинского алфавита

          keySize
);

Параметры

hSession

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

key

[in]указатель на пароль

keySize

[in]длина пароля

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

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

к содержанию ↑

C_EX_

...

SetActivationPassword()

Назначение

Управляет режимом работы токена и таймаутом беспроводного соединения Рутокен Bluetooth.

...

Активирует защищенный канал связи с токеном с использованием пароля (поддерживается с 21-й версии прошивки).

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_TokenManageSetActivationPassword)(
  CK_SESSION_HANDLE     hSession,
  CK_ULONG    SLOT_ID          ulModeslotID,
  CK_VOIDUTF8CHAR_PTR           pValuepassword
);

Параметры

...

hSession

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

password

[in]пароль активации

hSession

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

ulMode

[in]

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

MODE_SET_BLUETOOTH_POWEROFF_TIMEOUT – установить таймаут для беспроводного канала связи
MODE_SET_CHANNEL_TYPE – установить тип используемого канала связи

pValue

[in] 
  • значение таймаута для режима MODE_SET_BLUETOOTH_POWEROFF_TIMEOUT:

1 .. 0х46 – произвольное значение в минутах, от 1 минуты до 70 минут
BLUETOOTH_POWEROFF_TIMEOUT_DEFAULT – по умолчанию
BLUETOOTH_POWEROFF_TIMEOUT_MAX – максимальное значение (70 минут)

  • канал связи для режима MODE_SET_CHANNEL_TYPE:
CHANNEL_TYPE_USB – по шине USB
CHANNEL_TYPE_BLUETOOTH – по Bluetooth

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

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

к содержанию ↑

Функции для работы с ключами в оперативной памяти

C_EX_

...

GenerateActivationPassword()

Назначение

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

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_WrapKey)(
 CK_SESSION_HANDLE hSession,
 CK_MECHANISM_PTR pGenerationMechanism,
 CK_ATTRIBUTE_PTR pKeyTemplate,
 CK_ULONG ulKeyAttributeCount,
GenerateActivationPassword)(
  CK_MECHANISM_PTR pDerivationMechanismSESSION_HANDLE     hSession,
  CK_OBJECT_HANDLE hBaseKey,
ULONG              ulPasswordNumber,
  CK_MECHANISMUTF8CHAR_PTR pWrappingMechanism      pPassword,
  CK_BYTEULONG_PTR pWrappedKey          pulPasswordSize,
  CK_ULONG_PTR pulWrappedKeyLen,
 CK_OBJECT_HANDLE_PTR phKey              ulPasswordCharacterSet
);

Параметры

hSession

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

pGenerationMechanism

[in]

механизм генерации сессионного ключа. Допустимое значение:

CKM_GOST28147_KEY_GEN – по стандарту ГОСТ 28147-89

ulPasswordNumber


порядковый номер генерируемого пароля. Допустимые значения от 1 до 6 и

GENERATE_NEXT_PASSWORD – генерировать следующий пароль (только для 21-й версии микропрограммы)

pPassword

[out

pKeyTemplate

[in] указатель на буфер, содержащий шаблон сессионого ключасгенерированный пароль

pulPasswordSizeulKeyAttributeCount

[inout] количество атрибутов сессионого ключа в шаблонеразмер буфера

ulPasswordCharacterSetpDerivationMechanism

[in] 

набор допустимых символовмеханизм выработки ключа согласования. Допустимые значения:

CKMCAPS_GOSTR3410AND_DERIVE – по стандарту ГОСТ Р 34.10-2001
CKM_GOSTR3410_12_DERIVE – по стандарту ГОСТ Р 34.10-2012

hBaseKey

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

pWrappingMechanism

[in] механизм шифрования сессионного ключа

pWrappedKey

[in] указатель на зашифрованный сессионный ключ

pulWrappedKeyLen

[in] 

длина зашифрованного сессионного ключа

phKey

[out] указатель на сессионый ключ (CEK)

...

DIGITS – заглавные буквы латинского алфавита без O и цифры без 0
CAPS_ONLY – заглавные буквы латинского алфавита

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

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

к содержанию ↑

C_EX_TokenManage() 
Anchor
C_EX_TokenManageBluetooth
C_EX_

...

TokenManageBluetooth

Назначение

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

Управляет режимом работы токена и таймаутом беспроводного соединения Рутокен Bluetooth.

 Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_UnwrapKeyTokenManage)(
  CK_SESSION_HANDLE     hSession,
  CK_MECHANISM_PTR pDerivationMechanism,
 CK_OBJECT_HANDLE hBaseKey,
 CK_MECHANISM_PTR pUnwrappingMechanism,
 CK_BYTE_PTR pWrappedKey,
 CK_ULONG ulWrappedKeyLen,
 CK_ATTRIBUTE_PTR pKeyTemplate,
 CK_ULONG ulKeyAttributeCount,
 CK_OBJECT_HANDLE_PTR phKeyULONG              ulMode,
  CK_VOID_PTR           pValue
);

Параметры

указатель на дескриптор сессионного ключа (CEK)

hSession

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

pDerivationMechanismulMode

[in]

механизм выработки ключа согласования (KEK). Допустимые значения:

CKM_GOSTR3410_DERIVE – по стандарту ГОСТ Р 34.10-2001
CKM_GOSTR3410_12_DERIVE – по стандарту ГОСТ Р 34.10-2012

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

MODE_SET_BLUETOOTH_POWEROFF_TIMEOUT – установить таймаут для беспроводного канала связи
MODE_SET_CHANNEL_TYPE – установить тип используемого канала связи

pValuehBaseKey

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

pUnwrappingMechanism

[in] 

механизм расшифрования зашифрованного сессионного ключа

pWrappedKey

[in]указатель на зашифрованный сессионный ключ

ulWrappedKeyLen

[in]
длина зашифрованного сессионного ключа

pKeyTemplate

[in]указатель на буфер, содержащий шаблон сессионного ключа

ulKeyAttributeCount

[in]количество атрибутов сессионного ключа в шаблоне

phKey

[out]
  • значение таймаута для режима MODE_SET_BLUETOOTH_POWEROFF_TIMEOUT:

1 .. 0х46 – произвольное значение в минутах, от 1 минуты до 70 минут
BLUETOOTH_POWEROFF_TIMEOUT_DEFAULT – по умолчанию
BLUETOOTH_POWEROFF_TIMEOUT_MAX – максимальное значение (70 минут)

  • канал связи для режима MODE_SET_CHANNEL_TYPE:

CHANNEL_TYPE_USB – по шине USB
CHANNEL_TYPE_BLUETOOTH – по Bluetooth

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

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


Info
titleМультифункциональная функция

Здесь описаны не все возможные параметры функции. Описание других параметров функции можно найти здесь


к содержанию ↑

Вспомогательные функции

C_EX_FreeBuffer()

Назначение

Функция освобождает память, выделенную другими расширенными функциями, например C_EX_GetCertificateInfoText.

Синтаксис

Code Block
CK_DEFINE_FUNCTION(CK_RV, C_EX_FreeBuffer)(
	CK_BYTE_PTR		pBuffer
);

Параметры

pBuffer[in]указатель на буфер

...

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

Пример

Code Block
collapsetrue
CK_BYTE_PTR		pInfo

.
.
rv = pfGetFunctionListEx -> C_EX_FreeBuffer(pInfo);				// очистка буфера, использующегося функцией C_EX_GetCertificateInfoText()
if (rv != CKR_OK)												// проверка результата
	printf("C_EX_FreeBuffer() -> failed \n");
else
	printf("C_EX_FreeBuffer() -> OK \n"); 

...