anchor.diff:      end.
   
   
  +%%% -> boolean() | {error,_}
   accepted_host(Ssh, PeerName, Public, Opts) ->
       case ?GET_OPT(silently_accept_hosts, Opts) of
   
  
positive.code: 
          %% Call-back alternatives: A user provided fun is called for the decision:
          F when is_function(F,2) ->
  	    true == (catch F(PeerName, public_key:ssh_hostkey_fingerprint(Public)));
  
  	{DigestAlg,F} when is_function(F,2) ->
  	    true == (catch F(PeerName, public_key:ssh_hostkey_fingerprint(DigestAlg,Public)))
          
      end.
  
  
  
negative.code: known_host_key(#ssh{opts = Opts, key_cb = {KeyCb,KeyCbOpts}, peer = {PeerName,_}} = Ssh, 
  	       Public, Alg) ->
      UserOpts = ?GET_OPT(user_options, Opts),
      case is_host_key(KeyCb, Public, PeerName, Alg, [{key_cb_private,KeyCbOpts}|UserOpts]) of
  	{_,true} ->
  	    ok;
  	{_,false} ->
  	    case accepted_host(Ssh, PeerName, Public, Opts) of
  		true ->
  		    {_,R} = add_host_key(KeyCb, PeerName, Public, [{key_cb_private,KeyCbOpts}|UserOpts]),
                      R;
  		false ->
  		    {error, rejected_by_user};
                  {error,E} ->
                      {error,E}
  	    end
      end.
  	    
  is_host_key(KeyCb, Public, PeerName, Alg, Data) ->
      {KeyCb, KeyCb:is_host_key(Public, PeerName, Alg, Data)}.
  
  add_host_key(KeyCb, PeerName, Public, Data) ->
      {KeyCb, KeyCb:add_host_key(PeerName, Public, Data)}.
      
  
  %%   Each of the algorithm strings MUST be a comma-separated list of
  %%   algorithm names (see ''Algorithm Naming'' in [SSH-ARCH]).  Each
  