#define DH_BITS 1024
/* These are global */
-gnutls_certificate_credentials x509_cred;
+gnutls_certificate_credentials cert_cred;
static void wrap_db_init(void);
static void wrap_db_deinit(void);
*/
gnutls_set_default_export_priority(session);
- gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, x509_cred);
+ gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, cert_cred);
/* request client certificate if any.
*/
*/
gnutls_global_init();
- gnutls_certificate_allocate_credentials(&x509_cred);
+ gnutls_certificate_allocate_credentials(&cert_cred);
- gnutls_certificate_set_x509_trust_file(x509_cred, CAFILE,
+ gnutls_certificate_set_x509_trust_file(cert_cred, CAFILE,
GNUTLS_X509_FMT_PEM);
- gnutls_certificate_set_x509_crl_file(x509_cred, CRLFILE,
+ gnutls_certificate_set_x509_crl_file(cert_cred, CRLFILE,
GNUTLS_X509_FMT_PEM);
- gnutls_certificate_set_x509_key_file(x509_cred, CERTFILE, KEYFILE,
+ gnutls_certificate_set_x509_key_file(cert_cred, CERTFILE, KEYFILE,
GNUTLS_X509_FMT_PEM);
generate_dh_params();
wrap_db_init();
}
- gnutls_certificate_set_dh_params(x509_cred, dh_params);
- gnutls_certificate_set_rsa_export_params(x509_cred, rsa_params);
+ gnutls_certificate_set_dh_params(cert_cred, dh_params);
+ gnutls_certificate_set_rsa_export_params(cert_cred, rsa_params);
/* Socket operations
*/
}
close(listen_sd);
- gnutls_certificate_free_credentials(x509_cred);
+ gnutls_certificate_free_credentials(cert_cred);
gnutls_global_deinit();
#define SRP_PASSWD "tpasswd"
#define SRP_PASSWD_CONF "tpasswd.conf"
+#define KEYFILE "key.pem"
+#define CERTFILE "cert.pem"
+#define CAFILE "ca.pem"
+
/* This is a sample TLS-SRP echo server.
*/
/* These are global */
gnutls_srp_server_credentials srp_cred;
+gnutls_certificate_credentials cert_cred;
gnutls_session initialize_tls_session()
{
gnutls_session session;
- const int kx_priority[] = { GNUTLS_KX_SRP, 0 };
+ const int kx_priority[] = { GNUTLS_KX_SRP, GNUTLS_KX_SRP_DSS,
+ GNUTLS_KX_SRP_RSA, 0 };
gnutls_init(&session, GNUTLS_SERVER);
gnutls_kx_set_priority(session, kx_priority);
gnutls_credentials_set(session, GNUTLS_CRD_SRP, srp_cred);
+ /* for the certificate authenticated ciphersuites.
+ */
+ gnutls_credentials_set(session, GNUTLS_CRD_CERTIFICATE, cert_cred);
/* request client certificate if any.
*/
gnutls_srp_allocate_server_credentials(&srp_cred);
gnutls_srp_set_server_credentials_file(srp_cred, SRP_PASSWD, SRP_PASSWD_CONF);
+ gnutls_certificate_allocate_credentials(&cert_cred);
+ gnutls_certificate_set_x509_trust_file(cert_cred, CAFILE, GNUTLS_X509_FMT_PEM);
+ gnutls_certificate_set_x509_key_file(cert_cred, CERTFILE, KEYFILE,
+ GNUTLS_X509_FMT_PEM);
/* TCP socket operations
*/
close(listen_sd);
gnutls_srp_free_server_credentials(srp_cred);
+ gnutls_certificate_free_credentials(cert_cred);
gnutls_global_deinit();
Even if \gnutls{} is a typical library software, it operates over several
security and cryptographic protocols, which require the programmer
to make careful and correct usage of them. Otherwise he risks to offer
-just a false sense of security. Also note that a program should not be
-considered secure just because it uses \gnutls{} or any other cryptographic library.
-There are several ways to compromise a program or a communication line
+just a false sense of security. Security is a very general term for computer
+software and cannot be restricted to a single cryptographic library.
+A program should not be considered secure just because it uses \gnutls{},
+there are several ways to compromise a program or a communication line
and \gnutls{} only helps with some of them.
\par
This document tries to be self contained, although basic