bfadca71404613fb34204844be5b5faa8ee40f1a
[umurmur.git] / src / ssli_gnutls.c
1 #include "ssl.h"
2 #include "conf.h"
3
4 static gnutls_dh_params_t dhParameters;
5 static gnutls_certificate_credentials certificate;
6
7 void initiliazeCertificate()
8   {
9   char* certificatePath = (char*) getStrConf(CERTIFICATE);
10
11   if(!certificatePath) {
12     Log_fatal("No certificate file specified.");
13   }
14
15   char* keyPath = (char*) getStrConf(KEY);
16
17   if(!keyPath) {
18     Log_fatal("No key file specified");
19   }
20
21   gnutls_certificate_allocate_credentials(&certificate);
22
23   int error = gnutls_certificate_set_x509_key_file(certificate, certificatePath, keyPath, GNUTLS_X509_FMT_PEM);
24
25   if( error != GNUTLS_E_SUCCESS ) {
26     Log_fatal("Could not open key (%s) or certificate (%s).", keyPath, certificatePath);
27   }
28
29   }
30
31 void SSLi_init()
32   {
33   unsigned const bitCount = gnutls_sec_param_to_pk_bits(GNUTLS_PK_DH, GNUTLS_SEC_PARAM_MEDIUM);
34
35   gnutls_dh_params_init(&dhParameters);
36   gnutls_dh_params_generate2(dhParameters, bitCount);
37
38 #if GNUTLS_VERSION_NUMBER < 0x030300
39   gnutls_global_init();
40 #endif
41
42   initializeCertificate();
43
44   Log_info("Sucessfully initialized GNUTLS version %s", gnutls_check_version(NULL));
45
46   }
47
48 void SSLi_deinit()
49   {
50   gnutls_certificate_free_credentials(certificate);
51   gnutls_global_deinit();
52   }