From 4be7cc367b06ca4ee7649cb10f14a23052f3c9ee Mon Sep 17 00:00:00 2001 From: manuroe Date: Fri, 19 Feb 2021 12:00:03 +0100 Subject: [PATCH] OLMKit: Forgot to implement pickle v2 for OLMSession --- xcode/OLMKit/OLMSession.m | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/xcode/OLMKit/OLMSession.m b/xcode/OLMKit/OLMSession.m index fc58a08..d10e222 100644 --- a/xcode/OLMKit/OLMSession.m +++ b/xcode/OLMKit/OLMSession.m @@ -21,6 +21,7 @@ #import "OLMAccount_Private.h" #import "OLMSession_Private.h" #include "olm/olm.h" +#import "OLMKit.h" @implementation OLMSession @@ -359,6 +360,13 @@ self = [self initWithSerializedData:pickle key:key error:&error]; } + else if ([version isEqualToString:@"2"]) { + NSString *pickle = [decoder decodeObjectOfClass:[NSString class] forKey:@"pickle"]; + NSData *key = OLMKit.sharedInstance.pickleKeyDelegate.pickleKey; + NSParameterAssert(key); + + self = [self initWithSerializedData:pickle key:key error:&error]; + } NSParameterAssert(error == nil); NSParameterAssert(self != nil); @@ -370,14 +378,23 @@ } - (void)encodeWithCoder:(NSCoder *)encoder { - NSData *key = [OLMUtility randomBytesOfLength:32]; + NSData *key = OLMKit.sharedInstance.pickleKeyDelegate.pickleKey; + if (key) + { + [encoder encodeObject:@"2" forKey:@"version"]; + } + else + { + key = [OLMUtility randomBytesOfLength:32]; + [encoder encodeObject:key forKey:@"key"]; + [encoder encodeObject:@"1" forKey:@"version"]; + } + NSError *error = nil; NSString *pickle = [self serializeDataWithKey:key error:&error]; NSParameterAssert(pickle.length > 0 && error == nil); [encoder encodeObject:pickle forKey:@"pickle"]; - [encoder encodeObject:key forKey:@"key"]; - [encoder encodeObject:@"1" forKey:@"version"]; } @end