anchor.diff:  handle_call({auth_req, get_repos}, _From, State) ->
       Reply = p_get_repos(),
       {reply, Reply, State};
  +handle_call({auth_req, get_keys}, _From, State) ->
  +    Reply = p_get_keys(),
  +    {reply, Reply, State};
   handle_call({auth_req, check_hmac, {Message, KeyId, HMAC}}, _From, State) ->
       Reply = p_check_hmac(Message, KeyId, HMAC),
  +    {reply, Reply, State};
  +handle_call({auth_req, reload_repo_config}, _From, State) ->
  +    Reply = p_reload_repo_config(),
       {reply, Reply, State}.
   
   
  
positive.code:     gen_server:call(?MODULE, {auth_req, remove_repo, Repo}).
  
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Returns a list of all repo names in the `repo` table.
  %% Potentially expensive!
  %%
  %% @end
  %%--------------------------------------------------------------------
  -spec get_repos() -> Repos :: [binary()].
  get_repos() ->
      gen_server:call(?MODULE, {auth_req, get_repos}).
  
  
  -spec check_hmac(Message, KeyId, HMAC) -> boolean()
  
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.
  