/*
* COPYRIGHT (c) International Business Machines Corp. 2015-2017
*
* This program is provided under the terms of the Common Public License,
* version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
* software constitutes recipient's acceptance of CPL-1.0 terms which can be
* found in the file LICENSE file or at
* https://opensource.org/licenses/cpl1.0.php
*/
/*
* OpenCryptoki EP11 token - EP11 token functions
*
*/
#ifndef EP11_SPECIFIC_H
#define EP11_SPECIFIC_H
CK_RV ep11tok_get_mechanism_list(STDLL_TokData_t * tokdata,
CK_MECHANISM_TYPE_PTR pMechanismList,
CK_ULONG_PTR pulCount);
CK_RV ep11tok_get_mechanism_info(STDLL_TokData_t * tokdata,
CK_MECHANISM_TYPE type,
CK_MECHANISM_INFO_PTR pInfo);
CK_RV ep11tok_is_mechanism_supported(STDLL_TokData_t *tokdata,
CK_MECHANISM_TYPE type);
CK_RV ep11tok_is_mechanism_supported_ex(STDLL_TokData_t *tokdata,
CK_MECHANISM_PTR mech);
CK_RV ep11tok_init(STDLL_TokData_t * tokdata, CK_SLOT_ID SlotNumber,
char *conf_name);
CK_RV ep11tok_final(STDLL_TokData_t * tokdata);
CK_RV ep11tok_generate_key(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM_PTR mech, CK_ATTRIBUTE_PTR attrs,
CK_ULONG attrs_len, CK_OBJECT_HANDLE_PTR handle);
CK_RV ep11tok_derive_key(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM_PTR mech, CK_OBJECT_HANDLE hBaseKey,
CK_OBJECT_HANDLE_PTR handle, CK_ATTRIBUTE_PTR attrs,
CK_ULONG attrs_len);
CK_RV ep11tok_generate_key_pair(STDLL_TokData_t * tokdata, SESSION * sess,
CK_MECHANISM_PTR pMechanism,
CK_ATTRIBUTE_PTR pPublicKeyTemplate,
CK_ULONG ulPublicKeyAttributeCount,
CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
CK_ULONG ulPrivateKeyAttributeCount,
CK_OBJECT_HANDLE_PTR phPublicKey,
CK_OBJECT_HANDLE_PTR phPrivateKey);
CK_RV ep11tok_sign_init(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM * mech, CK_BBOOL recover_mode,
CK_OBJECT_HANDLE key);
CK_RV ep11tok_sign(STDLL_TokData_t * tokdata, SESSION * session,
CK_BBOOL length_only, CK_BYTE * in_data,
CK_ULONG in_data_len, CK_BYTE * signature,
CK_ULONG * sig_len);
CK_RV ep11tok_sign_update(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE * in_data, CK_ULONG in_data_len);
CK_RV ep11tok_sign_final(STDLL_TokData_t * tokdata, SESSION * session,
CK_BBOOL length_only, CK_BYTE * signature,
CK_ULONG * sig_len);
CK_RV ep11tok_sign_single(STDLL_TokData_t *tokdata, SESSION *session,
CK_MECHANISM *mech, CK_BBOOL length_only,
CK_OBJECT_HANDLE key, CK_BYTE_PTR in_data,
CK_ULONG in_data_len, CK_BYTE_PTR signature,
CK_ULONG_PTR sig_len);
CK_RV ep11tok_verify_init(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM * mech, CK_BBOOL recover_mode,
CK_OBJECT_HANDLE key);
CK_RV ep11tok_verify(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE * in_data, CK_ULONG in_data_len,
CK_BYTE * signature, CK_ULONG sig_len);
CK_RV ep11tok_verify_update(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE * in_data, CK_ULONG in_data_len);
CK_RV ep11tok_verify_final(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE * signature, CK_ULONG sig_len);
CK_RV ep11tok_verify_single(STDLL_TokData_t *tokdata, SESSION *session,
CK_MECHANISM *mech, CK_OBJECT_HANDLE key,
CK_BYTE_PTR in_data, CK_ULONG in_data_len,
CK_BYTE_PTR signature, CK_ULONG sig_len);
CK_RV ep11tok_decrypt_final(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE_PTR output_part,
CK_ULONG_PTR p_output_part_len);
CK_RV ep11tok_decrypt(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE_PTR input_data, CK_ULONG input_data_len,
CK_BYTE_PTR output_data, CK_ULONG_PTR p_output_data_len);
CK_RV ep11tok_decrypt_update(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE_PTR input_part, CK_ULONG input_part_len,
CK_BYTE_PTR output_part,
CK_ULONG_PTR p_output_part_len);
CK_RV ep11tok_encrypt_final(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE_PTR output_part,
CK_ULONG_PTR p_output_part_len);
CK_RV ep11tok_encrypt(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE_PTR input_data, CK_ULONG input_data_len,
CK_BYTE_PTR output_data, CK_ULONG_PTR p_output_data_len);
CK_RV ep11tok_encrypt_update(STDLL_TokData_t * tokdata, SESSION * session,
CK_BYTE_PTR input_part,
CK_ULONG input_part_len, CK_BYTE_PTR output_part,
CK_ULONG_PTR p_output_part_len);
CK_RV ep11tok_encrypt_init(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM_PTR mech, CK_OBJECT_HANDLE key);
CK_RV ep11tok_encrypt_single(STDLL_TokData_t *tokdata, SESSION *session,
CK_MECHANISM *mech, CK_BBOOL length_only,
CK_OBJECT_HANDLE key, CK_BYTE *input_data,
CK_ULONG input_data_len, CK_BYTE *output_data,
CK_ULONG_PTR p_output_data_len);
CK_RV ep11tok_decrypt_init(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM_PTR mech, CK_OBJECT_HANDLE key);
CK_RV ep11tok_decrypt_single(STDLL_TokData_t *tokdata, SESSION *session,
CK_MECHANISM *mech, CK_BBOOL length_only,
CK_OBJECT_HANDLE key, CK_BYTE_PTR input_data,
CK_ULONG input_data_len, CK_BYTE_PTR output_data,
CK_ULONG_PTR p_output_data_len);
CK_RV ep11tok_wrap_key(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM_PTR mech, CK_OBJECT_HANDLE wrapping_key,
CK_OBJECT_HANDLE key, CK_BYTE_PTR wrapped_key,
CK_ULONG_PTR p_wrapped_key_len);
CK_RV ep11tok_unwrap_key(STDLL_TokData_t * tokdata, SESSION * session,
CK_MECHANISM_PTR mech, CK_ATTRIBUTE_PTR attrs,
CK_ULONG attrs_len, CK_BYTE_PTR wrapped_key,
CK_ULONG wrapped_key_len,
CK_OBJECT_HANDLE wrapping_key,
CK_OBJECT_HANDLE_PTR p_key);
CK_RV ep11tok_login_session(STDLL_TokData_t * tokdata, SESSION * session);
CK_RV ep11tok_logout_session(STDLL_TokData_t * tokdata, SESSION * session);
CK_BBOOL ep11tok_optimize_single_ops(STDLL_TokData_t *tokdata);
CK_BBOOL ep11tok_libica_mech_available(STDLL_TokData_t *tokdata,
CK_MECHANISM_TYPE mech,
CK_OBJECT_HANDLE hKey);
void ep11tok_copy_firmware_info(STDLL_TokData_t *tokdata,
CK_TOKEN_INFO_PTR pInfo);
#endif