mirror of https://github.com/wolfSSL/wolfTPM.git
Fix to make sure the Crypto callback is unregistered on cleanup.
parent
4664405f7a
commit
6d836b91ad
|
@ -34,6 +34,12 @@
|
|||
|
||||
#include <wolfssl/ssl.h>
|
||||
|
||||
#undef USE_CERT_BUFFERS_2048
|
||||
#define USE_CERT_BUFFERS_2048
|
||||
#undef USE_CERT_BUFFERS_256
|
||||
#define USE_CERT_BUFFERS_256
|
||||
#include <wolfssl/certs_test.h>
|
||||
|
||||
/*
|
||||
* Generating the Client Certificate
|
||||
*
|
||||
|
@ -232,10 +238,19 @@ int TPM2_TLS_Client(void* userCtx)
|
|||
#else
|
||||
wolfSSL_CTX_set_verify(ctx, WOLFSSL_VERIFY_PEER, myVerify);
|
||||
#ifdef NO_FILESYSTEM
|
||||
/* example loading from buffer */
|
||||
#if 0
|
||||
if (wolfSSL_CTX_load_verify(ctx, ca.buffer, (long)ca.size,
|
||||
WOLFSSL_FILETYPE_ASN1) != WOLFSSL_SUCCESS) }
|
||||
/* Load CA Certificates from Buffer */
|
||||
#if !defined(NO_RSA) && !defined(TLS_USE_ECC)
|
||||
if (wolfSSL_CTX_load_verify_buffer(ctx,
|
||||
ca_cert_der_2048, sizeof_ca_cert_der_2048,
|
||||
WOLFSSL_FILETYPE_ASN1) != WOLFSSL_SUCCESS) {
|
||||
printf("Error loading ca_cert_der_2048 DER cert\n");
|
||||
goto exit;
|
||||
}
|
||||
#elif defined(HAVE_ECC)
|
||||
if (wolfSSL_CTX_load_verify_buffer(ctx,
|
||||
ca_ecc_cert_der_256, sizeof_ca_ecc_cert_der_256,
|
||||
WOLFSSL_FILETYPE_ASN1) != WOLFSSL_SUCCESS) {
|
||||
printf("Error loading ca_ecc_cert_der_256 DER cert\n");
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -272,8 +272,16 @@ int wolfTPM2_Cleanup(WOLFTPM2_DEV* dev)
|
|||
int rc;
|
||||
Shutdown_In shutdownIn;
|
||||
|
||||
if (dev == NULL)
|
||||
if (dev == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
#if defined(WOLF_CRYPTO_DEV) || defined(WOLF_CRYPTO_CB)
|
||||
/* make sure crypto dev callback is unregistered */
|
||||
rc = wolfTPM2_ClearCryptoDevCb(dev, INVALID_DEVID);
|
||||
if (rc != 0)
|
||||
return rc;
|
||||
#endif
|
||||
|
||||
shutdownIn.shutdownType = TPM_SU_CLEAR;
|
||||
rc = TPM2_Shutdown(&shutdownIn);
|
||||
|
@ -3353,6 +3361,28 @@ int wolfTPM2_SetCryptoDevCb(WOLFTPM2_DEV* dev, CryptoDevCallbackFunc cb,
|
|||
return rc;
|
||||
}
|
||||
|
||||
int wolfTPM2_ClearCryptoDevCb(WOLFTPM2_DEV* dev, int devId)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
if (dev == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
/* get device Id */
|
||||
if (devId == INVALID_DEVID) {
|
||||
rc = wolfTPM2_GetTpmDevId(dev);
|
||||
if (rc >= 0) {
|
||||
devId = rc;
|
||||
}
|
||||
}
|
||||
if (devId != INVALID_DEVID) {
|
||||
wc_CryptoCb_UnRegisterDevice(devId);
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
/* --- END wolf Crypto Device Support -- */
|
||||
/******************************************************************************/
|
||||
|
|
|
@ -289,6 +289,8 @@ typedef struct TpmCryptoDevCtx {
|
|||
WOLFTPM_API int wolfTPM2_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx);
|
||||
WOLFTPM_API int wolfTPM2_SetCryptoDevCb(WOLFTPM2_DEV* dev, CryptoDevCallbackFunc cb,
|
||||
TpmCryptoDevCtx* tpmCtx, int* pDevId);
|
||||
WOLFTPM_API int wolfTPM2_ClearCryptoDevCb(WOLFTPM2_DEV* dev, int devId);
|
||||
|
||||
#endif /* WOLF_CRYPTO_CB */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue