C_SignInit()
Синтаксис
CK_DEFINEDECLARE_FUNCTION(CK_RV, C_SignInit)( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey );
Параметры
hSession | [in] | Дескриптор сессии |
| pMechanism | [in] | Указатель на структуру с информацией о механизме подписи |
| hKey | [in] | Дескриптор ключа подписи |
Назначение
Функция инициализирует процесс подписи.
Примечание
Для того, чтобы ключ мог использоваться для выработки подписи, его атрибут CKA_SIGN должен иметь значение CK_TRUE.
После вызова C_SignInit приложение может либо вызвать C_Sign для подписи единого блока данных, либо вызвать C_SignUpdate один или несколько раз, а затем C_SignFinal — для подписи данных, разбитых на несколько блоков. Операция подписи считается активной до тех пор, пока приложение не выполнит вызов C_Sign или C_SignFinal. Только после этого подпись будет сформирована.
Чтобы обработать дополнительные данные (в одном или нескольких блоках) после завершения активной операции подписи, приложение должно снова вызвать C_SignInit.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_CANCELED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_KEY_FUNCTION_NOT_PERMITTED,
CKR_KEY_HANDLE_INVALID,
CKR_KEY_SIZE_RANGE,
CKR_KEY_TYPE_INCONSISTENT,
CKR_MECHANISM_INVALID,
CKR_MECHANISM_PARAM_INVALID,
CKR_OPERATION_ACTIVE,
CKR_PIN_EXPIRED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID,
CKR_USER_NOT_LOGGED_IN.
Пример
см. C_SignFinal()
C_Sign()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_Sign)( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen );
Параметры
hSession | [in] | Дескриптор сессии |
| pData | [in] | Указатель на структуру с информацией о механизме подписи |
| ulDataLen | [in] | Размер данных для подписи |
| pSignature | [out] | Указатель на массив с результатом подписи |
| pulSignatureLen | [out] | Указатель на размер массива с результатом подписи |
Назначение
Функция выполняет подпись единого блока данных.
Примечание
Операция подписи обязательно должна быть предварительно инициализирована с помощью C_SignInit.
C_Sign не может использоваться для завершения операции подписи данных по частям и должна вызываться после C_SignInit без промежуточных вызовов C_SignUpdate.
Для большинства механизмов вызов C_Sign — то же самое, что и несколько вызовов C_SignUpdate, за которыми следует вызов C_SignFinal.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_BUFFER_TOO_SMALL,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DATA_INVALID,
CKR_DATA_LEN_RANGE,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_CANCELED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OPERATION_NOT_INITIALIZED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID,
CKR_USER_NOT_LOGGED_IN,
CKR_FUNCTION_REJECTED.
Пример
см. C_SignFinal()
C_SignUpdate()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_SignUpdate)( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen );
Параметры
hSession | [in] | Дескриптор сессии |
| pPart | [in] | Указатель на массив с частью данных для подписи |
| ulPartLen | [in] | Размер массива с частью данных для подписи |
Назначение
Функция продолжает подпись данных по частям.
Примечание
Операция подписи обязательно должна быть предварительно инициализирована с помощью C_SignInit.
C_SignUpdate может вызываться несколько раз подряд. Если вызов C_SignUpdate приводит к ошибке, текущая операция подписи немедленно завершается.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DATA_LEN_RANGE,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_CANCELED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OPERATION_NOT_INITIALIZED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID,
CKR_USER_NOT_LOGGED_IN.
Пример
см. C_SignFinal()
C_SignFinal()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_SignFinal)( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen );
Параметры
hSession | [in] | Дескриптор сессии |
| pSignature | [out] | Указатель на массив с результатом подписи |
| pulSignatureLen | [out] | Указатель на размер массива с результатом подписи |
Назначение
Функция завершает подпись данных по частям.
Примечание
Операция подписи обязательно должна быть предварительно инициализирована с помощью C_SignInit.
Вызов C_SignFinal всегда завершает активную операцию подписи данных.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
CKR_BUFFER_TOO_SMALL,
CKR_CRYPTOKI_NOT_INITIALIZED,
CKR_DATA_LEN_RANGE,
CKR_DEVICE_ERROR,
CKR_DEVICE_MEMORY,
CKR_DEVICE_REMOVED,
CKR_FUNCTION_CANCELED,
CKR_FUNCTION_FAILED,
CKR_GENERAL_ERROR,
CKR_HOST_MEMORY,
CKR_OPERATION_NOT_INITIALIZED,
CKR_SESSION_CLOSED,
CKR_SESSION_HANDLE_INVALID,
CKR_USER_NOT_LOGGED_IN,
CKR_FUNCTION_REJECTED.