1
0
mirror of https://github.com/wolfSSL/wolfssl.git synced 2026-10-24 04:09:07 +03:00

bsdkm driver: wolfkdriv_aes_ctx_clear cleanup.

This commit is contained in:
jordan
2026-08-09 22:53:40 -05:00
parent ca292d8ac6
commit 41c19f6aa0

View File

@@ -383,16 +383,19 @@ static void km_AesFree(Aes * aes) {
#endif
}
static void wolfkdriv_aes_ctx_clear(km_aes_ctx * ctx)
/* clean up allocated km_aes_ctx struct.
* - cbc allocates both encrypt and decrypt, and frees both.
* - gcm uses only aes_encrypt.
* */
static void wolfkdriv_aes_ctx_clear(km_aes_ctx * ctx, int free_decrypt)
{
if (ctx != NULL) {
km_AesFree(&ctx->aes_encrypt);
km_AesFree(&ctx->aes_decrypt);
}
#ifdef WOLFKM_DEBUG_AES
printf("info: exiting km_AesExitCommon\n");
#endif /* WOLFKM_DEBUG_AES */
if (free_decrypt) {
km_AesFree(&ctx->aes_decrypt);
}
}
}
static void wolfkdriv_identify(driver_t * driver, device_t parent)
@@ -671,7 +674,16 @@ static int wolfkdriv_newsession_aes(device_t dev,
newsession_cipher_out:
if (error != 0) {
wolfkdriv_aes_ctx_clear(&session->aes_ctx);
switch (csp->csp_cipher_alg) {
case CRYPTO_AES_NIST_GCM_16:
wolfkdriv_aes_ctx_clear(&session->aes_ctx, 0);
break;
case CRYPTO_AES_CBC:
wolfkdriv_aes_ctx_clear(&session->aes_ctx, 1);
default:
break;
}
return (EINVAL);
}
@@ -713,13 +725,27 @@ static void
wolfkdriv_freesession(device_t dev, crypto_session_t cses)
{
wolfkdriv_session_t * session = NULL;
const struct crypto_session_params * csp = NULL;
(void)dev;
/* get the wolfkdriv_session_t context */
session = crypto_get_driver_session(cses);
csp = crypto_get_params(cses);
/* clean it up */
wolfkdriv_aes_ctx_clear(&session->aes_ctx);
switch (csp->csp_mode) {
case CSP_MODE_CIPHER:
wolfkdriv_aes_ctx_clear(&session->aes_ctx, 1);
break;
case CSP_MODE_DIGEST:
case CSP_MODE_ETA:
break;
case CSP_MODE_AEAD:
wolfkdriv_aes_ctx_clear(&session->aes_ctx, 0);
break;
default:
__assert_unreachable();
}
#if defined(WOLFSSL_BSDKM_VERBOSE_DEBUG)
device_printf(dev, "info: exiting freesession\n");