From 7b80ff5b3a5bf61e6ba758f2b5f9e0db9eca69c5 Mon Sep 17 00:00:00 2001 From: Gernot Tenchio Date: Thu, 25 Aug 2011 22:33:06 +0200 Subject: [PATCH] websockets: added gcrypt based sha1 digest funtion --- libvncserver/websockets.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libvncserver/websockets.c b/libvncserver/websockets.c index da00522..ae6a71b 100755 --- a/libvncserver/websockets.c +++ b/libvncserver/websockets.c @@ -163,6 +163,21 @@ min (int a, int b) { } #ifdef LIBVNCSERVER_WITH_CLIENT_GCRYPT +#include +#ifndef SHA_DIGEST_LENGTH +#define SHA_DIGEST_LENGTH 20 +#endif +static void webSocketsGenSha1Key(char *target, int size, char *key) +{ + gcry_md_hd_t c; + unsigned char tmp[SHA_DIGEST_LENGTH]; + gcry_md_open(&c, GCRY_MD_SHA1, 0); + gcry_md_write(c, key, strlen(key)); + gcry_md_write(c, GUID, sizeof(GUID) - 1); + gcry_md_final(c); + if (-1 == __b64_ntop(gcry_md_read(c, 0), SHA_DIGEST_LENGTH, target, size)) + rfbErr("b64_ntop failed\n"); +} #else #include