anchor.diff:      Result.
   
   
  --spec p_get_repos() -> Repos :: [binary()].
  +-spec p_get_repos() -> Repos :: [{binary(), [binary()]}].
   p_get_repos() ->
       T = fun() ->
  -                mnesia:foldl(fun(#repo{name = Repo}, Acc) -> [Repo | Acc] end, [], repo)
  +                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.
  
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: 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}.
  
  
  