Skip to content

Commit b51f893

Browse files
authored
DEVEX-837 Updated the SDK to use secure coding. (#876)
* Updated the SDK to use secure coding. * Updated decoding for `decodeObjectOfClass:`.
1 parent e30fdf2 commit b51f893

15 files changed

+56
-44
lines changed

Branch-SDK/Branch-SDK/BNCCommerceEvent.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ NSArray<BNCCurrency>*_Nonnull BNCCurrencyAllCurrencies(void);
263263
@end
264264

265265

266-
@interface BranchCommerceEventRequest : BNCServerRequest <NSCoding>
266+
@interface BranchCommerceEventRequest : BNCServerRequest <NSSecureCoding>
267267

268268
- (instancetype _Nonnull) initWithCommerceEvent:(BNCCommerceEvent*_Nonnull)commerceEvent
269269
metadata:(NSDictionary*_Nullable)dictionary

Branch-SDK/Branch-SDK/BNCCommerceEvent.m

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,14 +599,13 @@ - (void)processResponse:(BNCServerResponse*)response
599599
self.completion(dictionary, error);
600600
}
601601

602-
#pragma mark BranchCommerceEventRequest NSCoding
602+
#pragma mark BranchCommerceEventRequest NSSecureCoding
603603

604604
- (instancetype)initWithCoder:(NSCoder *)decoder {
605605
self = [super initWithCoder:decoder];
606606
if (!self) return self;
607-
608-
self.commerceDictionary = [decoder decodeObjectForKey:@"commerceDictionary"];
609-
self.metadata = [decoder decodeObjectForKey:@"metaData"];
607+
self.commerceDictionary = [decoder decodeObjectOfClass:NSDictionary.class forKey:@"commerceDictionary"];
608+
self.metadata = [decoder decodeObjectOfClass:NSDictionary.class forKey:@"metaData"];
610609
return self;
611610
}
612611

@@ -616,4 +615,8 @@ - (void)encodeWithCoder:(NSCoder *)coder {
616615
[coder encodeObject:self.metadata forKey:@"metadata"];
617616
}
618617

618+
+ (BOOL) supportsSecureCoding {
619+
return YES;
620+
}
621+
619622
@end

Branch-SDK/Branch-SDK/BNCLinkData.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ typedef NS_ENUM(NSUInteger, BranchLinkType) {
1717
BranchLinkTypeOneTimeUse = 1
1818
};
1919

20-
@interface BNCLinkData : NSObject
20+
@interface BNCLinkData : NSObject <NSSecureCoding>
2121

2222
@property (strong, nonatomic) NSMutableDictionary *data;
2323

Branch-SDK/Branch-SDK/BNCLinkData.m

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,20 +170,24 @@ - (void)encodeWithCoder:(NSCoder *)coder {
170170

171171
- (id)initWithCoder:(NSCoder *)coder {
172172
if ((self = [super init])) {
173-
self.tags = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_TAGS];
174-
self.alias = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_ALIAS];
175-
self.type = [[coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_LINK_TYPE] integerValue];
176-
self.channel = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_CHANNEL];
177-
self.feature = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_FEATURE];
178-
self.stage = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_STAGE];
179-
self.campaign = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_CAMPAIGN];
180-
self.duration = [[coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_DURATION] integerValue];
173+
self.tags = [coder decodeObjectOfClass:NSArray.class forKey:BRANCH_REQUEST_KEY_URL_TAGS];
174+
self.alias = [coder decodeObjectOfClass:NSString.class forKey:BRANCH_REQUEST_KEY_URL_ALIAS];
175+
self.type = [[coder decodeObjectOfClass:NSNumber.class forKey:BRANCH_REQUEST_KEY_URL_LINK_TYPE] integerValue];
176+
self.channel = [coder decodeObjectOfClass:NSString.class forKey:BRANCH_REQUEST_KEY_URL_CHANNEL];
177+
self.feature = [coder decodeObjectOfClass:NSString.class forKey:BRANCH_REQUEST_KEY_URL_FEATURE];
178+
self.stage = [coder decodeObjectOfClass:NSString.class forKey:BRANCH_REQUEST_KEY_URL_STAGE];
179+
self.campaign = [coder decodeObjectOfClass:NSString.class forKey:BRANCH_REQUEST_KEY_URL_CAMPAIGN];
180+
self.duration = [[coder decodeObjectOfClass:NSNumber.class forKey:BRANCH_REQUEST_KEY_URL_DURATION] integerValue];
181181

182-
NSString *encodedParams = [coder decodeObjectForKey:BRANCH_REQUEST_KEY_URL_DATA];
182+
NSString *encodedParams = [coder decodeObjectOfClass:NSString.class forKey:BRANCH_REQUEST_KEY_URL_DATA];
183183
self.params = [BNCEncodingUtils decodeJsonStringToDictionary:encodedParams];
184184
}
185185

186186
return self;
187187
}
188188

189+
+ (BOOL) supportsSecureCoding {
190+
return YES;
191+
}
192+
189193
@end

Branch-SDK/Branch-SDK/BranchEvent.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ FOUNDATION_EXPORT BranchStandardEvent _Nonnull BranchStandardEventUnlockAchievem
7575

