Added documentation for bcrypt module
diff --git a/lib/bcrypt/src/bcrypt.erl b/lib/bcrypt/src/bcrypt.erl
index 947bace..cd071d0 100644
--- a/lib/bcrypt/src/bcrypt.erl
+++ b/lib/bcrypt/src/bcrypt.erl
@@ -4,6 +4,12 @@
 %% @doc Wrapper around the OpenBSD Blowfish password hashing algorithm, as
 %% described in "A Future-Adaptable Password Scheme" by Niels Provos and
 %% David Mazieres: http://www.openbsd.org/papers/bcrypt-paper.ps
+%%
+%% Types:
+%%  @type fname() = string() | atom() | deeplist()
+%%  @type deeplist() = [char() | atom() | deeplist()]
+%%  @type password() = string() | binary()
+%%
 %% @end
 %%
 %% Permission to use, copy, modify, and distribute this software for any
@@ -17,7 +23,6 @@
 %% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 %% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 %% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
 -module(bcrypt).
 -author('Hunter Morris <huntermorris@gmail.com>').
 
@@ -42,25 +47,54 @@
 -define(MAX_LOG_ROUNDS(L), L < 32).
 -define(MIN_LOG_ROUNDS(L), L > 3).
 
-%%====================================================================
-%% API
-%%====================================================================
-start_link(Filename) ->
+%%--------------------------------------------------------------------
+%% @doc Start a bcrypt port server
+%% @spec start_link(Filename::fname()) -> {ok, pid()}
+%% @end
+%%--------------------------------------------------------------------
+start_link(Filename) when is_list(Filename)
+                          orelse is_atom(Filename) ->
     gen_server:start_link(?MODULE, [{filename, Filename}], []).
 
+%%--------------------------------------------------------------------
+%% @doc Stop a bcrypt port server
+%% @spec stop(Pid::pid()) -> ok
+%% @end
+%%--------------------------------------------------------------------
 stop(Pid) when is_pid(Pid) ->
     gen_server:call(Pid, stop).
 
+%%--------------------------------------------------------------------
+%% @doc Generate a salt with the default number of rounds, 12.
+%% @see gen_salt/2
+%% @spec gen_salt(Pid::pid()) -> string()
+%% @end
+%%--------------------------------------------------------------------
 gen_salt(Pid) when is_pid(Pid) ->
     gen_salt(Pid, ?DEFAULT_LOG_ROUNDS).
 
+%%--------------------------------------------------------------------
+%% @doc Generate a random text salt for use with hashpw/3. LogRounds
+%% defines the complexity of the hashing, increasing the cost as
+%% 2^log_rounds.
+%% @spec gen_salt(Pid::pid(), integer()) -> string()
+%% @end
+%%--------------------------------------------------------------------
 gen_salt(Pid, LogRounds) when is_pid(Pid), is_integer(LogRounds),
                               ?MAX_LOG_ROUNDS(LogRounds),
                               ?MIN_LOG_ROUNDS(LogRounds) ->
     R = crypto:rand_bytes(16),
     gen_server:call(Pid, {encode_salt, R, LogRounds}).
 
-hashpw(Pid, Password, Salt) when is_pid(Pid) ->
+%%--------------------------------------------------------------------
+%% @doc Hash the specified password and the salt using the OpenBSD Blowfish
+%% password hashing algorithm. Returns the hashed password.
+%% @spec hashpw(Pid::pid(), Password::password(), Salt::string()) -> string()
+%% @end
+%%--------------------------------------------------------------------
+hashpw(Pid, Password, Salt)
+  when is_pid(Pid), (is_list(Password) orelse is_binary(Password)),
+       is_list(Salt) ->
     gen_server:call(Pid, {hashpw, Password, Salt}).
 
 %%====================================================================