summaryrefslogtreecommitdiffstats
path: root/src/Net/ServerConnection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/ServerConnection.cpp')
-rw-r--r--src/Net/ServerConnection.cpp18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/Net/ServerConnection.cpp b/src/Net/ServerConnection.cpp
index c011f66..0c35991 100644
--- a/src/Net/ServerConnection.cpp
+++ b/src/Net/ServerConnection.cpp
@@ -57,26 +57,18 @@ void ServerConnection::connectionHeaderReceiveHandler(const void *data, unsigned
enterReceiveLoop();
}
-ServerConnection::ServerConnection(int sock0, const IPAddress &address, gnutls_dh_params_t dh_params)
+ServerConnection::ServerConnection(int sock0, const IPAddress &address, gnutls_dh_params_t dh_params, const std::string &x905CertFile, const std::string &x905KeyFile)
: daemon(false) {
sock = sock0;
- gnutls_anon_allocate_server_credentials(&anoncred);
-
-
- gnutls_anon_set_server_dh_params(anoncred, dh_params);
-
peer = new IPAddress(address);
- gnutls_init(&session, GNUTLS_SERVER);
+ gnutls_certificate_set_dh_params(x509_cred, dh_params);
+ gnutls_certificate_set_x509_key_file(x509_cred, x905CertFile.c_str(), x905KeyFile.c_str(), GNUTLS_X509_FMT_PEM);
+ gnutls_init(&session, GNUTLS_SERVER);
gnutls_set_default_priority(session);
-
- const int kx_list[] = {GNUTLS_KX_ANON_DH, 0};
- gnutls_kx_set_priority(session, kx_list);
-
- gnutls_credentials_set(session, GNUTLS_CRD_ANON, anoncred);
-
+ gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred);
gnutls_transport_set_ptr(session, reinterpret_cast<gnutls_transport_ptr_t>(sock));
handshake();