Функции общего назначения
Table of Contents | ||||||||
---|---|---|---|---|---|---|---|---|
|
C_Initialize()
Code Block |
---|
CK_DEFINE_FUNCTION(CK_RV, C_Initialize)( CK_VOID_PTR pInitArgs ); |
Назначение
Функция инициализирует библиотеку PKCS #11 для ее дальнейшего использования приложением. Первоначальный вызов этой функции является обязательным для работы библиотеки, иначе попытка вызова любой функции без вызова C_Initalize приведет к ошибке CKR_CRYPTOKI_NOT_INITIALIZED. Исключением из этого правила является вызов функции C_GetFunctionList, предоставляющий указатель на структуру CK_FUNCTION_LIST, в которой содержатся указатели на все функции, реализованные стандартом. В структуре содержатся указатели на функции, позволяющие синхронизировать работу библиотеки с помощью предоставленных пользователем механизмов, флаги, указывающие на режим синхронизации, и зарезервированный параметр.
...
Если библиотеку используют несколько приложений, то каждое из них должно вызвать функцию C_Initialize. Каждый вызов функции C_Initialize должен в итоге быть сменен одиночным вызовом функции C_Finalize.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
...
CKR_NEED_TO_CREATE_THREADS.
Расширенные коды ошибок.
Пример
Excerpt Include | ||||||||
---|---|---|---|---|---|---|---|---|
|
C_Finalize()
Code Block |
---|
CK_DEFINE_FUNCTION(CK_RV, C_Finalize)( CK_VOID_PTR pReserved ); |
Назначение
Функция завершает работу с библиотекой PKCS#11. Попытка вызова любой функции после C_Finalize (исключение C_Initalize и C_GetFunctionList) приведет к ошибке CKR_CRYPTOKI_NOT_INITIALIZED.
...
Если библиотеку используют несколько приложений, то каждое из них должно вызвать функцию C_Finalize. Вызову C_Finalize должен предшествовать вызов C_Initialize, в промежутке между вызовами этих двух функций могут выполняться другие функции, описанные в библиотеке.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
...
CKR_HOST_MEMORY.
Расширенные коды ошибок.
Пример
Excerpt Include | ||||||||
---|---|---|---|---|---|---|---|---|
|
C_GetInfo()
Code Block |
---|
CK_DEFINE_FUNCTION(CK_RV, C_GetInfo)( CK_INFO_PTR pInfo ); |
Назначение
Функция позволяет получить общую информацию о библиотеке, которая возвращается в структуре типа CK_INFO. pInfo указывает на размещение этой информации.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
...
CKR_HOST_MEMORY.
Расширенные коды ошибок.
Пример
Excerpt | |||||
---|---|---|---|---|---|
|
C_GetFunctionList()
Code Block |
---|
CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionList)( CK_FUNCTION_LIST_PTR_PTR ppFunctionList ); |
Назначение
Функция позволяет получить список функций, поддерживаемых библиотекой. Список указателей на все поддерживаемые функции возвращается в структуре типа CK_FUNCTION_LIST.
C_GetFunctionList является единственной функцией стандарта PKCS#11, которая может быть вызвана до вызова функции C_Initialize. Это сделано для ускорения работы приложения, а также для возможности одновременного доступа приложения к нескольким библиотекам.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
...
CKR_HOST_MEMORY.
Расширенные коды ошибок.
Пример
Code Block | ||
---|---|---|
| ||
CK_FUNCTION_LIST_PTR pFunctionList; CK_C_Initialize pC_Initialize; CK_RV rv; /* Функция C_GetFunctionList может быть вызвана до вызова C_Initialize */ rv = C_GetFunctionList(&pFunctionList); assert(rv == CKR_OK); pC_Initialize = pFunctionList -> C_Initialize; /* Вызов функции C_Initialize в библиотеке*/ rv = (*pC_Initialize)(NULL_PTR); |