summaryrefslogtreecommitdiff
path: root/lib/anon_cred.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/anon_cred.c')
-rw-r--r--lib/anon_cred.c46
1 files changed, 45 insertions, 1 deletions
diff --git a/lib/anon_cred.c b/lib/anon_cred.c
index 7d4adb374e..d97b8c6650 100644
--- a/lib/anon_cred.c
+++ b/lib/anon_cred.c
@@ -40,7 +40,9 @@
void
gnutls_anon_free_server_credentials(gnutls_anon_server_credentials_t sc)
{
-
+ if (sc->deinit_dh_params) {
+ gnutls_dh_params_deinit(sc->dh_params);
+ }
gnutls_free(sc);
}
@@ -111,10 +113,52 @@ void
gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res,
gnutls_dh_params_t dh_params)
{
+ if (res->deinit_dh_params) {
+ res->deinit_dh_params = 0;
+ gnutls_dh_params_deinit(res->dh_params);
+ res->dh_params = NULL;
+ }
+
res->dh_params = dh_params;
}
/**
+ * gnutls_anon_set_server_known_dh_params:
+ * @res: is a gnutls_anon_server_credentials_t type
+ * @dh_params: The Diffie-Hellman parameters.
+ *
+ * This function will set the Diffie-Hellman parameters for an
+ * anonymous server to use. These parameters will be used in
+ * Anonymous Diffie-Hellman cipher suites and will be selected from
+ * the FFDHE set of RFC7919 according to the security level provided.
+ *
+ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
+ * negative error value.
+ *
+ * Since: 3.5.6
+ **/
+int
+gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res,
+ gnutls_sec_param_t sec_param)
+{
+ int ret;
+
+ if (res->deinit_dh_params) {
+ res->deinit_dh_params = 0;
+ gnutls_dh_params_deinit(res->dh_params);
+ res->dh_params = NULL;
+ }
+
+ ret = _gnutls_set_cred_dh_params(&res->dh_params, sec_param);
+ if (ret < 0)
+ return gnutls_assert_val(ret);
+
+ res->deinit_dh_params = 1;
+
+ return 0;
+}
+
+/**
* gnutls_anon_set_server_params_function:
* @res: is a gnutls_certificate_credentials_t type
* @func: is the function to be called