'U{info_callback
<http://pythonhosted.org/pyOpenSSL/api/ssl.html#OpenSSL.SSL.Context.set_info_callback>
} for pyOpenSSL that verifies the hostname in the presented certificate
matches the one passed to this L{ClientTLSOptions}.
@param connection: the connection which is handshaking.
@type connection: L{OpenSSL.SSL.Connection}
@param where: flags indicating progress through a TLS handshake.
@type where: L{int}
@param ret: ignored
@type ret: ignored'

def _identityVerifyingInfoCallback(self, connection, where, ret):

    if (where & SSL.SSL_CB_HANDSHAKE_START):
        connection.set_tlsext_host_name(self._hostnameBytes)
    elif (where & SSL.SSL_CB_HANDSHAKE_DONE):
        try:
            verifyHostname(connection, self._hostnameASCII)
        except VerificationError:
            f = Failure()
            transport = connection.get_app_data()
            transport.failVerification(f)
