128
131
gnutls_certificate_set_x509_trust_mem (xcred, &ca, GNUTLS_X509_FMT_PEM);
129
132
gnutls_certificate_set_x509_key_mem (xcred, &cert, &key,
130
GNUTLS_X509_FMT_PEM);
133
GNUTLS_X509_FMT_PEM);
132
135
/* Initialize TLS session
165
168
success ("client: TLS version is: %s\n",
166
gnutls_protocol_get_name (gnutls_protocol_get_version
169
gnutls_protocol_get_name (gnutls_protocol_get_version
169
172
/* see the Getting peer's information example */
192
195
if (ret == GNUTLS_E_REHANDSHAKE)
195
success ("client: doing handshake!\n");
198
success ("client: doing handshake!\n");
196
199
ret = gnutls_handshake (session);
200
success ("client: handshake complete, reading again.\n");
201
ret = gnutls_record_recv (session, buffer, MAX_BUF);
203
success ("client: handshake complete, reading again.\n");
204
ret = gnutls_record_recv (session, buffer, MAX_BUF);
205
fail ("client: handshake failed.\n");
208
fail ("client: handshake failed.\n");
212
success ("client: Peer has closed the TLS connection\n");
215
success ("client: Peer has closed the TLS connection\n");
215
218
else if (ret < 0)
223
226
printf ("- Received %d bytes: ", ret);
224
227
for (ii = 0; ii < ret; ii++)
226
fputc (buffer[ii], stdout);
229
fputc (buffer[ii], stdout);
228
231
fputs ("\n", stdout);
359
362
memset (&sa_serv, '\0', sizeof (sa_serv));
360
363
sa_serv.sin_family = AF_INET;
361
364
sa_serv.sin_addr.s_addr = INADDR_ANY;
362
sa_serv.sin_port = htons (PORT); /* Server Port number */
365
sa_serv.sin_port = htons (PORT); /* Server Port number */
364
367
setsockopt (listen_sd, SOL_SOCKET, SO_REUSEADDR, (void *) &optval,
367
370
err = bind (listen_sd, (SA *) & sa_serv, sizeof (sa_serv));
399
402
gnutls_certificate_set_x509_trust_mem (x509_cred, &ca, GNUTLS_X509_FMT_PEM);
401
404
gnutls_certificate_set_x509_key_mem (x509_cred, &server_cert, &server_key,
402
GNUTLS_X509_FMT_PEM);
405
GNUTLS_X509_FMT_PEM);
405
408
success ("Launched, generating DH parameters...\n");
418
421
success ("server: connection from %s, port %d\n",
419
inet_ntop (AF_INET, &sa_cli.sin_addr, topbuf,
420
sizeof (topbuf)), ntohs (sa_cli.sin_port));
422
inet_ntop (AF_INET, &sa_cli.sin_addr, topbuf,
423
sizeof (topbuf)), ntohs (sa_cli.sin_port));
422
425
gnutls_transport_set_ptr (session, (gnutls_transport_ptr_t) sd);
423
426
ret = gnutls_handshake (session);
433
436
success ("server: Handshake was completed\n");
434
437
success ("server: TLS version is: %s\n",
435
gnutls_protocol_get_name (gnutls_protocol_get_version
438
gnutls_protocol_get_name (gnutls_protocol_get_version
439
442
/* see the Getting peer's information example */
447
450
ret = gnutls_record_recv (session, buffer, MAX_BUF);
452
success ("server: Peer has closed the GnuTLS connection\n");
455
success ("server: Peer has closed the GnuTLS connection\n");
455
458
else if (ret < 0)
457
fail ("server: Received corrupted data(%d). Closing...\n", ret);
460
fail ("server: Received corrupted data(%d). Closing...\n", ret);
460
463
else if (ret > 0)
462
gnutls_certificate_server_set_request (session,
463
GNUTLS_CERT_REQUEST);
466
success ("server: got data, forcing rehandshake.\n");
468
ret = gnutls_rehandshake (session);
471
fail ("server: rehandshake failed\n");
476
ret = gnutls_handshake (session);
479
fail ("server: (re)handshake failed\n");
485
success ("server: rehandshake complete.\n");
487
/* echo data back to the client
489
gnutls_record_send (session, buffer, strlen (buffer));
465
gnutls_certificate_server_set_request (session,
466
GNUTLS_CERT_REQUEST);
469
success ("server: got data, forcing rehandshake.\n");
471
ret = gnutls_rehandshake (session);
474
fail ("server: rehandshake failed\n");
479
ret = gnutls_handshake (session);
482
fail ("server: (re)handshake failed\n");
488
success ("server: rehandshake complete.\n");
490
/* echo data back to the client
492
gnutls_record_send (session, buffer, strlen (buffer));
492
495
/* do not wait for the peer to close the connection.