]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
srp: provide stubs of public functions even if SRP is disabled
authorDaiki Ueno <ueno@gnu.org>
Wed, 14 Dec 2022 15:45:04 +0000 (00:45 +0900)
committerDaiki Ueno <ueno@gnu.org>
Thu, 15 Dec 2022 21:38:31 +0000 (06:38 +0900)
This adds stub definitions of public SRP functions even if SRP is
disabled with --disable-srp-authentication, to preserve the ABI.

Signed-off-by: Daiki Ueno <ueno@gnu.org>
lib/algorithms/ciphersuites.c
lib/auth/srp_kx.c
lib/auth/srp_sb64.c
lib/gnutlsxx.cpp
lib/session_pack.c
lib/srp.c
src/cli.c
src/common.c

index c7ce24505634612305ce89fb06f251de3cb422d0..3676c09de57ce6ca46b460d93c6d152a39bff011 100644 (file)
 #define GNUTLS_RSA_PSK_AES_128_CBC_SHA1 { 0x00, 0x94 }
 #define GNUTLS_RSA_PSK_AES_256_CBC_SHA1 { 0x00, 0x95 }
 
+#ifdef ENABLE_SRP
 /* SRP (rfc5054)
  */
 #define GNUTLS_SRP_SHA_3DES_EDE_CBC_SHA1 { 0xC0, 0x1A }
 #define GNUTLS_SRP_SHA_AES_256_CBC_SHA1 { 0xC0, 0x20 }
 #define GNUTLS_SRP_SHA_RSA_AES_256_CBC_SHA1 { 0xC0, 0x21 }
 #define GNUTLS_SRP_SHA_DSS_AES_256_CBC_SHA1 { 0xC0, 0x22 }
+#endif
 
 /* RSA
  */
index ece1853c30ad3a4916d2843f8a13df7276386a38..739b12ea37a831b17e32464c1476ace32cc1874d 100644 (file)
@@ -412,7 +412,7 @@ _gnutls_proc_srp_client_kx(gnutls_session_t session, uint8_t * data,
        return 0;
 }
 
-
+#endif                         /* ENABLE_SRP */
 
 /* Static parameters according to draft-ietf-tls-srp-07
  * Note that if more parameters are added check_g_n()
@@ -811,6 +811,8 @@ const gnutls_datum_t gnutls_srp_8192_group_generator = {
        (void *) &srp8192_generator, sizeof(srp8192_generator)
 };
 
+#ifdef ENABLE_SRP
+
 /* Check if G and N are parameters from the SRP draft.
  */
 static int
index 16945e9a0a7f88d1ceb2feb3e1e94e74df532f7e..3ba01eba9e386bb8b6390c1f5d435eacb3ac2ea0 100644 (file)
@@ -24,6 +24,7 @@
 #include "errors.h"
 #include <datum.h>
 #include <auth/srp_passwd.h>
+#include "attribute.h"
 
 #ifdef ENABLE_SRP
 
@@ -450,4 +451,36 @@ gnutls_srp_base64_decode2(const gnutls_datum_t * b64_data,
        return 0;
 }
 
