Add SSL Pinning NSURLSession
This seems like it's going to get real hairy real quick (and I know nothing about this stuff) but it's definitely something we should look into.
I'm thinking that we could maybe provide an NSURL session subclass that uses SSL pinning. It wouldn't be the default, but it'd be part of the public API. The idea would be that you can then instantiate your API Client with the pinned session object like so:
let cert: NSData // fetch from the bundle or whatever
let session = PinnedSession(cert: cert)
let client = APIClient(session: session)
@gfontenot did you mean like this instead?
let cert: NSData
let session = PinnedSession(cert: cert)
let requestPerformer = NetworkRequestPerformer(session: session)
let client = APIClient(requestPerformer: requestPerformer)
@paulyoung Ha, yes.
Maybe we could expose a performer instead, to simplify that API?
let cert: Data
let performer = PinnedRequestPerformer(cert: cert)
let client = APIClient(requestPerformer: performer)
:+1:
What solution do you have for SSL Pinning when using Swish?. I have tried with TrustKit, but it seems to not swizzle the calls.