anchor.diff:  
           %% 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)));
  +            case catch F(PeerName, public_key:ssh_hostkey_fingerprint(Public)) of
  +                true -> true;
  +                _ -> {error, fingerprint_check_failed}
  +            end;
   
   	{DigestAlg,F} when is_function(F,2) ->
  -	    true == (catch F(PeerName, public_key:ssh_hostkey_fingerprint(DigestAlg,Public)))
  -        
  +            case catch F(PeerName, public_key:ssh_hostkey_fingerprint(DigestAlg,Public)) of
  +                true -> true;
  +                _ -> {error, {fingerprint_check_failed,DigestAlg}}
  +            end
       end.
   
   
  
positive.code: known_host_key(#ssh{opts = Opts, key_cb = {KeyCb,KeyCbOpts}, peer = {PeerName,_}} = Ssh, 
  	       Public, Alg) ->
      UserOpts = ?GET_OPT(user_options, Opts),
      case KeyCb:is_host_key(Public, PeerName, Alg, [{key_cb_private,KeyCbOpts}|UserOpts]) of
  	true ->
  	    ok;
  	false ->
  	    case accepted_host(Ssh, PeerName, Public, Opts) of
  		true ->
  		    KeyCb:add_host_key(PeerName, Public, [{key_cb_private,KeyCbOpts}|UserOpts]);
  		false ->
  		    {error, rejected}
  	    end
      end.
  	    
  
  %%   Each of the algorithm strings MUST be a comma-separated list of
  %%   algorithm names (see ''Algorithm Naming'' in [SSH-ARCH]).  Each
  
negative.code:     end.
  
  
  %%% -> boolean() | {error,_}
  accepted_host(Ssh, PeerName, Public, Opts) ->
      case ?GET_OPT(silently_accept_hosts, Opts) of
  
  