anchor.diff:  check_hmac(Message, KeyId, HMAC) ->
       gen_server:call(?MODULE, {auth_req, check_hmac, {Message, KeyId, HMAC}}).
   
  +
  +-spec reload_repo_config() -> ok | {error, Reason}
  +                                  when Reason :: term().
  +reload_repo_config() ->
  +    gen_server:call(?MODULE, {auth_req, reload_repo_config}).
   
   
   %%%===================================================================
  
positive.code: -export([start_link/1
          ,check_key_for_repo_path/3
          ,add_key/3, remove_key/1
          ,add_repo/2, remove_repo/1, get_repos/0
          ,check_hmac/3]).
  
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  
negative.code:     Result.
  
  
  -spec p_get_repos() -> Repos :: [{binary(), [binary()]}].
  p_get_repos() ->
      T = fun() ->
                  mnesia:foldl(fun(#repo{name = Repo, key_ids = KeyIds}, Acc) ->
                                       [{Repo, KeyIds} | Acc]
                               end, [], repo)
          end,
      {atomic, Result} = mnesia:transaction(T),
      Result.
  
  
  -spec p_get_keys() -> Keys :: [{binary(), binary()}].
  p_get_keys() ->
      T = fun() ->
                  mnesia:foldl(fun(#key{key_id = Id, path = Path}, Acc) ->
                                       [{Id, Path} | Acc]
                               end, [], key)
          end,
      {atomic, Result} = mnesia:transaction(T),
      Result.
  