From: Karthik Das Date: Wed, 30 Jul 2025 12:42:14 +0000 (+0000) Subject: build: check if Esys_SetCryptoCallbacks is available X-Git-Tag: 3.8.11~23^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=86d948a5d82f5ccd87393d1e64e5daba92b166ae;p=thirdparty%2Fgnutls.git build: check if Esys_SetCryptoCallbacks is available Signed-off-by: Karthik Das --- diff --git a/configure.ac b/configure.ac index 5ad2c1a482..92b7dc02ce 100644 --- a/configure.ac +++ b/configure.ac @@ -1089,6 +1089,19 @@ AS_IF([test "$with_tpm2" = dlopen], [ CFLAGS="$save_CFLAGS" ]) +AS_IF([test -n "$tss2lib"], [ + # Check for Esys_SetCryptoCallbacks availability + save_LIBS=$LIBS + save_CFLAGS=$CFLAGS + LIBS="$LIBS $TSS2_ESYS_LIBS" + CFLAGS="$CFLAGS $TSS2_ESYS_CFLAGS" + AC_CHECK_FUNCS([Esys_SetCryptoCallbacks]) + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +]) + +AM_CONDITIONAL(NEED_ESYS_CRYPTO_CALLBACKS, test "$ac_cv_func_Esys_SetCryptoCallbacks" = "yes") + AC_ARG_WITH(tpm, AS_HELP_STRING([--without-tpm], [Disable TPM (trousers) support.]), diff --git a/lib/Makefile.am b/lib/Makefile.am index 8e82963476..33ec383bab 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -137,11 +137,14 @@ COBJECTS += vko.c endif if ENABLE_TPM2 -COBJECTS += tpm2/tpm2.c tpm2/tpm2.h tpm2/tpm2_esys.c tpm2/callbacks/esys_crypto_callbacks.h tpm2/callbacks/esys_crypto_callbacks.c \ +COBJECTS += tpm2/tpm2.c tpm2/tpm2.h tpm2/tpm2_esys.c +if NEED_ESYS_CRYPTO_CALLBACKS +COBJECTS += tpm2/callbacks/esys_crypto_callbacks.h tpm2/callbacks/esys_crypto_callbacks.c \ tpm2/callbacks/aes/aes_callbacks.h tpm2/callbacks/aes/aes_callbacks.c tpm2/callbacks/ecdh/ecdh_callbacks.h \ tpm2/callbacks/ecdh/ecdh_callbacks.c tpm2/callbacks/random/random_callbacks.h tpm2/callbacks/random/random_callbacks.c \ tpm2/callbacks/hmac/hmac_callbacks.h tpm2/callbacks/hmac/hmac_callbacks.c tpm2/callbacks/hash/hash_callbacks.h \ tpm2/callbacks/hash/hash_callbacks.c tpm2/callbacks/rsa/rsa_callbacks.h tpm2/callbacks/rsa/rsa_callbacks.c +endif COBJECTS += dlwrap/tss2_esys.c dlwrap/tss2_esysfuncs.h dlwrap/tss2_esys.h COBJECTS += dlwrap/tss2_mu.c dlwrap/tss2_mufuncs.h dlwrap/tss2_mu.h COBJECTS += dlwrap/tss2_tctildr.c dlwrap/tss2_tctildrfuncs.h dlwrap/tss2_tctildr.h diff --git a/lib/dlwrap/tss2_esysfuncs.h b/lib/dlwrap/tss2_esysfuncs.h index 8d68d96b77..658e1cfd57 100644 --- a/lib/dlwrap/tss2_esysfuncs.h +++ b/lib/dlwrap/tss2_esysfuncs.h @@ -16,4 +16,6 @@ FUNC(TSS2_RC, Esys_CreatePrimary, (ESYS_CONTEXT *esysContext, ESYS_TR primaryHan FUNC(TSS2_RC, Esys_FlushContext, (ESYS_CONTEXT *esysContext, ESYS_TR flushHandle), (esysContext, flushHandle)) FUNC(TSS2_RC, Esys_GetCapability, (ESYS_CONTEXT *esysContext, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPM2_CAP capability, UINT32 property, UINT32 propertyCount, TPMI_YES_NO *moreData, TPMS_CAPABILITY_DATA **capabilityData), (esysContext, shandle1, shandle2, shandle3, capability, property, propertyCount, moreData, capabilityData)) VOID_FUNC(void, Esys_Free, (void *__ptr), (__ptr)) +#ifdef HAVE_ESYS_SETCRYPTOCALLBACKS FUNC(TSS2_RC, Esys_SetCryptoCallbacks, (ESYS_CONTEXT *esysContext, ESYS_CRYPTO_CALLBACKS *callbacks), (esysContext, callbacks)) +#endif diff --git a/lib/tpm2/callbacks/esys_crypto_callbacks.h b/lib/tpm2/callbacks/esys_crypto_callbacks.h index 1507cfa238..b7e0f88d6c 100644 --- a/lib/tpm2/callbacks/esys_crypto_callbacks.h +++ b/lib/tpm2/callbacks/esys_crypto_callbacks.h @@ -26,6 +26,8 @@ typedef struct ESYS_CONTEXT ESYS_CONTEXT; +#ifdef HAVE_ESYS_SETCRYPTOCALLBACKS int _gnutls_setup_tss2_callbacks(ESYS_CONTEXT *ctx); +#endif #endif /* GNUTLS_LIB_TPM2_ESYS_CALLBACKS_H */ diff --git a/lib/tpm2/tpm2_esys.c b/lib/tpm2/tpm2_esys.c index 86fa4a89bf..f6e5db2e75 100644 --- a/lib/tpm2/tpm2_esys.c +++ b/lib/tpm2/tpm2_esys.c @@ -388,6 +388,7 @@ static int init_tpm2_key(ESYS_CONTEXT **ctx, ESYS_TR *key_handle, goto error; } +#ifdef HAVE_ESYS_SETCRYPTOCALLBACKS rc = _gnutls_setup_tss2_callbacks(*ctx); if (rc) { gnutls_assert(); @@ -396,6 +397,7 @@ static int init_tpm2_key(ESYS_CONTEXT **ctx, ESYS_TR *key_handle, rc); goto error; } +#endif rc = GNUTLS_TSS2_ESYS_FUNC(Esys_Startup)(*ctx, TPM2_SU_CLEAR); if (rc == TPM2_RC_INITIALIZE) {