From 4350a0157194f3f9952f7347cde4e30a3640b10f Mon Sep 17 00:00:00 2001 From: Kevin Harwood Date: Sun, 29 Sep 2013 17:21:51 -0500 Subject: [PATCH] Updated ssl pinning mode to have default pinned certificates by default --- AFNetworking/AFSecurityPolicy.m | 1 + Example/Classes/AFAppDotNetAPIClient.m | 1 + Tests/Tests/AFSecurityPolicyTests.m | 10 ++++++++++ 3 files changed, 12 insertions(+) diff --git a/AFNetworking/AFSecurityPolicy.m b/AFNetworking/AFSecurityPolicy.m index c4a9d86..159e316 100644 --- a/AFNetworking/AFSecurityPolicy.m +++ b/AFNetworking/AFSecurityPolicy.m @@ -154,6 +154,7 @@ static NSArray * AFPublicKeyTrustChainForServerTrust(SecTrustRef serverTrust) { + (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode { AFSecurityPolicy *securityPolicy = [[self alloc] init]; securityPolicy.SSLPinningMode = pinningMode; + [securityPolicy setPinnedCertificates:[self defaultPinnedCertificates]]; return securityPolicy; } diff --git a/Example/Classes/AFAppDotNetAPIClient.m b/Example/Classes/AFAppDotNetAPIClient.m index b9c0884..d78d2b9 100644 --- a/Example/Classes/AFAppDotNetAPIClient.m +++ b/Example/Classes/AFAppDotNetAPIClient.m @@ -31,6 +31,7 @@ static NSString * const AFAppDotNetAPIBaseURLString = @"https://alpha-api.app.ne static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedClient = [[AFAppDotNetAPIClient alloc] initWithBaseURL:[NSURL URLWithString:AFAppDotNetAPIBaseURLString]]; + [_sharedClient setSecurityPolicy:[AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]]; }); return _sharedClient; diff --git a/Tests/Tests/AFSecurityPolicyTests.m b/Tests/Tests/AFSecurityPolicyTests.m index 9c9a983..c4dac7d 100644 --- a/Tests/Tests/AFSecurityPolicyTests.m +++ b/Tests/Tests/AFSecurityPolicyTests.m @@ -165,4 +165,14 @@ static SecCertificateRef AFUTHTTPBinOrgCertificate() { XCTAssert(policy.allowInvalidCertificates == NO, @"policyWithPinningMode: should not allow invalid ssl certificates by default."); } +- (void)testThatSSLPinningPolicyClassMethodContainsDefaultCertificates{ + AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey]; + XCTAssertNotNil(policy.pinnedCertificates, @"Default certificate array should not be empty for SSL pinning mode policy"); +} + +- (void)testThatDefaultPinningPolicyClassMethodContainsNoDefaultCertificates{ + AFSecurityPolicy *policy = [AFSecurityPolicy defaultPolicy]; + XCTAssertNil(policy.pinnedCertificates, @"Default certificate array should be empty for default policy."); +} + @end