diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-10-10 15:17:58 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2002-10-10 15:17:58 +0000 |
commit | 8ce3ba0d27d9f9e706d21536a3a4289551a1661d (patch) | |
tree | 5304c3f7417f1e732800d7494ff2079de2ec926e | |
parent | 13db79aab929fe6488add3b40208233f34825437 (diff) | |
download | gnutls-8ce3ba0d27d9f9e706d21536a3a4289551a1661d.tar.gz |
Separated alert checking from the example programs, to make them cleaner. Added an example which demonstrates the alert checking.
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | doc/tex/Makefile.am | 2 | ||||
-rw-r--r-- | doc/tex/ex-alert.tex | 29 | ||||
-rw-r--r-- | doc/tex/ex1.tex | 28 | ||||
-rw-r--r-- | doc/tex/ex2.tex | 26 | ||||
-rw-r--r-- | doc/tex/ex4.tex | 28 | ||||
-rw-r--r-- | doc/tex/examples.tex | 5 | ||||
-rw-r--r-- | doc/tex/handshake.tex | 4 | ||||
-rw-r--r-- | doc/tex/serv-export.tex | 28 | ||||
-rw-r--r-- | doc/tex/serv-srp.tex | 28 | ||||
-rw-r--r-- | doc/tex/serv1.tex | 28 | ||||
-rw-r--r-- | src/serv.c | 3 |
13 files changed, 98 insertions, 116 deletions
@@ -1,3 +1,6 @@ +Version 0.5.10 +- Updated documentation. + Version 0.5.9 (10/10/2002) - Corrected some code which worked fine in gcc 3.2, but not with any other compiler. diff --git a/configure.in b/configure.in index 3843c71176..3078ee1223 100644 --- a/configure.in +++ b/configure.in @@ -12,7 +12,7 @@ AC_DEFINE_UNQUOTED(T_OS, "$target_os", [OS name]) dnl Gnutls Version GNUTLS_MAJOR_VERSION=0 GNUTLS_MINOR_VERSION=5 -GNUTLS_MICRO_VERSION=9 +GNUTLS_MICRO_VERSION=10 GNUTLS_VERSION=$GNUTLS_MAJOR_VERSION.$GNUTLS_MINOR_VERSION.$GNUTLS_MICRO_VERSION AC_DEFINE_UNQUOTED(GNUTLS_VERSION, "$GNUTLS_VERSION", [version of gnutls]) diff --git a/doc/tex/Makefile.am b/doc/tex/Makefile.am index edd3040712..fa0c864efe 100644 --- a/doc/tex/Makefile.am +++ b/doc/tex/Makefile.am @@ -10,7 +10,7 @@ TEX_OBJECTS = gnutls.tex ../../lib/gnutls-api.tex serv1.tex ex1.tex ex2.tex ex3. memory.tex openpgp.tex x509.tex howto.tex openssl.tex \ ex-rfc2818.tex appendix.tex x509cert.xml.tex pgpcert.xml.tex \ serv-export.tex serv-srp.tex programs.tex library.tex certificate.tex \ - tlsintro.tex + tlsintro.tex ex-alert.tex gnutls.html: $(TEX_OBJECTS) -latex2html gnutls.tex -no_navigation -split 0 \ diff --git a/doc/tex/ex-alert.tex b/doc/tex/ex-alert.tex new file mode 100644 index 0000000000..8a7675bb1e --- /dev/null +++ b/doc/tex/ex-alert.tex @@ -0,0 +1,29 @@ +\begin{verbatim} + +#include <stdio.h> +#include <stdlib.h> +#include <gnutls/gnutls.h> + +/* This function will check whether the given return code from + * a gnutls function (recv/send), is an alert, and will print + * that alert. + */ +void check_alert(gnutls_session session, int ret) +{ + int last_alert; + + if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED + || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { + last_alert = gnutls_alert_get(session); + + if (last_alert == GNUTLS_A_NO_RENEGOTIATION && + ret == GNUTLS_E_WARNING_ALERT_RECEIVED) + printf("* Received NO_RENEGOTIATION alert. " + "Client Does not support renegotiation.\n"); + else + printf("* Received alert '%d': %s.\n", last_alert, + gnutls_alert_get_name(last_alert)); + } +} + +\end{verbatim} diff --git a/doc/tex/ex1.tex b/doc/tex/ex1.tex index 6be15f0921..06dd25ae7d 100644 --- a/doc/tex/ex1.tex +++ b/doc/tex/ex1.tex @@ -132,26 +132,14 @@ int main() gnutls_record_send( session, MSG, strlen(MSG)); ret = gnutls_record_recv( session, buffer, MAX_BUF); - if (gnutls_error_is_fatal(ret) == 1 || ret == 0) { - if (ret == 0) { - printf("- Peer has closed the GNUTLS connection\n"); - goto end; - } else { - fprintf(stderr, "*** Received corrupted data(%d) - server has terminated the connection abnormally\n", - ret); - goto end; - } - } else { - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) - alert = gnutls_alert_get(session); - printf("* Received alert [%d]: %s\n", alert, gnutls_alert_get_name(alert)); - if (ret == GNUTLS_E_REHANDSHAKE) { - printf("* Received HelloRequest message (server asked to rehandshake)\n"); - gnutls_alert_send_appropriate( session, ret); /* we don't want rehandshake */ - } - } - - if (ret > 0) { + if (ret == 0) { + printf("- Peer has closed the TLS connection\n"); + goto end; + } else if (ret < 0) { + fprintf(stderr, "*** Received corrupted data(%d) - server has terminated the connection abnormally\n", + ret); + goto end; + } else if (ret > 0) { printf("- Received %d bytes: ", ret); for (ii = 0; ii < ret; ii++) { fputc(buffer[ii], stdout); diff --git a/doc/tex/ex2.tex b/doc/tex/ex2.tex index 33afeb8ebe..646e78a86e 100644 --- a/doc/tex/ex2.tex +++ b/doc/tex/ex2.tex @@ -105,24 +105,14 @@ int main() gnutls_record_send( session, MSG, strlen(MSG)); ret = gnutls_record_recv( session, buffer, MAX_BUF); - if (gnutls_error_is_fatal(ret) == 1 || ret == 0) { - if (ret == 0) { - printf("- Peer has closed the GNUTLS connection\n"); - goto end; - } else { - fprintf(stderr, "*** Received corrupted data(%d) - server has terminated the connection abnormally\n", - ret); - goto end; - } - } else { - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) - printf("* Received alert [%d]\n", gnutls_alert_get(session)); - if (ret == GNUTLS_E_REHANDSHAKE) - printf("* Received HelloRequest message (server asked to rehandshake)\n"); - gnutls_alert_send_appropriate( session, ret); /* we don't want rehandshake */ - } - - if (ret > 0) { + if (ret == 0) { + printf("- Peer has closed the TLS connection\n"); + goto end; + } else if (ret < 0) { + fprintf(stderr, "*** Received corrupted data(%d) - server has terminated the connection abnormally\n", + ret); + goto end; + } else if (ret > 0) { printf("- Received %d bytes: ", ret); for (ii = 0; ii < ret; ii++) { fputc(buffer[ii], stdout); diff --git a/doc/tex/ex4.tex b/doc/tex/ex4.tex index e4064927e4..52db02d721 100644 --- a/doc/tex/ex4.tex +++ b/doc/tex/ex4.tex @@ -100,26 +100,14 @@ int main() gnutls_record_send( session, MSG, strlen(MSG)); ret = gnutls_record_recv( session, buffer, MAX_BUF); - if (gnutls_error_is_fatal(ret) == 1 || ret == 0) { - if (ret == 0) { - printf("- Peer has closed the GNUTLS connection\n"); - goto end; - } else { - fprintf(stderr, "*** Received corrupted data(%d) - server has terminated the connection abnormally\n", - ret); - goto end; - } - } else { - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) - alert = gnutls_alert_get(session); - printf("* Received alert [%d]: %s\n", alert, gnutls_alert_get_name(alert)); - if (ret == GNUTLS_E_REHANDSHAKE) { - printf("* Received HelloRequest message (server asked to rehandshake)\n"); - gnutls_alert_send_appropriate( session, ret); /* we don't want rehandshake */ - } - } - - if (ret > 0) { + if (ret == 0) { + printf("- Peer has closed the TLS connection\n"); + goto end; + } else if (ret < 0) { + fprintf(stderr, "*** Received corrupted data(%d) - server has terminated the connection abnormally\n", + ret); + goto end; + } else if (ret > 0) { printf("- Received %d bytes: ", ret); for (ii = 0; ii < ret; ii++) { fputc(buffer[ii], stdout); diff --git a/doc/tex/examples.tex b/doc/tex/examples.tex index 151131e688..3bf599b1f3 100644 --- a/doc/tex/examples.tex +++ b/doc/tex/examples.tex @@ -76,4 +76,9 @@ This server also supports export-grade cipher suites and session resuming. This is a server which supports {\bf SRP} authentication. \input{serv-srp} +\subsection{Checking for an alert} +This is a function that checks if an alert has been received +in the current session. +\input{ex-alert} + \input{openssl} diff --git a/doc/tex/handshake.tex b/doc/tex/handshake.tex index d92d2fd992..1c6ab01b57 100644 --- a/doc/tex/handshake.tex +++ b/doc/tex/handshake.tex @@ -19,6 +19,10 @@ to set the priority of compression methods. to set the priority of certificate types (ie. OpenPGP, X.509). \item \printfunc{gnutls_protocol_set_priority}{gnutls\_protocol\_set\_priority}: to set the priority of protocol versions (ie. \sslIII{}, \tlsI). +\item \printfunc{gnutls_set_default_priority}{gnutls\_set\_default\_priority}: +to set some defaults in the current session. That way you don't have to call each +priority function, independently, but you have to live with the defaults. + \item \printfunc{gnutls_credentials_set}{gnutls\_credentials\_set}: to set the appropriate credentials structures. \item \printfunc{gnutls_certificate_server_set_request} diff --git a/doc/tex/serv-export.tex b/doc/tex/serv-export.tex index 2c46c0c724..c4f2eb542e 100644 --- a/doc/tex/serv-export.tex +++ b/doc/tex/serv-export.tex @@ -204,29 +204,19 @@ int main() bzero(buffer, MAX_BUF + 1); ret = gnutls_record_recv(session, buffer, MAX_BUF); - if (gnutls_error_is_fatal(ret) == 1 || ret == 0) { - if (ret == 0) { - printf("\n- Peer has closed the GNUTLS connection\n"); - break; - } else { - fprintf(stderr, - "\n*** Received corrupted data(%d). Closing the connection.\n\n", - ret); - break; - } - - } - if (ret > 0) { + if (ret == 0) { + printf("\n- Peer has closed the TLS connection\n"); + break; + } else if (ret < 0) { + fprintf(stderr, + "\n*** Received corrupted data(%d). Closing the connection.\n\n", + ret); + break; + } else if (ret > 0) { /* echo data back to the client */ gnutls_record_send(session, buffer, strlen(buffer)); } - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED - || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { - ret = gnutls_alert_get(session); - printf("* Received alert '%d' - '%s'.\n", ret, - gnutls_alert_get_name(ret)); - } } printf("\n"); gnutls_bye(session, GNUTLS_SHUT_WR); /* do not wait for diff --git a/doc/tex/serv-srp.tex b/doc/tex/serv-srp.tex index 29b713963c..2b7ec4b0c2 100644 --- a/doc/tex/serv-srp.tex +++ b/doc/tex/serv-srp.tex @@ -125,29 +125,21 @@ int main() bzero(buffer, MAX_BUF + 1); ret = gnutls_record_recv( session, buffer, MAX_BUF); - if (gnutls_error_is_fatal(ret) == 1 || ret == 0) { - if (ret == 0) { - printf - ("\n- Peer has closed the GNUTLS connection\n"); - break; - } else { - fprintf(stderr, - "\n*** Received corrupted data(%d). Closing the connection.\n\n", - ret); - break; - } - - } - if (ret > 0) { + if (ret == 0) { + printf + ("\n- Peer has closed the GNUTLS connection\n"); + break; + } else if (ret > 0) { + fprintf(stderr, + "\n*** Received corrupted data(%d). Closing the connection.\n\n", + ret); + break; + } else if (ret > 0) { /* echo data back to the client */ gnutls_record_send( session, buffer, strlen(buffer)); } - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { - ret = gnutls_alert_get(session); - printf("* Received alert '%d' - '%s'.\n", ret, gnutls_alert_get_name( ret)); - } } printf("\n"); gnutls_bye( session, GNUTLS_SHUT_WR); /* do not wait for diff --git a/doc/tex/serv1.tex b/doc/tex/serv1.tex index 213df175c6..3be803a810 100644 --- a/doc/tex/serv1.tex +++ b/doc/tex/serv1.tex @@ -155,29 +155,21 @@ int main() bzero(buffer, MAX_BUF + 1); ret = gnutls_record_recv( session, buffer, MAX_BUF); - if (gnutls_error_is_fatal(ret) == 1 || ret == 0) { - if (ret == 0) { - printf - ("\n- Peer has closed the GNUTLS connection\n"); - break; - } else { - fprintf(stderr, - "\n*** Received corrupted data(%d). Closing the connection.\n\n", - ret); - break; - } - - } - if (ret > 0) { + if (ret == 0) { + printf + ("\n- Peer has closed the GNUTLS connection\n"); + break; + } else if (ret < 0) { + fprintf(stderr, + "\n*** Received corrupted data(%d). Closing the connection.\n\n", + ret); + break; + } else if (ret > 0) { /* echo data back to the client */ gnutls_record_send( session, buffer, strlen(buffer)); } - if (ret == GNUTLS_E_WARNING_ALERT_RECEIVED || ret == GNUTLS_E_FATAL_ALERT_RECEIVED) { - ret = gnutls_alert_get(session); - printf("* Received alert '%d' - '%s'.\n", ret, gnutls_alert_get_name( ret)); - } } printf("\n"); gnutls_bye( session, GNUTLS_SHUT_WR); /* do not wait for diff --git a/src/serv.c b/src/serv.c index d0c6a3c317..cea31ec658 100644 --- a/src/serv.c +++ b/src/serv.c @@ -460,7 +460,8 @@ void check_alert(gnutls_session session, int ret) printf ("* Received NO_RENEGOTIATION alert. Client Does not support renegotiation.\n"); else - printf("* Received alert '%d'.\n", ret); + printf("* Received alert '%d': %s.\n", last_alert, + gnutls_alert_get_name( last_alert)); } } |