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.