call do_* directly
diff --git a/src/aegis/src/aegis_server.erl b/src/aegis/src/aegis_server.erl
index 1dbd3dd..087e605 100644
--- a/src/aegis/src/aegis_server.erl
+++ b/src/aegis/src/aegis_server.erl
@@ -86,22 +86,13 @@
uuid := UUID
} = Db,
- case is_key_fresh(UUID) of
+ {ok, DbKey} = case is_key_fresh(UUID) of
true ->
- case gen_server:call(?MODULE, {encrypt, Db, Key, Value}) of
- CipherText when is_binary(CipherText) ->
- CipherText;
- {error, {_Tag, {_C_FileName,_LineNumber}, _Desc} = Reason} ->
- ?LOG_ERROR(#{what => encrypt_failure, details => Reason}),
- couch_log:error("aegis encryption failure: ~p ", [Reason]),
- erlang:error(decryption_failed);
- {error, Reason} ->
- erlang:error(Reason)
- end;
+ lookup(UUID);
false ->
- {ok, DbKey} = do_open_db(Db),
- do_encrypt(DbKey, Db, Key, Value)
- end.
+ do_open_db(Db)
+ end,
+ do_encrypt(DbKey, Db, Key, Value).
-spec decrypt(Db :: #{}, Key :: binary(), Value :: binary()) -> binary().
@@ -110,30 +101,21 @@
uuid := UUID
} = Db,
- case is_key_fresh(UUID) of
+ {ok, DbKey} = case is_key_fresh(UUID) of
true ->
- case gen_server:call(?MODULE, {decrypt, Db, Key, Value}) of
- PlainText when is_binary(PlainText) ->
- PlainText;
- {error, {_Tag, {_C_FileName,_LineNumber}, _Desc} = Reason} ->
- ?LOG_ERROR(#{what => decrypt_failure, details => Reason}),
- couch_log:error("aegis decryption failure: ~p ", [Reason]),
- erlang:error(decryption_failed);
- {error, Reason} ->
- erlang:error(Reason)
- end;
+ lookup(UUID);
false ->
- {ok, DbKey} = do_open_db(Db),
- do_decrypt(DbKey, Db, Key, Value)
- end.
+ do_open_db(Db)
+ end,
+ do_decrypt(DbKey, Db, Key, Value).
%% gen_server functions
init([]) ->
- ets:new(?CACHE, [named_table, set, private, {keypos, #entry.uuid}]),
+ ets:new(?CACHE, [named_table, set, {keypos, #entry.uuid}]),
ets:new(?BY_ACCESS,
- [named_table, ordered_set, private, {keypos, #entry.counter}]),
+ [named_table, ordered_set, {keypos, #entry.counter}]),
ets:new(?KEY_CHECK, [named_table, protected, {read_concurrency, true}]),
erlang:send_after(0, self(), maybe_remove_expired),
@@ -158,42 +140,6 @@
NewSt = insert(St, UUID, DbKey),
{reply, ok, NewSt, ?TIMEOUT};
-handle_call({encrypt, #{uuid := UUID} = Db, Key, Value}, From, St) ->
-
- {ok, DbKey} = lookup(UUID),
-
- erlang:spawn(fun() ->
- try
- do_encrypt(DbKey, Db, Key, Value)
- of
- Resp ->
- gen_server:reply(From, Resp)
- catch
- _:Error ->
- gen_server:reply(From, {error, Error})
- end
- end),
-
- {noreply, St, ?TIMEOUT};
-
-handle_call({decrypt, #{uuid := UUID} = Db, Key, Value}, From, St) ->
-
- {ok, DbKey} = lookup(UUID),
-
- erlang:spawn(fun() ->
- try
- do_decrypt(DbKey, Db, Key, Value)
- of
- Resp ->
- gen_server:reply(From, Resp)
- catch
- _:Error ->
- gen_server:reply(From, {error, Error})
- end
- end),
-
- {noreply, St, ?TIMEOUT};
-
handle_call(_Msg, _From, St) ->
{noreply, St}.