\section{\module{hmac} ---
         メッセージ認証のための鍵付きハッシュ化}

\declaremodule{standard}{hmac}
\modulesynopsis{Python で実装された、メッセージ認証のための鍵付き
ハッシュ化 (HMAC: Keyed-Hashing for Message Authentication)
アルゴリズム。}
\moduleauthor{Gerhard H{\"a}ring}{ghaering@users.sourceforge.net}
\sectionauthor{Gerhard H{\"a}ring}{ghaering@users.sourceforge.net}

\versionadded{2.2}

このモジュールでは \rfc{2104} で記述されている HMAC アルゴリズム
を実装しています。

\begin{funcdesc}{new}{key\optional{, msg\optional{, digestmod}}}
新たな hmac オブジェクトを返します。\var{msg} が存在すれば、
メソッド呼び出し \code{update\var{msg}} を行います。
\var{digestmod} は HMAC オブジェクトが使うダイジェストコンストラクタある
いはモジュールです。標準では \code{\refmodule{hashlib}.md5} コンストラク
タになっています。\note{md5ハッシュには既知の脆弱性がありますが、後方互
換性を考慮してデフォルトのままにしています。使用するアプリケーションにあ
わせてよりよいものを選択してください。}
\end{funcdesc}

HMAC オブジェクトは以下のメソッドを持っています:

\begin{methoddesc}[hmac]{update}{msg}
hmac オブジェクトを文字列 \var{msg} で更新します。繰り返し呼び出し
を行うと、それらの引数を全て結合した引数で単一の呼び出しをした
際と同じに等価になります: すなわち \code{m.update(a); m.update(b)} 
は \code{m.update(a + b)} と等価です。
\end{methoddesc}

\begin{methoddesc}[hmac]{digest}{}
これまで \method{update()} メソッドに渡された文字列のダイジェスト値
を返します。これは\member{digest_size}バイトの文字列で、NULL バイトを含む
非 \ASCII{} 文字が含まれることがあります。
\end{methoddesc}

\begin{methoddesc}[hmac]{hexdigest}{}
\method{digest()}と似ていますが、返される文字列は倍の長さとなり、16進形
式となります。これは、電子メールなどの非バイナリ環境で値を交換する場合に
便利です。
\end{methoddesc}

\begin{methoddesc}[hmac]{copy}{}
hmac オブジェクトのコピー (``クローン'') を返します。このコピー
は最初の部分文字列が共通になっている文字列のダイジェスト値を効率
よく計算するために使うことができます。
\end{methoddesc}

\begin{seealso}
  \seemodule{hashlib}{セキュアハッシュ関数を提供するpythonモジュールです。}
\end{seealso}
