about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-01-20 13:28:43 +0000
committerJames Booth <boothj5@gmail.com>2013-01-20 13:28:43 +0000
commit3386ba3a1ea9f0abd620934d044c3e3f05660eec (patch)
tree8ab83a411ca56bc5fcd35dbbad079bec24b570ec
parentb4ea35d40adfb1fbaf962f2c90c4b0db7a958082 (diff)
downloadprofani-tty-3386ba3a1ea9f0abd620934d044c3e3f05660eec.tar.gz
Added basic SHA-1 hash of capabilities
-rw-r--r--src/jabber.c23
-rw-r--r--src/jabber.h1
2 files changed, 24 insertions, 0 deletions
diff --git a/src/jabber.c b/src/jabber.c
index ca6bce30..e947bdf0 100644
--- a/src/jabber.c
+++ b/src/jabber.c
@@ -24,6 +24,7 @@
 #include <stdlib.h>
 #include <assert.h>
 
+#include <openssl/sha.h>
 #include <strophe.h>
 
 #include "capabilities.h"
@@ -179,6 +180,28 @@ jabber_disconnect(void)
     }
 }
 
+char *
+jabber_get_sha1_caps_str(void)
+{
+    GString *str = g_string_new("");
+    unsigned char hash[SHA_DIGEST_LENGTH];
+
+    g_string_append(str, "client/pc//Profanity ");
+    g_string_append(str, PACKAGE_VERSION);
+    if (strcmp(PACKAGE_STATUS, "development") == 0) {
+        g_string_append(str, "dev");
+    }
+    g_string_append(str, "<");
+
+    SHA1((unsigned char *)str->str, strlen(str->str), hash);
+
+    char *result = g_base64_encode(hash, strlen((char *)hash));
+
+    g_string_free(str, TRUE);
+
+    return result;
+}
+
 void
 jabber_process_events(void)
 {
diff --git a/src/jabber.h b/src/jabber.h
index e1494851..e1fc04f0 100644
--- a/src/jabber.h
+++ b/src/jabber.h
@@ -81,5 +81,6 @@ char * jabber_get_status(void);
 void jabber_free_resources(void);
 void jabber_restart(void);
 void jabber_set_autoping(int seconds);
+char * jabber_get_sha1_caps_str(void);
 
 #endif