7676
#pragma mark - BranchEventRequest
7777

78-
@interface BranchEventRequest : BNCServerRequest <NSCoding>
78+
@interface BranchEventRequest : BNCServerRequest <NSSecureCoding>
7979

8080
- (instancetype _Nonnull) initWithServerURL:(NSURL*_Nonnull)serverURL
8181
eventDictionary:(NSDictionary*_Nullable)eventDictionary

Branch-SDK/Branch-SDK/BranchEvent.m

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,14 @@ - (void)processResponse:(BNCServerResponse*)response
7171
self.completion(dictionary, error);
7272
}
7373

74-
#pragma mark BranchEventRequest NSCoding
74+
#pragma mark BranchEventRequest NSSecureCoding
7575

7676
- (instancetype)initWithCoder:(NSCoder *)decoder {
7777
self = [super initWithCoder:decoder];
7878
if (!self) return self;
7979

80-
self.serverURL = [decoder decodeObjectForKey:@"serverURL"];
81-
self.eventDictionary = [decoder decodeObjectForKey:@"eventDictionary"];
80+
self.serverURL = [decoder decodeObjectOfClass:NSString.class forKey:@"serverURL"];
81+
self.eventDictionary = [decoder decodeObjectOfClass:NSDictionary.class forKey:@"eventDictionary"];
8282
return self;
8383
}
8484

@@ -88,6 +88,10 @@ - (void)encodeWithCoder:(NSCoder *)coder {
8888
[coder encodeObject:self.eventDictionary forKey:@"eventDictionary"];
8989
}
9090

91+
+ (BOOL) supportsSecureCoding {
92+
return YES;
93+
}
94+
9195
@end
9296

9397
#pragma mark - BranchEvent

Branch-SDK/Branch-SDK/Networking/BNCServerRequest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#import "BNCServerInterface.h"
1010

11-
@interface BNCServerRequest : NSObject <NSCoding>
11+
@interface BNCServerRequest : NSObject <NSSecureCoding>
1212

1313
- (void)makeRequest:(BNCServerInterface *)serverInterface key:(NSString *)key callback:(BNCServerCallback)callback;
1414
- (void)processResponse:(BNCServerResponse *)response error:(NSError *)error;

Branch-SDK/Branch-SDK/Networking/BNCServerRequest.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,8 @@ - (void)safeSetValue:(NSObject *)value forKey:(NSString *)key onDict:(NSMutableD
3333
}
3434
}
3535

36+
+ (BOOL) supportsSecureCoding {
37+
return YES;
38+
}
39+
3640
@end

Branch-SDK/Branch-SDK/Networking/Requests/BranchCreditHistoryRequest.m

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ - (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
7777
}
7878
}
7979

80-
#pragma mark - NSCoding methods
80+
#pragma mark - NSSecureCoding methods
8181

8282
- (id)initWithCoder:(NSCoder *)decoder {
8383
if ((self = [super initWithCoder:decoder])) {
84-
_bucket = [decoder decodeObjectForKey:@"bucket"];
85-
_creditTransactionId = [decoder decodeObjectForKey:@"creditTransactionId"];
84+
_bucket = [decoder decodeObjectOfClass:NSString.class forKey:@"bucket"];
85+
_creditTransactionId = [decoder decodeObjectOfClass:NSString.class forKey:@"creditTransactionId"];
8686
_length = [decoder decodeIntegerForKey:@"length"];
8787
_order = [decoder decodeIntegerForKey:@"order"];
8888
}
@@ -97,4 +97,8 @@ - (void)encodeWithCoder:(NSCoder *)coder {
9797
[coder encodeInteger:self.order forKey:@"order"];
9898
}
9999

100+
+ (BOOL) supportsSecureCoding {
101+
return YES;
102+
}
103+
100104
@end

Branch-SDK/Branch-SDK/Networking/Requests/BranchRedeemRewardsRequest.m

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@
1111
#import "BranchConstants.h"
1212

1313
@interface BranchRedeemRewardsRequest ()
14-
1514
@property (assign, nonatomic) NSInteger amount;
1615
@property (strong, nonatomic) NSString *bucket;
1716
@property (copy) callbackWithStatus callback;
18-
1917
@end
2018

2119
@implementation BranchRedeemRewardsRequest
@@ -60,20 +58,19 @@ - (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
6058
}
6159
}
6260

63-
#pragma mark - NSCoding methods
61+
#pragma mark - NSSecureCoding methods
6462

6563
- (id)initWithCoder:(NSCoder *)decoder {
6664
if ((self = [super initWithCoder:decoder])) {
6765
_amount = [decoder decodeIntegerForKey:@"amount"];
68-
_bucket = [decoder decodeObjectForKey:@"bucket"];
66+
_bucket = [decoder decodeObjectOfClass:NSString.class forKey:@"bucket"];
6967
}
7068

7169
return self;
7270
}
7371

7472
- (void)encodeWithCoder:(NSCoder *)coder {
7573
[super encodeWithCoder:coder];
76-
7774
[coder encodeInteger:self.amount forKey:@"amount"];
7875
[coder encodeObject:self.bucket forKey:@"bucket"];
7976
}

0 commit comments

Comments
 (0)