aboutsummaryrefslogtreecommitdiff
path: root/lib/gtls.c
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2009-02-12 20:48:40 +0000
committerDan Fandrich <dan@coneharvesters.com>2009-02-12 20:48:40 +0000
commit9a4c887c4a7279acc4cae66b11540746244e9cc3 (patch)
tree395649682d8b46f2a83c5f12d5fa772cb5517180 /lib/gtls.c
parentde41c6ef4344ff7135274a0481e11c3c1a38a0d5 (diff)
Added support for Digest and NTLM authentication using GnuTLS.
Diffstat (limited to 'lib/gtls.c')
-rw-r--r--lib/gtls.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/gtls.c b/lib/gtls.c
index 53a7400a8..b37edd45f 100644
--- a/lib/gtls.c
+++ b/lib/gtls.c
@@ -33,6 +33,7 @@
#ifdef USE_GNUTLS
#include <gnutls/gnutls.h>
#include <gnutls/x509.h>
+#include <gcrypt.h>
#include <string.h>
#include <stdlib.h>
@@ -777,4 +778,29 @@ size_t Curl_gtls_version(char *buffer, size_t size)
return snprintf(buffer, size, "GnuTLS/%s", gnutls_check_version(NULL));
}
+static void gtls_seed(struct SessionHandle *data)
+{
+ /* TODO: to a good job seeding the RNG */
+ /* This may involve the gcry_control function and these options: */
+ /* GCRYCTL_SET_RANDOM_SEED_FILE */
+ /* GCRYCTL_SET_RNDEGD_SOCKET */
+}
+
+int Curl_gtls_seed(struct SessionHandle *data)
+{
+ /* we have the "SSL is seeded" boolean static to prevent multiple
+ time-consuming seedings in vain */
+ static bool ssl_seeded = FALSE;
+
+ /* Quickly add a bit of entropy */
+ gcry_fast_random_poll();
+
+ if(!ssl_seeded || data->set.str[STRING_SSL_RANDOM_FILE] ||
+ data->set.str[STRING_SSL_EGDSOCKET]) {
+ gtls_seed(data);
+ ssl_seeded = TRUE;
+ }
+ return 0;
+}
+
#endif /* USE_GNUTLS */