summaryrefslogtreecommitdiff
path: root/src/gnutls.h
diff options
context:
space:
mode:
authorTed Zlatanov <tzz@lifelogs.com>2010-09-26 01:06:28 -0500
committerTed Zlatanov <tzz@lifelogs.com>2010-09-26 01:06:28 -0500
commit8af55556e6cc093641dde5205aa5e295039b809f (patch)
tree2f0bebd6d170687acc470e4a1a030abd18daf651 /src/gnutls.h
parent8ccbef23ea624d892bada3c66ef2339ada342997 (diff)
downloademacs-8af55556e6cc093641dde5205aa5e295039b809f.tar.gz
Set up GnuTLS support.
* configure.in: Set up GnuTLS. * lisp/net/gnutls.el: GnuTLS glue code to set up a connection. * src/Makefile.in (LIBGNUTLS_LIBS, LIBGNUTLS_CFLAGS, ALL_CFLAGS) (obj, LIBES): Set up GnuTLS support. * src/config.in: Set up GnuTLS support. * src/emacs.c: Set up GnuTLS support and call syms_of_gnutls. * src/gnutls.c: The source code for GnuTLS support in Emacs. * src/gnutls.h: The GnuTLS glue for Emacs, macros and enums. * src/process.c (make_process, Fstart_process) (read_process_output, send_process): Set up GnuTLS support for process input/output file descriptors. * src/process.h: Set up GnuTLS support.
Diffstat (limited to 'src/gnutls.h')
-rw-r--r--src/gnutls.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/gnutls.h b/src/gnutls.h
new file mode 100644
index 00000000000..3a9030ba454
--- /dev/null
+++ b/src/gnutls.h
@@ -0,0 +1,60 @@
+/* GnuTLS glue for GNU Emacs.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef EMACS_GNUTLS_DEFINED
+#define EMACS_GNUTLS_DEFINED
+
+#ifdef HAVE_GNUTLS
+#include <gnutls/gnutls.h>
+
+typedef enum
+{
+ /* Initialization stages. */
+ GNUTLS_STAGE_EMPTY = 0,
+ GNUTLS_STAGE_CRED_ALLOC,
+ GNUTLS_STAGE_FILES,
+ GNUTLS_STAGE_INIT,
+ GNUTLS_STAGE_PRIORITY,
+ GNUTLS_STAGE_CRED_SET,
+
+ /* Handshake stages. */
+ GNUTLS_STAGE_HANDSHAKE_CANDO = GNUTLS_STAGE_CRED_SET,
+ GNUTLS_STAGE_TRANSPORT_POINTERS_SET,
+ GNUTLS_STAGE_HANDSHAKE_TRIED,
+
+ GNUTLS_STAGE_READY,
+} gnutls_initstage_t;
+
+#define GNUTLS_EMACS_ERROR_INVALID_TYPE GNUTLS_E_APPLICATION_ERROR_MIN
+
+#define GNUTLS_INITSTAGE(proc) (XPROCESS (proc)->gnutls_initstage)
+
+#define GNUTLS_PROCESS_USABLE(proc) (GNUTLS_INITSTAGE(proc) >= GNUTLS_STAGE_READY)
+
+int
+emacs_gnutls_write (int fildes, gnutls_session_t state, char *buf,
+ unsigned int nbyte);
+int
+emacs_gnutls_read (int fildes, gnutls_session_t state, char *buf,
+ unsigned int nbyte);
+
+extern void syms_of_gnutls (void);
+
+#endif
+
+#endif