summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2002-12-01 21:47:03 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2002-12-01 21:47:03 +0000
commit85088089b0982015ee1feccecb5fafdf8f717ebc (patch)
tree69de94d4d8e55f2eab89527aca047c0fe17da74c /lib
parent648adb7f12bea73c169088d00b1f3261e1ebff80 (diff)
downloadgnutls-85088089b0982015ee1feccecb5fafdf8f717ebc.tar.gz
Added the function gnutls_srp_server_set_credentials_function()
to allow retrieving SRP parameters from an external backend - other than password files.
Diffstat (limited to 'lib')
-rw-r--r--lib/gnutls_dh.h2
-rw-r--r--lib/gnutls_dh_primes.c32
2 files changed, 17 insertions, 17 deletions
diff --git a/lib/gnutls_dh.h b/lib/gnutls_dh.h
index aff0144ace..5a455df188 100644
--- a/lib/gnutls_dh.h
+++ b/lib/gnutls_dh.h
@@ -24,6 +24,6 @@ MPI gnutls_calc_dh_key( MPI f, MPI x, MPI prime );
int _gnutls_dh_generate_prime(MPI *ret_g, MPI* ret_n, int bits);
void _gnutls_dh_clear_mpis(void);
int _gnutls_dh_calc_mpis(void);
-MPI _gnutls_get_rnd_srp_params( MPI * ret_p, int bits);
+int _gnutls_get_rnd_srp_params(gnutls_datum *g, gnutls_datum* p, int bits);
extern _gnutls_dh_params _gnutls_dh_default_params;
diff --git a/lib/gnutls_dh_primes.c b/lib/gnutls_dh_primes.c
index e89a224998..9eda417692 100644
--- a/lib/gnutls_dh_primes.c
+++ b/lib/gnutls_dh_primes.c
@@ -420,42 +420,42 @@ GNUTLS_MPI gnutls_get_dh_params(gnutls_dh_params dh_primes,
/* returns g and p, depends on the requested bits.
* We only support limited key sizes.
*/
-GNUTLS_MPI _gnutls_get_rnd_srp_params(GNUTLS_MPI * ret_p, int bits)
+int _gnutls_get_rnd_srp_params(gnutls_datum *g, gnutls_datum* p, int bits)
{
- GNUTLS_MPI g = NULL, prime = NULL;
int i;
if (_gnutls_dh_default_params == NULL) {
gnutls_assert();
- return NULL;
+ return GNUTLS_E_INTERNAL_ERROR;
}
+ g->data = p->data = NULL;
+ g->size = p->size = 0;
+
bits = normalize_bits(bits);
i = 0;
do {
if (_gnutls_dh_default_params[i].bits == bits) {
- prime =
- _gnutls_mpi_copy(_gnutls_dh_default_params[i].
- _prime);
- g = _gnutls_mpi_copy(_gnutls_dh_default_params[i].
- _generator);
+ gnutls_set_datum( p, _gnutls_dh_default_params[i].prime.data,
+ _gnutls_dh_default_params[i].prime.size);
+
+ gnutls_set_datum( g, _gnutls_dh_default_params[i].generator.data,
+ _gnutls_dh_default_params[i].generator.size);
+
break;
}
i++;
} while (_gnutls_dh_default_params[i].bits != 0);
- if (prime == NULL || g == NULL) { /* if not prime was found */
+ if (g->data == NULL || p->data == NULL) {
gnutls_assert();
- _gnutls_mpi_release(&g);
- _gnutls_mpi_release(&prime);
- *ret_p = NULL;
- return NULL;
+ gnutls_free_datum(&g);
+ gnutls_free_datum(&p);
+ return GNUTLS_E_INTERNAL_ERROR;
}
- if (ret_p)
- *ret_p = prime;
- return g;
+ return 0;
}
/* These should be added in gcrypt.h */