authenticate(binary) :: :ok | {:error, String.t}
authenticate(binary, String.t, binary) :: :ok | {:error, String.t}