Erlang base64 encode and validated decode
Erlang
-module(base64_safe).
-export([encode/1, decode/1]).
encode(Bin) when is_binary(Bin) ->
base64:encode(Bin);
encode(IoList) ->
base64:encode(iolist_to_binary(IoList)).
decode(Str) when is_list(Str) ->
decode(list_to_binary(Str));
decode(Bin) when is_binary(Bin) ->
try base64:decode(Bin) of
Out -> {ok, Out}
catch
error:_ -> {error, invalid_base64}
end.