\section{\module{hmac} ---
         Keyed-Hashing for Message Authentication}

\declaremodule{standard}{hmac}
\modulesynopsis{Keyed-Hashing for Message Authentication (HMAC)
                implementation for Python.}
\moduleauthor{Gerhard H{\"a}ring}{ghaering@users.sourceforge.net}
\sectionauthor{Gerhard H{\"a}ring}{ghaering@users.sourceforge.net}

\versionadded{2.2}

This module implements the HMAC algorithm as described by \rfc{2104}.

\begin{funcdesc}{new}{key\optional{, msg\optional{, digestmod}}}
  Return a new hmac object.  If \var{msg} is present, the method call
  \code{update(\var{msg})} is made. \var{digestmod} is the digest
  constructor or module for the HMAC object to use. It defaults to 
  the \function{\refmodule{hashlib}.md5} constructor.  \note{The md5 hash
  has known weaknesses but remains the default for backwards compatibility.
  Choose a better one for your application.}
\end{funcdesc}

An HMAC object has the following methods:

\begin{methoddesc}[hmac]{update}{msg}
  Update the hmac object with the string \var{msg}.  Repeated calls
  are equivalent to a single call with the concatenation of all the
  arguments: \code{m.update(a); m.update(b)} is equivalent to
  \code{m.update(a + b)}.
\end{methoddesc}

\begin{methoddesc}[hmac]{digest}{}
  Return the digest of the strings passed to the \method{update()}
  method so far.  This string will be the same length as the
  \var{digest_size} of the digest given to the constructor.  It
  may contain non-\ASCII{} characters, including NUL bytes.
\end{methoddesc}

\begin{methoddesc}[hmac]{hexdigest}{}
  Like \method{digest()} except the digest is returned as a string
  twice the length containing
  only hexadecimal digits.  This may be used to exchange the value
  safely in email or other non-binary environments.
\end{methoddesc}

\begin{methoddesc}[hmac]{copy}{}
  Return a copy (``clone'') of the hmac object.  This can be used to
  efficiently compute the digests of strings that share a common
  initial substring.
\end{methoddesc}

\begin{seealso}
  \seemodule{hashlib}{The python module providing secure hash functions.}
\end{seealso}
