]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
build: check if Esys_SetCryptoCallbacks is available
authorKarthik Das <kartheekdasari1998@gmail.com>
Wed, 30 Jul 2025 12:42:14 +0000 (12:42 +0000)
committerDaiki Ueno <ueno@gnu.org>
Thu, 31 Jul 2025 22:51:54 +0000 (07:51 +0900)
Signed-off-by: Karthik Das <kartheekdasari1998@gmail.com>
configure.ac
lib/Makefile.am
lib/dlwrap/tss2_esysfuncs.h
lib/tpm2/callbacks/esys_crypto_callbacks.h
lib/tpm2/tpm2_esys.c

index 5ad2c1a482223bc89e58aabdb19b0c20f328076d..92b7dc02ce27d44d9be0142aee72ed59d30b7092 100644 (file)
@@ -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.]),
index 8e82963476b40996f0facabc23b9708b5ea3556e..33ec383bab7153b7c56e1baf1886f40120b85aef 100644 (file)
@@ -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
index 8d68d96b775a1a7df0b7bea7755ccf211c2f1b57..658e1cfd574c4647ccd412883a361f67499af27e 100644 (file)
@@ -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
index 1507cfa2380000b6eaeb52c4c31e437889881d51..b7e0f88d6cfe53a268d8b42f6f7aec363e0d5881 100644 (file)
@@ -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 */
index 86fa4a89bf0608da8212c489ccd71d25ae178bda..f6e5db2e75b7804830a7ec71687f5ed6bf66e688 100644 (file)
@@ -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) {