コンテンツにスキップ

アルゴリズム - HMAC

Functions

Name
int wc_HmacSetKey(Hmac * hmac, int type, const byte * key, word32 keySz)
この関数はHmacオブジェクトを初期化し、暗号化タイプ、鍵、およびHMAC長を設定します。
int wc_HmacUpdate(Hmac * hmac, const byte * in, word32 sz)
この関数は、HMACを使用して認証するメッセージを更新します。wc_HmacSetKeyでHmacオブジェクトが初期化された後に呼び出す必要があります。この関数は、ハッシュするメッセージを更新するために複数回呼び出すことができます。必要に応じてwc_HmacUpdateを呼び出した後、wc_HmacFinalを呼び出して最終的な認証メッセージタグを取得する必要があります。
int wc_HmacFinal(Hmac * hmac, byte * out)
この関数は、Hmacオブジェクトのメッセージの最終ハッシュを計算します。
int wolfSSL_GetHmacMaxSize(void )
この関数は、設定された暗号スイートに基づいて利用可能な最大のHMACダイジェストサイズを返します。
int wc_HKDF(int type, const byte * inKey, word32 inKeySz, const byte * salt, word32 saltSz, const byte * info, word32 infoSz, byte * out, word32 outSz)
この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトとオプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
int wc_HKDF_Extract(int type, const byte * salt, word32 saltSz, const byte * inKey, word32 inKeySz, byte * out)
この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
int wc_HKDF_Extract_ex(int type, const byte * salt, word32 saltSz, const byte * inKey, word32 inKeySz, byte * out, void * heap, int devId)
この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
int wc_HKDF_Expand(int type, const byte * inKey, word32 inKeySz, const byte * info, word32 infoSz, byte * out, word32 outSz)
この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。
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)
この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
int wc_Tls13_HKDF_Extract(byte * prk, const byte * salt, word32 saltLen, byte * ikm, word32 ikmLen, int digest)
この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数(HKDF)へのアクセスを提供します。
int wc_Tls13_HKDF_Extract_ex(byte * prk, const byte * salt, word32 saltLen, byte * ikm, word32 ikmLen, int digest, void * heap, int devId)
この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数(HKDF)へのアクセスを提供します。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
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)
HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。
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)
HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。
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)
この関数はwc_Tls13_HKDF_Expand_Label()と非常に似ていますが、通常使用されるスタックスペースが十分でない場合にメモリを割り当てます。HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。

Functions Documentation

function wc_HmacSetKey

int wc_HmacSetKey(
    Hmac * hmac,
    int type,
    const byte * key,
    word32 keySz
)

この関数はHmacオブジェクトを初期化し、暗号化タイプ、鍵、およびHMAC長を設定します。

Parameters:

  • hmac 初期化するHmacオブジェクトへのポインタ。
  • type Hmacオブジェクトが使用する暗号化方式を指定するタイプ。有効なオプションは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
  • key Hmacオブジェクトを初期化する鍵を含むバッファへのポインタ。
  • length 鍵の長さ。

See:

Return:

  • 0 Hmacオブジェクトの初期化に成功した場合に返されます。
  • BAD_FUNC_ARG 入力タイプが無効な場合に返されます(typeパラメータを参照)。
  • MEMORY_E ハッシュに使用する構造体のメモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準の14バイトより短い場合に返されます。

Example

Hmac hmac;
byte key[] = { // 暗号化に使用する鍵で初期化 };
if (wc_HmacSetKey(&hmac, WC_MD5, key, sizeof(key)) != 0) {
    // Hmacオブジェクトの初期化エラー
}

function wc_HmacUpdate

int wc_HmacUpdate(
    Hmac * hmac,
    const byte * in,
    word32 sz
)

この関数は、HMACを使用して認証するメッセージを更新します。wc_HmacSetKeyでHmacオブジェクトが初期化された後に呼び出す必要があります。この関数は、ハッシュするメッセージを更新するために複数回呼び出すことができます。必要に応じてwc_HmacUpdateを呼び出した後、wc_HmacFinalを呼び出して最終的な認証メッセージタグを取得する必要があります。

Parameters:

  • hmac メッセージを更新するHmacオブジェクトへのポインタ。
  • msg 追加するメッセージを含むバッファへのポインタ。
  • length 追加するメッセージの長さ。

See:

Return:

  • 0 認証するメッセージの更新に成功した場合に返されます。
  • MEMORY_E ハッシュアルゴリズムで使用するメモリ割り当てエラーがある場合に返されます。

Example

Hmac hmac;
byte msg[] = { // 認証するメッセージで初期化 };
byte msg2[] = { // メッセージの後半で初期化 };
// hmacを初期化
if( wc_HmacUpdate(&hmac, msg, sizeof(msg)) != 0) {
    // メッセージ更新エラー
}
if( wc_HmacUpdate(&hmac, msg2, sizeof(msg)) != 0) {
    // 2番目のメッセージでの更新エラー
}

function wc_HmacFinal

int wc_HmacFinal(
    Hmac * hmac,
    byte * out
)

この関数は、Hmacオブジェクトのメッセージの最終ハッシュを計算します。

Parameters:

  • hmac 最終ハッシュを計算するHmacオブジェクトへのポインタ。
  • hash 最終ハッシュを保存するバッファへのポインタ。選択したハッシュアルゴリズムに必要なスペースを確保する必要があります。

See:

Return:

  • 0 最終ハッシュの計算に成功した場合に返されます。
  • MEMORY_E ハッシュアルゴリズムで使用するメモリ割り当てエラーがある場合に返されます。

Example

Hmac hmac;
byte hash[MD5_DIGEST_SIZE];
// タイプとしてMD5でhmacを初期化
// メッセージでwc_HmacUpdate()

if (wc_HmacFinal(&hmac, hash) != 0) {
    // ハッシュ計算エラー
}

function wolfSSL_GetHmacMaxSize

int wolfSSL_GetHmacMaxSize(
    void 
)

この関数は、設定された暗号スイートに基づいて利用可能な最大のHMACダイジェストサイズを返します。

Parameters:

  • none パラメータなし。

See: none

Return: Success 設定された暗号スイートに基づいて利用可能な最大のHMACダイジェストサイズを返します。

Example

int maxDigestSz = wolfSSL_GetHmacMaxSize();

function wc_HKDF

int wc_HKDF(
    int type,
    const byte * inKey,
    word32 inKeySz,
    const byte * salt,
    word32 saltSz,
    const byte * info,
    word32 infoSz,
    byte * out,
    word32 outSz
)

この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトとオプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。

Parameters:

  • type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
  • inKey KDFに使用する鍵を含むバッファへのポインタ。
  • inKeySz 入力鍵の長さ。
  • salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
  • saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
  • info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
  • infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
  • out 導出鍵を保存するバッファへのポインタ。
  • outSz 生成された鍵を保存する出力バッファで利用可能なスペース。

See: wc_HmacSetKey

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

HMAC設定オプションは–enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_HKDF_Extract

int wc_HKDF_Extract(
    int type,
    const byte * salt,
    word32 saltSz,
    const byte * inKey,
    word32 inKeySz,
    byte * out
)

この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。

Parameters:

  • type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
  • salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
  • saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
  • inKey KDFに使用する鍵を含むバッファへのポインタ。
  • inKeySz 入力鍵の長さ。
  • out 導出鍵を保存するバッファへのポインタ。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

HMAC設定オプションは–enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_HKDF_Extract_ex

int wc_HKDF_Extract_ex(
    int type,
    const byte * salt,
    word32 saltSz,
    const byte * inKey,
    word32 inKeySz,
    byte * out,
    void * heap,
    int devId
)

この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションのソルトを含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。

Parameters:

  • type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
  • salt オプションのソルトを含むバッファへのポインタ。ソルトを使用しない場合はNULLを使用します。
  • saltSz ソルトの長さ。ソルトを使用しない場合は0を使用します。
  • inKey KDFに使用する鍵を含むバッファへのポインタ。
  • inKeySz 入力鍵の長さ。
  • out 導出鍵を保存するバッファへのポインタ。
  • heap メモリに使用するヒープヒント。NULLにできます。
  • devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

HMAC設定オプションは–enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_HKDF_Expand

int wc_HKDF_Expand(
    int type,
    const byte * inKey,
    word32 inKeySz,
    const byte * info,
    word32 infoSz,
    byte * out,
    word32 outSz
)

この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。

Parameters:

  • type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
  • inKey KDFに使用する鍵を含むバッファへのポインタ。
  • inKeySz 入力鍵の長さ。
  • info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
  • infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
  • out 導出鍵を保存するバッファへのポインタ。
  • outSz 生成された鍵を保存する出力バッファで利用可能なスペース。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

HMAC設定オプションは–enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_HKDF_Expand_ex

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
)

この関数は、HMAC鍵導出関数(HKDF)へのアクセスを提供します。HMACを利用して、オプションの情報を含むinKeyを導出鍵に変換し、outに保存します。ハッシュタイプは、0またはNULLが指定された場合、デフォルトでMD5になります。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。

Parameters:

  • type HKDFに使用するハッシュタイプ。有効なタイプは:WC_MD5、WC_SHA、WC_SHA256、WC_SHA384、WC_SHA512、WC_SHA3_224、WC_SHA3_256、WC_SHA3_384、またはWC_SHA3_512。
  • inKey KDFに使用する鍵を含むバッファへのポインタ。
  • inKeySz 入力鍵の長さ。
  • info オプションの追加情報を含むバッファへのポインタ。追加情報を追加しない場合はNULLを使用します。
  • infoSz 追加情報の長さ。追加情報を使用しない場合は0を使用します。
  • out 導出鍵を保存するバッファへのポインタ。
  • outSz 生成された鍵を保存する出力バッファで利用可能なスペース。
  • heap メモリに使用するヒープヒント。NULLにできます。
  • devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

HMAC設定オプションは–enable-hmac(デフォルトでオン)、またはソースを直接ビルドする場合はHAVE_HKDFです。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_Tls13_HKDF_Extract

int wc_Tls13_HKDF_Extract(
    byte * prk,
    const byte * salt,
    word32 saltLen,
    byte * ikm,
    word32 ikmLen,
    int digest
)

この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数(HKDF)へのアクセスを提供します。

Parameters:

  • prk 生成された疑似ランダム鍵。
  • salt ソルト。
  • saltLen ソルトの長さ。
  • ikm 鍵材料の出力へのポインタ。
  • ikmLen 入力鍵材料バッファの長さ。
  • digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_Tls13_HKDF_Extract_ex

int wc_Tls13_HKDF_Extract_ex(
    byte * prk,
    const byte * salt,
    word32 saltLen,
    byte * ikm,
    word32 ikmLen,
    int digest,
    void * heap,
    int devId
)

この関数は、TLS v1.3鍵導出のためのRFC 5869 HMACベース抽出拡張鍵導出関数(HKDF)へのアクセスを提供します。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。

Parameters:

  • prk 生成された疑似ランダム鍵。
  • salt ソルト。
  • saltLen ソルトの長さ。
  • ikm 鍵材料の出力へのポインタ。
  • ikmLen 入力鍵材料バッファの長さ。
  • digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
  • heap メモリに使用するヒープヒント。NULLにできます。
  • devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

Example

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 ) {
    // 導出鍵の生成エラー
}

function wc_Tls13_HKDF_Expand_Label_ex

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
)

HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。

Parameters:

  • okm 生成された疑似ランダム鍵 - 出力鍵材料。
  • okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
  • prk ソルト - 疑似ランダム鍵。
  • prkLen ソルトの長さ - 疑似ランダム鍵。
  • protocol TLSプロトコルラベル。
  • protocolLen TLSプロトコルラベルの長さ。
  • info 拡張する情報。
  • infoLen 情報の長さ。
  • digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
  • heap メモリに使用するヒープヒント。NULLにできます。
  • devId 暗号コールバックまたは非同期ハードウェアで使用するID。使用しない場合はINVALID_DEVID(-2)に設定します。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

function wc_Tls13_HKDF_Expand_Label

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
)

HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。

Parameters:

  • okm 生成された疑似ランダム鍵 - 出力鍵材料。
  • okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
  • prk ソルト - 疑似ランダム鍵。
  • prkLen ソルトの長さ - 疑似ランダム鍵。
  • protocol TLSプロトコルラベル。
  • protocolLen TLSプロトコルラベルの長さ。
  • info 拡張する情報。
  • infoLen 情報の長さ。
  • digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

function wc_Tls13_HKDF_Expand_Label_Alloc

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
)

この関数はwc_Tls13_HKDF_Expand_Label()と非常に似ていますが、通常使用されるスタックスペースが十分でない場合にメモリを割り当てます。HMAC、ソルト、ラベル、および情報を使用してデータを拡張します。TLS v1.3は鍵導出のためにこの関数を定義しています。これは、ヒープヒントとデバイス識別子を追加する_exバージョンです。

Parameters:

  • okm 生成された疑似ランダム鍵 - 出力鍵材料。
  • okmLen 生成された疑似ランダム鍵の長さ - 出力鍵材料。
  • prk ソルト - 疑似ランダム鍵。
  • prkLen ソルトの長さ - 疑似ランダム鍵。
  • protocol TLSプロトコルラベル。
  • protocolLen TLSプロトコルラベルの長さ。
  • info 拡張する情報。
  • infoLen 情報の長さ。
  • digest HKDFに使用するハッシュタイプ。有効なタイプは:WC_SHA256、WC_SHA384、またはWC_SHA512。
  • heap メモリに使用するヒープヒント。NULLにできます。

See:

Return:

  • 0 指定された入力で鍵の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 無効なハッシュタイプが指定された場合に返されます(typeパラメータを参照)。
  • MEMORY_E メモリ割り当てエラーがある場合に返されます。
  • HMAC_MIN_KEYLEN_E FIPS実装を使用していて、指定された鍵の長さが最小許容FIPS標準より短い場合に返される可能性があります。

Updated on 2025-12-12 at 03:08:17 +0000