The backend behaviour for the SecretMana library.
@type config() :: %SecretMana.Config{ backend: term(), backend_config: term(), environment: term(), otp_app: term() }
@type file_path() :: String.t()
@type key_path() :: [String.t()]
@callback config(config()) :: term()
@callback decrypt(config(), String.t()) :: :ok
@callback download_url(config()) :: String.t()
@callback edit(config()) :: :ok
@callback encrypt(config(), file_path(), check_file_type :: boolean()) :: :ok
@callback gen_key(config()) :: :ok
@callback generate_private_key_file(config(), binary()) :: :ok
@callback install(config()) :: :ok
@callback read!(config(), key_path()) :: String.t()