diff --git a/src/libcamera/pub_key.cpp b/src/libcamera/pub_key.cpp
index 9bb08fda34af..857c395373ea 100644
--- a/src/libcamera/pub_key.cpp
+++ b/src/libcamera/pub_key.cpp
@@ -8,7 +8,9 @@
 #include "libcamera/internal/pub_key.h"
 
 #if HAVE_GNUTLS
+extern "C" {
 #include <gnutls/abstract.h>
+}
 #endif
 
 /**
@@ -87,8 +89,13 @@ bool PubKey::verify([[maybe_unused]] Span<const uint8_t> data,
 		static_cast<unsigned int>(sig.size())
 	};
 
+#if GNUTLS_VERSION_MAJOR >= 3
 	int ret = gnutls_pubkey_verify_data2(pubkey_, GNUTLS_SIGN_RSA_SHA256, 0,
 					     &gnuTlsData, &gnuTlsSig);
+#else
+	int ret = gnutls_pubkey_verify_data(pubkey_, 0, &gnuTlsData, &gnuTlsSig);
+#endif
+
 	return ret >= 0;
 #else
 	return false;
