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