C_VerifyInit()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_VerifyInit)( CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey );
Параметры
hSession | [in] | Дескриптор сессии |
| pMechanism | [in] | Указатель на структуру с информацией о механизме проверки подписи |
hKey | [in] | Дескриптор ключа проверки подписи |
Назначение
Функция инициализирует операцию проверки подписи, при которой подпись является приложением к данным.
Примечание
Атрибут CKA_VERIFY ключа проверки подписи должен иметь значение CK_TRUE.
После вызова C_VerifyInit приложение может:
- вызвать C_Verify для проверки подписи над данными, переданными единым блоком;
- вызвать C_VerifyUpdate один или несколько раз, а затем C_VerifyFinal, для проверки подписи над данными, переданными несколькими блоками.
Операция проверки считается активной до тех пор, пока приложение не вызовет C_Verify или C_VerifyFinal. Чтобы обработать дополнительные данные (в едином или нескольких блоках), приложение должно снова вызвать C_VerifyInit.
Возвращаемые значения
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_VerifyFinal()
C_Verify()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_Verify)( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen );
Параметры
hSession | [in] | Дескриптор сессии |
| pData | [in] | Указатель на подписанные данные |
ulDataLen | [in] | Размер данных в байтах |
| pSignature | [in] | Указатель на подпись |
| pulSignatureLen | [in] | Размер подписи в байтах |
Назначение
Функция выполняет проверку подписи единого блока данных.
Примечание
Операция проверки обязательно должна быть предварительно инициализирована с помощью C_VerifyInit. Вызов C_Verify всегда завершает активную операцию проверки.
Успешный вызов C_Verify должен возвращать либо CKR_OK (проверяемая подпись действительна), либо CKR_SIGNATURE_INVALID (проверяемая подпись недействительна). Если подпись недействительна исключительно из‑за ее длины, следует вернуть CKR_SIGNATURE_LEN_RANGE. В любом из этих случаев активная операция проверки подписи завершается.
C_Verify не может использоваться для завершения многошаговой операции проверки и должна вызываться после C_VerifyInit без промежуточных вызовов C_VerifyUpdate.
Для большинства механизмов вызов C_Verify — то же самое, что и несколько вызовов C_VerifyUpdate, за которыми следует вызов C_VerifyFinal.
Возвращаемые значения
CKR_OK – функция выполнена успешно.
Стандартные коды ошибок:
CKR_ARGUMENTS_BAD,
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_SIGNATURE_INVALID,
CKR_SIGNATURE_LEN_RANGE.
Пример
C_VerifyUpdate()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_VerifyUpdate)( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen );
Параметры
hSession | [in] | Дескриптор сессии |
| pPart | [in] | Указатель на часть подписанных данных |
ulPartLen | [in] | Размер части подписанных данных в байтах |
Назначение
Функция продолжает проверку подписанных данных по частям.
Примечание
Операция проверки обязательно должна быть предварительно инициализирована с помощью C_VerifyInit.
C_VerifyUpdate может вызываться несколько раз подряд. Если вызов C_VerifyUpdate приводит к ошибке, текущая операция проверки немедленно завершается.
Возвращаемые значения
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.
Пример
см. C_VerifyFinal()
C_VerifyFinal()
Синтаксис
CK_DEFINE_FUNCTION(CK_RV, C_VerifyFinal)( CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen );
Параметры
hSession | [in] | Дескриптор сессии |
| pSignature | [in] | Указатель на подпись |
| pulSignatureLen | [in] | Размер подписи в байтах |
Назначение
Функция завершает проверку подписанных данных по частям.
Примечание
Операция проверки обязательно должна быть предварительно инициализирована с помощью C_VerifyInit.
Вызов C_VerifyFinal всегда завершает активную операцию проверки подписи.
Успешный вызов C_VerifyFinal должен возвращать либо CKR_OK (проверяемая подпись действительна), либо CKR_SIGNATURE_INVALID (проверяемая подпись недействительна). Если подпись недействительна исключительно из‑за ее длины, следует вернуть CKR_SIGNATURE_LEN_RANGE. В любом из этих случаев активная операция проверки подписи завершается.
Возвращаемые значения
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_SIGNATURE_INVALID,
CKR_SIGNATURE_LEN_RANGE.