C_CreateObject()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_CreateObject)( CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject );
Параметры
| hSession | [in] | Дескриптор сессии |
| pTemplate | [in] | Указатель на шаблон объекта |
| ulCount | [in] | Количество атрибутов в шаблоне |
| phObject | [out] | Указатель на дескриптор нового объекта |
Назначение
Функция создает новый объект.
Примечание
Если переданный в функцию шаблон не поддерживается функцией, то функция завершится ошибкой и новый объект не будет создан.
Если функция используется для создания объекта ключа, то значение атрибута CKA_LOCAL созданного объекта будет равно CK_FALSE. Если объект является секретным или закрытым ключом, то значения атрибутов CKA_ALWAYS_SENSITIVE и CKA_NEVER_EXTRACTABLE нового ключа будут равны CK_FALSE.
В сессии состояния «только для чтения» могут быть созданы только объекты сессии. Без авторизации пользователя на токене могут быть созданы только открытые объекты.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_ATTRIBUTE_READ_ONLY,
CKR_ATTRIBUTE_TYPE_INVALID,
CKR_ATTRIBUTE_VALUE_INVALID,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_DOMAIN_PARAMS_INVALID,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_PIN_EXPIRED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID,
CKR_SESSION_READ_ONLY,
CKR_TEMPLATE_INCOMPLETE,
CKR_TEMPLATE_INCONSISTENT,
CKR_TOKEN_WRITE_PROTECTED,
CKR_USER_NOT_LOGGED_IN.
Пример
C_DestroyObject()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_DestroyObject)( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject );
Параметры
| hSession | [in] | Дескриптор сессии |
| hObject | [in] | Дескриптор объекта |
Назначение
Функция уничтожает объект.
Примечание
Во время сессии «только чтение» могут быть уничтожены только объекты сессии. До авторизации пользователя могут быть уничтожены только открытые объекты.
Некоторые объекты не могут быть уничтожены — в этом случае функция вернет код ошибки CKR_ACTION_PROHIBITED. Приложение может обратиться к атрибуту объекта CKA_DESTROYABLE, чтобы определить, можно ли уничтожить этот объект.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OBJECT_HANDLE_INVALID,
CKR_PIN_EXPIRED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID,
CKR_SESSION_READ_ONLY,
CKR_TOKEN_WRITE_PROTECTED.
Пример
CK_SESSION_HANDLE hSession;
CK_OBJECT_HANDLE hObject;
CK_OBJECT_CLASS dataClass = CKO_DATA;
CK_UTF8CHAR application[] = {“My Application”};
CK_BYTE dataValue[] = {...};
CK_BYTE value[] = {...};
CK_BBOOL true = CK_TRUE;
CK_ATTRIBUTE template[] = {
{CKA_CLASS, &dataClass, sizeof(dataClass)},
{CKA_TOKEN, &true, sizeof(true)},
{CKA_APPLICATION, application, sizeof(application)-1},
{CKA_VALUE, value, sizeof(value)}
};
CK_ULONG ulSize;
CK_RV rv;
.
.
rv = C_CreateObject(hSession, &template, 4, &hObject);
if (rv == CKR_OK) {
rv = C_GetObjectSize(hSession, hObject, &ulSize);
if (rv != CKR_INFORMATION_SENSITIVE) {
.
.
}
rv = C_DestroyObject(hSession, hObject);
.
.
}
C_FindObjectsInit()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsInit)( CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount );
Параметры
| hSession | [in] | Дескриптор сессии |
| pTemplate | [in] | Указатель на шаблон объекта |
| ulCount | [in] | Количество атрибутов в шаблоне |
Назначение
Функция инициализирует поиск объектов, которые совпадают с указанным шаблоном объекта.
Примечание
Критерий соответствия — это точное побайтовое совпадение со всеми атрибутами в шаблоне. Чтобы найти все объекты, в параметре ulCount укажите 0.
После вызова C_FindObjectsInit приложение может вызывать C_FindObjects один или несколько раз, чтобы получить дескрипторы всех объектов, которые совпадают с заданным шаблоном, а затем завершить активный поиск вызовом C_FindObjectsFinal. Одновременно в сессии можно проводить только одну операцию поиска объектов.
Операция поиска объектов может найти только те объекты, которые видны в сессии. Например, поиск в сессии типа "R/W Public Session" не найдет закрытые объекты, даже если в шаблоне, по которому ищутся объекты, указаны атрибуты закрытых объектов.
Если во время выполнения поиска были созданы или уничтожены объекты, которые совпадают с заданным шаблоном, операция поиска может вернуть недействительные дескрипторы объектов.
C_FindObjectsInit может возвращать значения CKR_ATTRIBUTE_TYPE_INVALID и CKR_ATTRIBUTE_VALUE_INVALID, но это необязательно. Например, если передать в шаблоне несуществующие атрибуты, функция может или вернуть значение CKR_ATTRIBUTE_TYPE_INVALID, или выполнить поиск, в результате которого не будет найден ни один объект, и вернуть значение CKR_OK.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_ATTRIBUTE_TYPE_INVALID,
CKR_ATTRIBUTE_VALUE_INVALID,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OK,
CKR_OPERATION_ACTIVE,
CKR_PIN_EXPIRED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID.
Пример
C_FindObjects()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_FindObjects)( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount );
Параметры
| hSession | [in] | Дескриптор сессии |
| phObject | [out] | Указатель на массив дескрипторов объектов |
| ulMaxObjectCount | [in] | Максимальное количество дескрипторов объектов |
| pulObjectCount | [out] | Указатель на количество найденных дескрипторов объектов |
Назначение
Функция продолжает поиск объектов в соответствии с шаблоном, переданным в C_FindObjectsInit.
Если не нашлось больше объектов, совпадающих с шаблоном, тогда по адресу, на который указывает pulObjectCount, передается значение 0.
Поиск обязательно нужно инициализировать с помощью функции C_FindObjectsInit.
Примечание
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OPERATION_NOT_INITIALIZED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID.
Пример
C_FindObjectsFinal()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_FindObjectsFinal)( CK_SESSION_HANDLE hSession );
Параметры
| hSession | [in] | Дескриптор сессии |
Назначение
Функция завершает поиск объектов.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OPERATION_NOT_INITIALIZED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID.