anchor.diff:  
   unset_credentials(Role) ->
       ns_config:set(get_key(Role), null).
  -
  -upgrade(Config)->
  -    case ns_config:search_prop(Config, rest_creds, creds, []) of
  -        [{User, Auth} | _] ->
  -            Password = proplists:get_value(password, Auth, ""),
  -            [{set, rest_creds, {User, {password, hash_password(Password)}}}];
  -        _ ->
  -            [{set, rest_creds, null}]
  -    end ++
  -        case ns_config:search(Config, read_only_user_creds) of
  -            {value, {ROUser, {password, ROPassword}}} ->
  -                [{set, read_only_user_creds, {ROUser, {password, hash_password(ROPassword)}}}];
  -            false ->
  -                [{set, read_only_user_creds, null}];
  -            {value, null} ->
  -                []
  -        end.
   
   hash_password(Password) ->
       Salt = crypto:rand_bytes(16),
  
positive.code:     authenticate_non_special(Role, User, Password).
  
  authenticate_non_special(Role, User, Password) ->
      case cluster_compat_mode:is_cluster_30() of
          true ->
              authenticate_30(Role, User, Password);
          false ->
              authenticate_old(Role, User, Password)
      end.
  
  authenticate_old(admin, User, Password) ->
      case ns_config:search_prop(ns_config:latest(), rest_creds, creds, []) of
          [{User, Auth} | _] ->
              Password =:= proplists:get_value(password, Auth, "");
          [] ->
              %% An empty list means no login/password auth check.
              true;
          _ ->
              false
      end;
  authenticate_old(ro_admin, User, Password) ->
      ns_config:search(read_only_user_creds) =:= {value, {User, {password, Password}}}.
  
  authenticate_30(Role, User, Password) ->
      do_authenticate(Role, ns_config:search(get_key(Role)), User, Password).
  
  do_authenticate(_Role, {value, {User, {password, {Salt, Mac}}}}, User, Password) ->
  
negative.code: get_user(special) ->
      "@";
  get_user(Role) ->
      case ns_config:search(get_key(Role)) of
          {value, {U, _}} ->
              U;
          _ ->
  