From 103de505182e569bc811eac1e8ded216e5ae0908 Mon Sep 17 00:00:00 2001
From: manuroe <manu@matrix.org>
Date: Wed, 28 Sep 2016 16:06:11 +0200
Subject: [PATCH] OLMKit: Implement missing [OLMAccount signMessage:]

---
 xcode/OLMKit/OLMAccount.m | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/xcode/OLMKit/OLMAccount.m b/xcode/OLMKit/OLMAccount.m
index 4561a37..77fddac 100644
--- a/xcode/OLMKit/OLMAccount.m
+++ b/xcode/OLMKit/OLMAccount.m
@@ -92,6 +92,25 @@
     return keysDictionary;
 }
 
+- (NSString *)signMessage:(NSData *)messageData {
+    size_t signatureLength = olm_account_signature_length(_account);
+    uint8_t *signatureBytes = malloc(signatureLength);
+    if (!signatureBytes) {
+        return nil;
+    }
+
+    size_t result = olm_account_sign(_account, messageData.bytes, messageData.length, signatureBytes, signatureLength);
+    if (result == olm_error()) {
+        const char *error = olm_account_last_error(_account);
+        NSLog(@"error signing message: %s", error);
+        free(signatureBytes);
+        return nil;
+    }
+
+    NSData *signatureData = [NSData dataWithBytesNoCopy:signatureBytes length:signatureLength freeWhenDone:YES];
+    return [[NSString alloc] initWithData:signatureData encoding:NSUTF8StringEncoding];
+}
+
 - (NSDictionary*) oneTimeKeys {
     size_t otkLength = olm_account_one_time_keys_length(_account);
     uint8_t *otkBytes = malloc(otkLength);
-- 
GitLab