Ok, I tested this with the new API and it seems to be working fine.
I received callbacks in
sec_protocol_options_set_challenge_block
and
sec_protocol_options_set_verify_block
blocks, and later receive a proper error (as I did not provide certificate):
So for NSUrlSession the code seems to work. The same configuration for WKWebkit - fails
Log:
Inside of challenge block
Inside of challenge block
boringssl_context_handle_fatal_alert(2072) [C1.1.1.1.1.1:2][0x107006120] read alert, level: fatal, description: certificate required
[C1.1.1.1:3] Connection disconnected from api.ipify.org:443 without a reply
[C1.1.1.1:3] Cannot report error 1200, no proxy agent
boringssl_session_handshake_error_print(44) [C1.1.1.1.1.1:2][0x107006120] Error: 4361061696:error:1000045c:SSL routines:OPENSSL_internal:TLSV1_CERTIFICATE_REQUIRED:/Library/Caches/com.apple.xbs/Sources/boringssl_Sim/ssl/tls_record.cc:592:SSL alert number 116
Connection 1: received failure notification
Connection 1: failed to connect 3:-9829, reason -1
Connection 1: encountered error(3:-9829)
Task <38AFAEA1-DE06-4D54-8F8F-7BEC9C2931E0>.<1> HTTP load failed, 0/0 bytes (error code: -1206 [3:-9829])
Task <38AFAEA1-DE06-4D54-8F8F-7BEC9C2931E0>.<1> finished with error [-1206] Error Domain=NSURLErrorDomain Code=-1206 "The server “api.ipify.org” requires a client certificate." UserInfo={_kCFStreamErrorCodeKey=-9829, NSUnderlyingError=0x600000c705a0 {Error Domain=kCFErrorDomainCFNetwork Code=-1206 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9829, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9829, _NSURLErrorNWPathKey=satisfied (Path is satisfied), interface: en0[802.11], uses wifi}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <38AFAEA1-DE06-4D54-8F8F-7BEC9C2931E0>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <38AFAEA1-DE06-4D54-8F8F-7BEC9C2931E0>.<1>"
), NSLocalizedDescription=The server “api.ipify.org” requires a client certificate., NSErrorFailingURLStringKey=https://api.ipify.org/, NSErrorFailingURLKey=https://api.ipify.org/, _kCFStreamErrorDomainKey=3}
Failed === Response:(null) Error Domain=NSURLErrorDomain Code=-1206 "The server “api.ipify.org” requires a client certificate." UserInfo={_kCFStreamErrorCodeKey=-9829, NSUnderlyingError=0x600000c705a0 {Error Domain=kCFErrorDomainCFNetwork Code=-1206 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9829, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9829, _NSURLErrorNWPathKey=satisfied (Path is satisfied), interface: en0[802.11], uses wifi}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <38AFAEA1-DE06-4D54-8F8F-7BEC9C2931E0>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <38AFAEA1-DE06-4D54-8F8F-7BEC9C2931E0>.<1>"
), NSLocalizedDescription=The server “api.ipify.org” requires a client certificate., NSErrorFailingURLStringKey=https://api.ipify.org/, NSErrorFailingURLKey=https://api.ipify.org/, _kCFStreamErrorDomainKey=3}