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>
|
#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
|
* Generating the Client Certificate
|
||||||
*
|
*
|
||||||
|
@ -232,10 +238,19 @@ int TPM2_TLS_Client(void* userCtx)
|
||||||
#else
|
#else
|
||||||
wolfSSL_CTX_set_verify(ctx, WOLFSSL_VERIFY_PEER, myVerify);
|
wolfSSL_CTX_set_verify(ctx, WOLFSSL_VERIFY_PEER, myVerify);
|
||||||
#ifdef NO_FILESYSTEM
|
#ifdef NO_FILESYSTEM
|
||||||
/* example loading from buffer */
|
/* Load CA Certificates from Buffer */
|
||||||
#if 0
|
#if !defined(NO_RSA) && !defined(TLS_USE_ECC)
|
||||||
if (wolfSSL_CTX_load_verify(ctx, ca.buffer, (long)ca.size,
|
if (wolfSSL_CTX_load_verify_buffer(ctx,
|
||||||
WOLFSSL_FILETYPE_ASN1) != WOLFSSL_SUCCESS) }
|
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;
|
goto exit;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -272,8 +272,16 @@ int wolfTPM2_Cleanup(WOLFTPM2_DEV* dev)
|
||||||
int rc;
|
int rc;
|
||||||
Shutdown_In shutdownIn;
|
Shutdown_In shutdownIn;
|
||||||
|
|
||||||
if (dev == NULL)
|
if (dev == NULL) {
|
||||||
return BAD_FUNC_ARG;
|
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;
|
shutdownIn.shutdownType = TPM_SU_CLEAR;
|
||||||
rc = TPM2_Shutdown(&shutdownIn);
|
rc = TPM2_Shutdown(&shutdownIn);
|
||||||
|
@ -3353,6 +3361,28 @@ int wolfTPM2_SetCryptoDevCb(WOLFTPM2_DEV* dev, CryptoDevCallbackFunc cb,
|
||||||
return rc;
|
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 -- */
|
/* --- 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_CryptoDevCb(int devId, wc_CryptoInfo* info, void* ctx);
|
||||||
WOLFTPM_API int wolfTPM2_SetCryptoDevCb(WOLFTPM2_DEV* dev, CryptoDevCallbackFunc cb,
|
WOLFTPM_API int wolfTPM2_SetCryptoDevCb(WOLFTPM2_DEV* dev, CryptoDevCallbackFunc cb,
|
||||||
TpmCryptoDevCtx* tpmCtx, int* pDevId);
|
TpmCryptoDevCtx* tpmCtx, int* pDevId);
|
||||||
|
WOLFTPM_API int wolfTPM2_ClearCryptoDevCb(WOLFTPM2_DEV* dev, int devId);
|
||||||
|
|
||||||
#endif /* WOLF_CRYPTO_CB */
|
#endif /* WOLF_CRYPTO_CB */
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue