# MATH_CalcHMACSHA256

## 構文

      #include <nitro/math/dgt.h>

      static inline void MATH_CalcHMACSHA256( void* digest, const void* data, u32 dataLength, const void* key, u32 keyLength );

## 引数

digest | 計算した鍵付ハッシュ値を格納するメモリへのポインタ。
data | 入力データへのポインタ。
dataLength | 入力データのサイズ。
key | 鍵へのポインタ。
keyLength | 鍵のサイズ。

## 返り値

なし。

## 説明

この関数は、SHA-256 を利用した HMAC の計算を行います。
生成される鍵付ハッシュ値の長さは 256 bit、すなわち MATH_SHA256_DIGEST_SIZE (= 32) バイトです。このサイズが格納できる領域を digest 引数に渡すようにしてください。
入力データも鍵も任意のサイズ・任意のアラインメント位置のものが使用できます。しかし、鍵に関しては、MATH_SHA256_DIGEST_SIZE より小さいと強度が弱くなり、MATH_SHA256_DIGEST_SIZE より大きくても強度の向上にはあまり寄与しません。
内部で `MATHSHA256Context` 構造体の大きさに90バイト程度を加えたサイズのスタックを使用します。スタックに十分な余裕がある状態で呼び出してください。
SHA-256 はメッセージダイジェスト値を求めるためのアルゴリズムです。詳細は FIPS (Federal Information Processing Standards) が発行している FIPS PUB 180-2 を参照してください。
HMAC はメッセージ認証のための鍵付ハッシングのアルゴリズムです。内部でハッシュ関数として SHA-256 を使用するものは HMAC-SHA-256 と呼ばれます。詳細は RFC 2104 を参照してください。

## 参照

``

## 履歴

2008/05/23 初版