verify_discovery_results_openid2 (OpenID::Consumer::IdResHandler)

    # File lib/openid/consumer/idres.rb, line 330
          def verify_discovery_results_openid2
            to_match = OpenIDServiceEndpoint.new
            to_match.type_uris = [OPENID_2_0_TYPE]
            to_match.claimed_id = fetch('claimed_id', nil)
            to_match.local_id = fetch('identity', nil)
            to_match.server_url = fetch('op_endpoint')

            if to_match.claimed_id.nil? && !to_match.local_id.nil?
              raise ProtocolError, ('openid.identity is present without '\
                                    'openid.claimed_id')
            elsif !to_match.claimed_id.nil? && to_match.local_id.nil?
              raise ProtocolError, ('openid.claimed_id is present without '\
                                    'openid.identity')

            # This is a response without identifiers, so there's really no
            # checking that we can do, so return an endpoint that's for
            # the specified `openid.op_endpoint'
            elsif to_match.claimed_id.nil?
              @endpoint =
                OpenIDServiceEndpoint.from_op_endpoint_url(to_match.server_url)
              return
            end

            if @endpoint.nil?
              Util.log('No pre-discovered information supplied')
              discover_and_verify(to_match)
            else
              begin
                verify_discovery_single(@endpoint, to_match)
              rescue ProtocolError => why
                Util.log("Error attempting to use stored discovery "\
                         "information: #{why.message}")
                Util.log("Attempting discovery to verify endpoint")
                discover_and_verify(to_match)
              end
            end

            if @endpoint.claimed_id != to_match.claimed_id
              @endpoint = @endpoint.dup
              @endpoint.claimed_id = to_match.claimed_id
            end
          end