anchor.diff:          end,
       Steps =
           [ make_validate_consumer_key(ConsumerKey)
  -        , make_validate_tmp_token(TmpTokenID)
  +        , make_validate_token_exists(TmpTokenID)
           , make_validate_verifier(VerifierGivenBin, TmpTokenID)
           , ValidateSignature
           , make_validate_nonce(Nonce)
  
positive.code:     ValidateSignature =
          fun (#request_validation_state
              { creds_client = {some, ClientCredentials}
              , creds_tmp_tok= {some, TmpToken}
              , verifier     = {some, Verifier}
              }=State) ->
              ClientSharedSecret =
  
negative.code: 
  -spec make_validate_consumer_key(oauth1_credentials:id(client)) ->
      request_validator(any()).
  make_validate_consumer_key({client, <<_/binary>>}=ConsumerKey) ->
      make_validate_token_exists(ConsumerKey).
  
  -spec make_validate_token_exists(oauth1_credentials:id(Type)) ->
      request_validator(any())
      when Type :: oauth1_credentials:credentials_type().
  make_validate_token_exists({Type, <<_/binary>>}=TokenID) ->
      fun (#request_validation_state{}=State1) ->
          UpdateClient =
              fun (State, Creds) ->
                  State#request_validation_state
                  { creds_client = {some, Creds}
                  }
              end,
          UpdateToken =
              fun (State, Creds) ->
                  State#request_validation_state
                  { creds_token = {some, Creds}
                  }
              end,
          ErrorInvalidClient = {error,{unauthorized,client_credentials_invalid}},
          ErrorInvalidToken  = {error,{unauthorized,token_invalid}},
          case {oauth1_credentials:fetch(TokenID), Type}
          of  {{error, not_found}, client} -> ErrorInvalidClient
          ;   {{error, not_found}, tmp}    -> ErrorInvalidToken
          ;   {{error, not_found}, token}  -> ErrorInvalidToken
          ;   {{error, _}=Error, _}        -> Error
          ;   {{ok, Creds}, client}        -> {ok, UpdateClient(State1, Creds)}
          ;   {{ok, Creds}, tmp}           -> {ok, UpdateToken(State1, Creds)}
          ;   {{ok, Creds}, token}         -> {ok, UpdateToken(State1, Creds)}
          end
      end.
  
  