diff options
author | Christian Beier <dontmind@freeshell.org> | 2017-09-02 17:02:38 +0200 |
---|---|---|
committer | Christian Beier <dontmind@freeshell.org> | 2017-09-02 17:02:38 +0200 |
commit | 98e1be528f8c39a5c196ce251338e24bca948d90 (patch) | |
tree | 903dcb4bcf92e41c71b7ed41d9533a597b0f2daa /rfb | |
parent | 1155edec9ecc8eab112d7131f844a911d4aeca8e (diff) | |
parent | cb4e15c1aecbe283b87e4e97c1d485062ef7f571 (diff) | |
download | libtdevnc-98e1be528f8c39a5c196ce251338e24bca948d90.tar.gz libtdevnc-98e1be528f8c39a5c196ce251338e24bca948d90.zip |
Merge branch 'sasl2' of git://github.com/simonwaterman/libvncserver into simonwaterman-sasl2
Diffstat (limited to 'rfb')
-rw-r--r-- | rfb/rfbclient.h | 23 | ||||
-rw-r--r-- | rfb/rfbconfig.h.cmakein | 3 | ||||
-rw-r--r-- | rfb/rfbproto.h | 6 |
3 files changed, 30 insertions, 2 deletions
diff --git a/rfb/rfbclient.h b/rfb/rfbclient.h index 4ac9cd6..72d672a 100644 --- a/rfb/rfbclient.h +++ b/rfb/rfbclient.h @@ -52,6 +52,10 @@ #include <rfb/rfbproto.h> #include <rfb/keysym.h> +#ifdef LIBVNCSERVER_HAVE_SASL +#include <sasl/sasl.h> +#endif /* LIBVNCSERVER_HAVE_SASL */ + #define rfbClientSwap16IfLE(s) \ (*(char *)&client->endianTest ? ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)) : (s)) @@ -205,6 +209,11 @@ typedef rfbBool (*GotJpegProc)(struct _rfbClient* client, const uint8_t* buffer, typedef rfbBool (*LockWriteToTLSProc)(struct _rfbClient* client); typedef rfbBool (*UnlockWriteToTLSProc)(struct _rfbClient* client); +#ifdef LIBVNCSERVER_HAVE_SASL +typedef char* (*GetUserProc)(struct _rfbClient* client); +typedef char* (*GetSASLMechanismProc)(struct _rfbClient* client, char* mechlist); +#endif /* LIBVNCSERVER_HAVE_SASL */ + typedef struct _rfbClient { uint8_t* frameBuffer; int width, height; @@ -399,6 +408,20 @@ typedef struct _rfbClient { GotBitmapProc GotBitmap; /** Hook for custom JPEG decoding and rendering */ GotJpegProc GotJpeg; + +#ifdef LIBVNCSERVER_HAVE_SASL + sasl_conn_t *saslconn; + const char *saslDecoded; + unsigned int saslDecodedLength; + unsigned int saslDecodedOffset; + sasl_secret_t *saslSecret; + + /* Callback to allow the client to choose a preferred mechanism. The string returned will + be freed once no longer required. */ + GetSASLMechanismProc GetSASLMechanism; + GetUserProc GetUser; + +#endif /* LIBVNCSERVER_HAVE_SASL */ } rfbClient; /* cursor.c */ diff --git a/rfb/rfbconfig.h.cmakein b/rfb/rfbconfig.h.cmakein index c4dc5c0..7638921 100644 --- a/rfb/rfbconfig.h.cmakein +++ b/rfb/rfbconfig.h.cmakein @@ -148,6 +148,9 @@ /* Define to 1 if OpenSSL is present */ #cmakedefine LIBVNCSERVER_HAVE_LIBSSL 1 +/* Define to 1 if Cyrus SASL is present */ +#cmakedefine LIBVNCSERVER_HAVE_SASL 1 + /* Define to 1 to build with websockets */ #cmakedefine LIBVNCSERVER_WITH_WEBSOCKETS 1 diff --git a/rfb/rfbproto.h b/rfb/rfbproto.h index f0d6ea1..c5b2723 100644 --- a/rfb/rfbproto.h +++ b/rfb/rfbproto.h @@ -67,9 +67,8 @@ typedef int8_t rfbBool; #include <sys/timeb.h> #include <winsock2.h> -#else -#include <rfb/rfbconfig.h> #endif +#include <rfb/rfbconfig.h> #ifdef LIBVNCSERVER_HAVE_LIBZ #include <zlib.h> @@ -287,6 +286,9 @@ typedef char rfbProtocolVersionMsg[13]; /* allow extra byte for null */ #define rfbUltra 17 #define rfbTLS 18 #define rfbVeNCrypt 19 +#ifdef LIBVNCSERVER_HAVE_SASL +#define rfbSASL 20 +#endif /* LIBVNCSERVER_HAVE_SASL */ #define rfbARD 30 #define rfbMSLogon 0xfffffffa |