mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-01-28 23:59:54 +01:00
523 lines
26 KiB
C
523 lines
26 KiB
C
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数はHmacオブジェクトを初期化し、暗号化タイプ、鍵、およびHMAC長を設定します。
|
||
|
||
\return 0 Hmacオブジェクトの初期化に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 入力タイプが無効な場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E ハッシュに使用する構造体のメモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準の14バイトより短い場合に返されます。
|
||
|
||
\param hmac 初期化するHmacオブジェクトへのポインタ。
|
||
\param type Hmacオブジェクトが使用する暗号化方式を指定するタイプ。有効なオプションは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
|
||
\param key Hmacオブジェクトを初期化する鍵を含むバッファへのポインタ。
|
||
\param length 鍵の長さ。
|
||
|
||
_Example_
|
||
\code
|
||
Hmac hmac;
|
||
byte key[] = { // 暗号化に使用する鍵で初期化 };
|
||
if (wc_HmacSetKey(&hmac, WC_MD5, key, sizeof(key)) != 0) {
|
||
// Hmacオブジェクトの初期化エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HmacUpdate
|
||
\sa wc_HmacFinal
|
||
*/
|
||
int wc_HmacSetKey(Hmac* hmac, int type, const byte* key, word32 keySz);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、HMACを使用して認証するメッセージを更新します。wc_HmacSetKeyでHmacオブジェクトが初期化された後に呼び出す必要があります。この関数は、ハッシュするメッセージを更新するために複数回呼び出すことができます。必要に応じてwc_HmacUpdateを呼び出した後、wc_HmacFinalを呼び出して最終的な認証メッセージタグを取得する必要があります。
|
||
|
||
\return 0 認証するメッセージの更新に成功した場合に返されます。
|
||
\return MEMORY_E ハッシュアルゴリズムで使用するメモリ割り当てエラーがある場合に返されます。
|
||
|
||
\param hmac メッセージを更新するHmacオブジェクトへのポインタ。
|
||
\param msg 追加するメッセージを含むバッファへのポインタ。
|
||
\param length 追加するメッセージの長さ。
|
||
|
||
_Example_
|
||
\code
|
||
Hmac hmac;
|
||
byte msg[] = { // 認証するメッセージで初期化 };
|
||
byte msg2[] = { // メッセージの後半で初期化 };
|
||
// hmacを初期化
|
||
if( wc_HmacUpdate(&hmac, msg, sizeof(msg)) != 0) {
|
||
// メッセージ更新エラー
|
||
}
|
||
if( wc_HmacUpdate(&hmac, msg2, sizeof(msg)) != 0) {
|
||
// 2番目のメッセージでの更新エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HmacSetKey
|
||
\sa wc_HmacFinal
|
||
*/
|
||
int wc_HmacUpdate(Hmac* hmac, const byte* in, word32 sz);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、Hmacオブジェクトのメッセージの最終ハッシュを計算します。
|
||
|
||
\return 0 最終ハッシュの計算に成功した場合に返されます。
|
||
\return MEMORY_E ハッシュアルゴリズムで使用するメモリ割り当てエラーがある場合に返されます。
|
||
|
||
\param hmac 最終ハッシュを計算するHmacオブジェクトへのポインタ。
|
||
\param hash 最終ハッシュを保存するバッファへのポインタ。選択したハッシュアルゴリズムに必要なスペースを確保する必要があります。
|
||
|
||
_Example_
|
||
\code
|
||
Hmac hmac;
|
||
byte hash[MD5_DIGEST_SIZE];
|
||
// タイプとしてMD5でhmacを初期化
|
||
// メッセージでwc_HmacUpdate()
|
||
|
||
if (wc_HmacFinal(&hmac, hash) != 0) {
|
||
// ハッシュ計算エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HmacSetKey
|
||
\sa wc_HmacUpdate
|
||
*/
|
||
int wc_HmacFinal(Hmac* hmac, byte* out);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、設定された暗号スイートに基づいて利用可能な最大のHMACダイジェストサイズを返します。
|
||
|
||
\return Success 設定された暗号スイートに基づいて利用可能な最大のHMACダイジェストサイズを返します。
|
||
|
||
\param none パラメータなし。
|
||
|
||
_Example_
|
||
\code
|
||
int maxDigestSz = wolfSSL_GetHmacMaxSize();
|
||
\endcode
|
||
|
||
\sa none
|
||
*/
|
||
int wolfSSL_GetHmacMaxSize(void);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトとオプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
|
||
|
||
HMAC設定オプションは--enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
|
||
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
|
||
\param inKeySz 入力鍵の長さ。
|
||
\param salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
|
||
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
|
||
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
|
||
\param infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
|
||
\param out 導出鍵を保存するバッファへのポインタ。
|
||
\param outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
|
||
|
||
_Example_
|
||
\code
|
||
byte key[] = { // 鍵で初期化 };
|
||
byte salt[] = { // ソルトで初期化 };
|
||
byte derivedKey[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_HKDF(WC_SHA512, key, sizeof(key), salt, sizeof(salt),
|
||
NULL, 0, derivedKey, sizeof(derivedKey));
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HmacSetKey
|
||
*/
|
||
int wc_HKDF(int type, const byte* inKey, word32 inKeySz,
|
||
const byte* salt, word32 saltSz,
|
||
const byte* info, word32 infoSz,
|
||
byte* out, word32 outSz);
|
||
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
|
||
|
||
HMAC設定オプションは--enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
|
||
\param salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
|
||
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
|
||
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
|
||
\param inKeySz 入力鍵の長さ。
|
||
\param out 導出鍵を保存するバッファへのポインタ。
|
||
|
||
_Example_
|
||
\code
|
||
byte key[] = { // 鍵で初期化 };
|
||
byte salt[] = { // ソルトで初期化 };
|
||
byte derivedKey[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_HKDF_Extract(WC_SHA512, salt, sizeof(salt), key, sizeof(key),
|
||
derivedKey);
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_HKDF_Expand_ex
|
||
*/
|
||
int wc_HKDF_Extract(
|
||
int type,
|
||
const byte* salt, word32 saltSz,
|
||
const byte* inKey, word32 inKeySz,
|
||
byte* out);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
|
||
|
||
HMAC設定オプションは--enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
|
||
\param salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
|
||
\param saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
|
||
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
|
||
\param inKeySz 入力鍵の長さ。
|
||
\param out 導出鍵を保存するバッファへのポインタ。
|
||
\param heap メモリに使用するヒープヒント。NULLにできます。
|
||
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。
|
||
|
||
_Example_
|
||
\code
|
||
byte key[] = { // 鍵で初期化 };
|
||
byte salt[] = { // ソルトで初期化 };
|
||
byte derivedKey[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_HKDF_Extract_ex(WC_SHA512, salt, sizeof(salt), key, sizeof(key),
|
||
derivedKey, NULL, INVALID_DEVID);
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_HKDF_Expand_ex
|
||
*/
|
||
int wc_HKDF_Extract_ex(
|
||
int type,
|
||
const byte* salt, word32 saltSz,
|
||
const byte* inKey, word32 inKeySz,
|
||
byte* out,
|
||
void* heap, int devId);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
|
||
|
||
HMAC設定オプションは--enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
|
||
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
|
||
\param inKeySz 入力鍵の長さ。
|
||
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
|
||
\param infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
|
||
\param out 導出鍵を保存するバッファへのポインタ。
|
||
\param outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
|
||
|
||
_Example_
|
||
\code
|
||
byte key[] = { // 鍵で初期化 };
|
||
byte salt[] = { // ソルトで初期化 };
|
||
byte derivedKey[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_HKDF_Expand(WC_SHA512, key, sizeof(key), NULL, 0,
|
||
derivedKey, sizeof(derivedKey));
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand_ex
|
||
*/
|
||
int wc_HKDF_Expand(
|
||
int type,
|
||
const byte* inKey, word32 inKeySz,
|
||
const byte* info, word32 infoSz,
|
||
byte* out, word32 outSz);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
|
||
|
||
HMAC設定オプションは--enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
|
||
\param inKey KDFに使用する鍵を含むバッファへのポインタ。
|
||
\param inKeySz 入力鍵の長さ。
|
||
\param info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
|
||
\param infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
|
||
\param out 導出鍵を保存するバッファへのポインタ。
|
||
\param outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
|
||
\param heap メモリに使用するヒープヒント。NULLにできます。
|
||
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。
|
||
|
||
_Example_
|
||
\code
|
||
byte key[] = { // 鍵で初期化 };
|
||
byte salt[] = { // ソルトで初期化 };
|
||
byte derivedKey[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_HKDF_Expand_ex(WC_SHA512, key, sizeof(key), NULL, 0,
|
||
derivedKey, sizeof(derivedKey), NULL, INVALID_DEVID);
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
*/
|
||
int wc_HKDF_Expand_ex(
|
||
int type,
|
||
const byte* inKey, word32 inKeySz,
|
||
const byte* info, word32 infoSz,
|
||
byte* out, word32 outSz,
|
||
void* heap, int devId);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数(HKDF)へのアクセスを提供します。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param prk 生成された疑似ランダム鍵。
|
||
\param salt ソルト。
|
||
\param saltLen ソルトの長さ。
|
||
\param ikm 鍵材料の出力へのポインタ。
|
||
\param ikmLen 入力鍵材料バッファの長さ。
|
||
\param digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
|
||
|
||
_Example_
|
||
\code
|
||
byte secret[] = { // ランダム鍵で初期化 };
|
||
byte salt[] = { // オプションのソルトで初期化 };
|
||
byte masterSecret[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_Tls13_HKDF_Extract(secret, salt, sizeof(salt), 0,
|
||
masterSecret, sizeof(masterSecret), WC_SHA512);
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_Tls13_HKDF_Extract_ex
|
||
*/
|
||
int wc_Tls13_HKDF_Extract(
|
||
byte* prk,
|
||
const byte* salt, word32 saltLen,
|
||
byte* ikm, word32 ikmLen, int digest);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数(HKDF)へのアクセスを提供します。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param prk 生成された疑似ランダム鍵。
|
||
\param salt ソルト。
|
||
\param saltLen ソルトの長さ。
|
||
\param ikm 鍵材料の出力へのポインタ。
|
||
\param ikmLen 入力鍵材料バッファの長さ。
|
||
\param digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
|
||
\param heap メモリに使用するヒープヒント。NULLにできます。
|
||
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。
|
||
|
||
_Example_
|
||
\code
|
||
byte secret[] = { // ランダム鍵で初期化 };
|
||
byte salt[] = { // オプションのソルトで初期化 };
|
||
byte masterSecret[MAX_DIGEST_SIZE];
|
||
|
||
int ret = wc_Tls13_HKDF_Extract_ex(secret, salt, sizeof(salt), 0,
|
||
masterSecret, sizeof(masterSecret), WC_SHA512, NULL, INVALID_DEVID);
|
||
if ( ret != 0 ) {
|
||
// 導出鍵の生成エラー
|
||
}
|
||
\endcode
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_Tls13_HKDF_Extract
|
||
*/
|
||
int wc_Tls13_HKDF_Extract_ex(
|
||
byte* prk,
|
||
const byte* salt, word32 saltLen,
|
||
byte* ikm, word32 ikmLen, int digest,
|
||
void* heap, int devId);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param okm 生成された疑似ランダム鍵 - 出力鍵材料。
|
||
\param okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
|
||
\param prk ソルト - 疑似ランダム鍵。
|
||
\param prkLen ソルトの長さ - 疑似ランダム鍵。
|
||
\param protocol TLSプロトコルラベル。
|
||
\param protocolLen TLSプロトコルラベルの長さ。
|
||
\param info 拡張する情報。
|
||
\param infoLen 情報の長さ。
|
||
\param digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
|
||
\param heap メモリに使用するヒープヒント。NULLにできます。
|
||
\param devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_Tls13_HKDF_Expand_Label
|
||
\sa wc_Tls13_HKDF_Expand_Label_Alloc
|
||
*/
|
||
int wc_Tls13_HKDF_Expand_Label_ex(
|
||
byte* okm, word32 okmLen,
|
||
const byte* prk, word32 prkLen,
|
||
const byte* protocol, word32 protocolLen,
|
||
const byte* label, word32 labelLen,
|
||
const byte* info, word32 infoLen,
|
||
int digest,
|
||
void* heap, int devId);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param okm 生成された疑似ランダム鍵 - 出力鍵材料。
|
||
\param okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
|
||
\param prk ソルト - 疑似ランダム鍵。
|
||
\param prkLen ソルトの長さ - 疑似ランダム鍵。
|
||
\param protocol TLSプロトコルラベル。
|
||
\param protocolLen TLSプロトコルラベルの長さ。
|
||
\param info 拡張する情報。
|
||
\param infoLen 情報の長さ。
|
||
\param digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_Tls13_HKDF_Expand_Label_ex
|
||
\sa wc_Tls13_HKDF_Expand_Label_Alloc
|
||
*/
|
||
int wc_Tls13_HKDF_Expand_Label(
|
||
byte* okm, word32 okmLen,
|
||
const byte* prk, word32 prkLen,
|
||
const byte* protocol, word32 protocolLen,
|
||
const byte* label, word32 labelLen,
|
||
const byte* info, word32 infoLen,
|
||
int digest);
|
||
|
||
/*!
|
||
\ingroup HMAC
|
||
|
||
\brief この関数はwc_Tls13_HKDF_Expand_Label()と非常に似ていますが、通常使用されるスタックスペースが十分でない場合にメモリを割り当てます。HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
|
||
|
||
\return 0 指定された入力で鍵の生成に成功した場合に返されます。
|
||
\return BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
|
||
\return MEMORY_E メモリ割り当てエラーがある場合に返されます。
|
||
\return HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。
|
||
|
||
\param okm 生成された疑似ランダム鍵 - 出力鍵材料。
|
||
\param okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
|
||
\param prk ソルト - 疑似ランダム鍵。
|
||
\param prkLen ソルトの長さ - 疑似ランダム鍵。
|
||
\param protocol TLSプロトコルラベル。
|
||
\param protocolLen TLSプロトコルラベルの長さ。
|
||
\param info 拡張する情報。
|
||
\param infoLen 情報の長さ。
|
||
\param digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
|
||
\param heap メモリに使用するヒープヒント。NULLにできます。
|
||
|
||
\sa wc_HKDF
|
||
\sa wc_HKDF_Extract
|
||
\sa wc_HKDF_Extract_ex
|
||
\sa wc_HKDF_Expand
|
||
\sa wc_Tls13_HKDF_Expand_Label
|
||
\sa wc_Tls13_HKDF_Expand_Label_ex
|
||
*/
|
||
int wc_Tls13_HKDF_Expand_Label_Alloc(
|
||
byte* okm, word32 okmLen,
|
||
const byte* prk, word32 prkLen,
|
||
const byte* protocol, word32 protocolLen,
|
||
const byte* label, word32 labelLen,
|
||
const byte* info, word32 infoLen,
|
||
int digest, void* heap);
|