summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2002-10-10 15:17:58 +0000
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2002-10-10 15:17:58 +0000
commit8ce3ba0d27d9f9e706d21536a3a4289551a1661d (patch)
tree5304c3f7417f1e732800d7494ff2079de2ec926e
parent13db79aab929fe6488add3b40208233f34825437 (diff)
downloadgnutls-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--NEWS3
-rw-r--r--configure.in2
-rw-r--r--doc/tex/Makefile.am2
-rw-r--r--doc/tex/ex-alert.tex29
-rw-r--r--doc/tex/ex1.tex28
-rw-r--r--doc/tex/ex2.tex26
-rw-r--r--doc/tex/ex4.tex28
-rw-r--r--doc/tex/examples.tex5
-rw-r--r--doc/tex/handshake.tex4
-rw-r--r--doc/tex/serv-export.tex28
-rw-r--r--doc/tex/serv-srp.tex28
-rw-r--r--doc/tex/serv1.tex28
-rw-r--r--src/serv.c3
13 files changed, 98 insertions, 116 deletions
diff --git a/NEWS b/NEWS
index 2cfaa7f1ee..98ddaa646c 100644
--- a/NEWS
+++ b/NEWS
@@ -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));
}
}