mirror of https://github.com/wolfSSL/wolfssl.git
Merge pull request #5824 from SparkiDev/pkcs11_init_rv
PKCS#11: add initialization API that returns PKCS#11 return valuepull/5826/head
commit
7aa796bdbd
|
@ -409,6 +409,7 @@ static void pkcs11_val(const char* op, CK_ULONG val)
|
|||
*
|
||||
* @param [in] dev Device object.
|
||||
* @param [in] library Library name including path.
|
||||
* @param [in] heap Heap hint.
|
||||
* @return BAD_FUNC_ARG when dev or library are NULL pointers.
|
||||
* @return BAD_PATH_ERROR when dynamic library cannot be opened.
|
||||
* @return WC_INIT_E when the initialization PKCS#11 fails.
|
||||
|
@ -416,9 +417,29 @@ static void pkcs11_val(const char* op, CK_ULONG val)
|
|||
* @return 0 on success.
|
||||
*/
|
||||
int wc_Pkcs11_Initialize(Pkcs11Dev* dev, const char* library, void* heap)
|
||||
{
|
||||
return wc_Pkcs11_Initialize_ex(dev, library, heap, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load library, get function list and initialize PKCS#11.
|
||||
*
|
||||
* @param [in] dev Device object.
|
||||
* @param [in] library Library name including path.
|
||||
* @param [in] heap Heap hint.
|
||||
* @param [out] rvp PKCS#11 return value. Last return value seen.
|
||||
* May be NULL.
|
||||
* @return BAD_FUNC_ARG when dev or library are NULL pointers.
|
||||
* @return BAD_PATH_ERROR when dynamic library cannot be opened.
|
||||
* @return WC_INIT_E when the initialization PKCS#11 fails.
|
||||
* @return WC_HW_E when unable to get PKCS#11 function list.
|
||||
* @return 0 on success.
|
||||
*/
|
||||
int wc_Pkcs11_Initialize_ex(Pkcs11Dev* dev, const char* library, void* heap,
|
||||
CK_RV* rvp)
|
||||
{
|
||||
int ret = 0;
|
||||
CK_RV rv;
|
||||
CK_RV rv = CKR_OK;
|
||||
#ifndef HAVE_PKCS11_STATIC
|
||||
void* func;
|
||||
#endif
|
||||
|
@ -466,8 +487,13 @@ int wc_Pkcs11_Initialize(Pkcs11Dev* dev, const char* library, void* heap)
|
|||
}
|
||||
}
|
||||
|
||||
if (ret != 0)
|
||||
if (rvp != NULL) {
|
||||
*rvp = rv;
|
||||
}
|
||||
|
||||
if (ret != 0) {
|
||||
wc_Pkcs11_Finalize(dev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -72,6 +72,8 @@ enum Pkcs11KeyType {
|
|||
|
||||
WOLFSSL_API int wc_Pkcs11_Initialize(Pkcs11Dev* dev, const char* library,
|
||||
void* heap);
|
||||
WOLFSSL_API int wc_Pkcs11_Initialize_ex(Pkcs11Dev* dev, const char* library,
|
||||
void* heap, CK_RV* rvp);
|
||||
WOLFSSL_API void wc_Pkcs11_Finalize(Pkcs11Dev* dev);
|
||||
|
||||
WOLFSSL_API int wc_Pkcs11Token_Init(Pkcs11Token* token, Pkcs11Dev* dev,
|
||||
|
|
Loading…
Reference in New Issue