+#else
+
+int
+gnutls_srp_base64_encode(const gnutls_datum_t *data MAYBE_UNUSED,
+                        char *result MAYBE_UNUSED,
+                        size_t *result_size MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+int
+gnutls_srp_base64_encode2(const gnutls_datum_t *data MAYBE_UNUSED,
+                         gnutls_datum_t *result MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+int
+gnutls_srp_base64_decode(const gnutls_datum_t *b64_data MAYBE_UNUSED,
+                        char *result MAYBE_UNUSED,
+                        size_t *result_size MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+int
+gnutls_srp_base64_decode2(const gnutls_datum_t *b64_data MAYBE_UNUSED,
+                         gnutls_datum_t *result MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
 #endif                         /* ENABLE_SRP */
index f87490d3715579b4a39a360ac631dba4ac3083cc..cf6e4daa828f054cf3f7ba130078bf9e4829a6f6 100644 (file)
@@ -423,11 +423,7 @@ namespace gnutls
 
   const char *server_session::get_srp_username () const
   {
-#ifdef ENABLE_SRP
     return gnutls_srp_server_get_username (s);
-#else
-    return NULL;
-#endif
   }
 
   const char *server_session::get_psk_username () const
@@ -740,8 +736,6 @@ namespace gnutls
 
 // SRP
 
-#ifdef ENABLE_SRP
-
   srp_server_credentials::srp_server_credentials ():credentials
     (GNUTLS_CRD_SRP)
   {
@@ -792,8 +786,6 @@ namespace gnutls
     gnutls_srp_set_client_credentials_function (cred, func);
   }
 
-#endif /* ENABLE_SRP */
-
 // PSK
 
 psk_server_credentials::psk_server_credentials ():credentials
index fa9a0fcc62de2a9040bcb40bff0b2ccc3a287cd0..14d3677f9eafa299e3b6f6a6a8f146640919158b 100644 (file)
@@ -51,10 +51,12 @@ static int pack_certificate_auth_info(gnutls_session_t,
 static int unpack_certificate_auth_info(gnutls_session_t,
                                        gnutls_buffer_st * packed_session);
 
+#ifdef ENABLE_SRP
 static int unpack_srp_auth_info(gnutls_session_t session,
                                gnutls_buffer_st * packed_session);
 static int pack_srp_auth_info(gnutls_session_t session,
                              gnutls_buffer_st * packed_session);
+#endif
 
 static int unpack_psk_auth_info(gnutls_session_t session,
                                gnutls_buffer_st * packed_session);
index 78bcbfd8111679cd5874ee43820ecc4b90787a56..17dc4edcf6c1b37e506d7416a8c6a8609cbef978 100644 (file)
--- a/lib/srp.c
+++ b/lib/srp.c
@@ -37,7 +37,7 @@
 #include <random.h>
 
 #include "debug.h"
-
+#include "attribute.h"
 
 /* Here functions for SRP (like g^x mod n) are defined 
  */
@@ -849,4 +849,85 @@ gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t cred,
        cred->fake_salt_length = (salt_length < mac_len ? salt_length : mac_len);
 }
 
+#else
+
+void gnutls_srp_free_client_credentials(gnutls_srp_client_credentials_t sc MAYBE_UNUSED)
+{
+}
+
+int
+gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t *sc MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+int
+gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res MAYBE_UNUSED,
+                                 const char *username MAYBE_UNUSED,
+                                 const char *password MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+void
+gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc MAYBE_UNUSED)
+{
+}
+
+int
+gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t *sc MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+int
+gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t res MAYBE_UNUSED,
+                                      const char *password_file MAYBE_UNUSED,
+                                      const char *password_conf_file MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+void
+gnutls_srp_set_server_credentials_function(gnutls_srp_server_credentials_t cred MAYBE_UNUSED,
+                                          gnutls_srp_server_credentials_function *func MAYBE_UNUSED)
+{
+}
+
+void
+gnutls_srp_set_client_credentials_function(gnutls_srp_client_credentials_t cred MAYBE_UNUSED,
+                                          gnutls_srp_client_credentials_function *func MAYBE_UNUSED)
+{
+}
+
+const char *
+gnutls_srp_server_get_username(gnutls_session_t session MAYBE_UNUSED)
+{
+       return NULL;
+}
+
+int
+gnutls_srp_verifier(const char *username MAYBE_UNUSED,
+                   const char *password MAYBE_UNUSED,
+                   const gnutls_datum_t *salt MAYBE_UNUSED,
+                   const gnutls_datum_t *generator MAYBE_UNUSED,
+                   const gnutls_datum_t *prime MAYBE_UNUSED,
+                   gnutls_datum_t *res MAYBE_UNUSED)
+{
+       return GNUTLS_E_UNIMPLEMENTED_FEATURE;
+}
+
+void
+gnutls_srp_set_prime_bits(gnutls_session_t session MAYBE_UNUSED,
+                         unsigned int bits MAYBE_UNUSED)
+{
+}
+
+void
+gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t cred MAYBE_UNUSED,
+                                    const gnutls_datum_t *seed MAYBE_UNUSED,
+                                    unsigned int salt_length MAYBE_UNUSED)
+{
+}
+
 #endif                         /* ENABLE_SRP */
index 7c031f1ec3456e50d8edc55086a94d43886eca29..1af329fadc0b2edb1f917f527f7808bbc15150f3 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -1876,6 +1876,7 @@ int do_handshake(socket_st * socket)
        return ret;
 }
 
+#ifdef ENABLE_SRP
 static int
 srp_username_callback(gnutls_session_t session,
                      char **username, char **password)
@@ -1889,6 +1890,7 @@ srp_username_callback(gnutls_session_t session,
 
        return 0;
 }
+#endif
 
 static int
 psk_callback(gnutls_session_t session, char **username,
index 588a1851b16e0a0fab4a68d9c8f4759954be1c8d..b0952a5fafe570f4547d331f6032ec110dcffac2 100644 (file)
@@ -584,6 +584,10 @@ int print_info(gnutls_session_t session, int verbose, int flags)
                else if (kx == GNUTLS_KX_ECDHE_RSA
                         || kx == GNUTLS_KX_ECDHE_ECDSA)
                        print_ecdh_info(session, "Ephemeral ", verbose);
+               break;
+       default:
+               log_msg(stdout, "- Unknown credential type %d\n", cred);
+               break;
        }