コンテンツにスキップ

アルゴリズム - SRTP KDF

Functions

Name
int wc_SRTP_KDF(const byte * key, word32 keySz, const byte * salt, word32 saltSz, int kdrIdx, const byte * idx, byte * key1, word32 key1Sz, byte * key2, word32 key2Sz, byte * key3, word32 key3Sz)
この関数はSRTP KDFアルゴリズムを使用して鍵を導出します。
int wc_SRTCP_KDF(const byte * key, word32 keySz, const byte * salt, word32 saltSz, int kdrIdx, const byte * idx, byte * key1, word32 key1Sz, byte * key2, word32 key2Sz, byte * key3, word32 key3Sz)
この関数はSRTCP KDFアルゴリズムを使用して鍵を導出します。
int wc_SRTP_KDF_label(const byte * key, word32 keySz, const byte * salt, word32 saltSz, int kdrIdx, const byte * idx, byte label, byte * outKey, word32 outKeySz)
この関数はSRTP KDFアルゴリズムを使用してラベル付きの鍵を導出します。
int wc_SRTCP_KDF_label(const byte * key, word32 keySz, const byte * salt, word32 saltSz, int kdrIdx, const byte * idx, byte label, byte * outKey, word32 outKeySz)
この関数はSRTCP KDFアルゴリズムを使用してラベル付きの鍵を導出します。
int wc_SRTP_KDF_kdr_to_idx(word32 kdr)
この関数はkdr値をSRTP/SRTCP KDF APIで使用するインデックスに変換します。

Functions Documentation

function wc_SRTP_KDF

int wc_SRTP_KDF(
    const byte * key,
    word32 keySz,
    const byte * salt,
    word32 saltSz,
    int kdrIdx,
    const byte * idx,
    byte * key1,
    word32 key1Sz,
    byte * key2,
    word32 key2Sz,
    byte * key3,
    word32 key3Sz
)

この関数はSRTP KDFアルゴリズムを使用して鍵を導出します。

Parameters:

  • key 暗号化で使用する鍵。
  • keySz 鍵のサイズ(バイト単位)。
  • salt ランダムな非秘密値。
  • saltSz ランダム値のサイズ(バイト単位)。
  • kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
  • idx XORするインデックス値。
  • key1 最初の鍵。ラベル値は0x00。
  • key1Sz 最初の鍵のサイズ(バイト単位)。
  • key2 2番目の鍵。ラベル値は0x01。
  • key2Sz 2番目の鍵のサイズ(バイト単位)。
  • key3 3番目の鍵。ラベル値は0x02。
  • key3Sz 3番目の鍵のサイズ(バイト単位)。

See:

Return:

  • 0 鍵の導出に成功した場合に返されます。
  • BAD_FUNC_ARG keyまたはsaltがNULLの場合に返されます
  • BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
  • BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
  • BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
  • MEMORY_E 動的メモリ割り当ての失敗時。

Example

unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[6] = { ... };
unsigned char keyE[16];
unsigned char keyA[20];
unsigned char keyS[14];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;

ret = wc_SRTP_KDF(key, sizeof(key), salt, sizeof(salt), kdrIdx, idx,
    keyE, sizeof(keyE), keyA, sizeof(keyA), keyS, sizeof(keyS));
if (ret != 0) {
    WOLFSSL_MSG("wc_SRTP_KDF failed");
}

function wc_SRTCP_KDF

int wc_SRTCP_KDF(
    const byte * key,
    word32 keySz,
    const byte * salt,
    word32 saltSz,
    int kdrIdx,
    const byte * idx,
    byte * key1,
    word32 key1Sz,
    byte * key2,
    word32 key2Sz,
    byte * key3,
    word32 key3Sz
)

この関数はSRTCP KDFアルゴリズムを使用して鍵を導出します。

Parameters:

  • key 暗号化で使用する鍵。
  • keySz 鍵のサイズ(バイト単位)。
  • salt ランダムな非秘密値。
  • saltSz ランダム値のサイズ(バイト単位)。
  • kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
  • idx XORするインデックス値。
  • key1 最初の鍵。ラベル値は0x00。
  • key1Sz 最初の鍵のサイズ(バイト単位)。
  • key2 2番目の鍵。ラベル値は0x01。
  • key2Sz 2番目の鍵のサイズ(バイト単位)。
  • key3 3番目の鍵。ラベル値は0x02。
  • key3Sz 3番目の鍵のサイズ(バイト単位)。

See:

Return:

  • 0 鍵の導出に成功した場合に返されます。
  • BAD_FUNC_ARG keyまたはsaltがNULLの場合に返されます
  • BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
  • BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
  • BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
  • MEMORY_E 動的メモリ割り当ての失敗時。

Example

unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[4] = { ... };
unsigned char keyE[16];
unsigned char keyA[20];
unsigned char keyS[14];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;

ret = wc_SRTCP_KDF(key, sizeof(key), salt, sizeof(salt), kdrIdx, idx,
    keyE, sizeof(keyE), keyA, sizeof(keyA), keyS, sizeof(keyS));
if (ret != 0) {
    WOLFSSL_MSG("wc_SRTP_KDF failed");
}

function wc_SRTP_KDF_label

int wc_SRTP_KDF_label(
    const byte * key,
    word32 keySz,
    const byte * salt,
    word32 saltSz,
    int kdrIdx,
    const byte * idx,
    byte label,
    byte * outKey,
    word32 outKeySz
)

この関数はSRTP KDFアルゴリズムを使用してラベル付きの鍵を導出します。

Parameters:

  • key 暗号化で使用する鍵。
  • keySz 鍵のサイズ(バイト単位)。
  • salt ランダムな非秘密値。
  • saltSz ランダム値のサイズ(バイト単位)。
  • kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
  • idx XORするインデックス値。
  • label 鍵を導出する際に使用するラベル。
  • outKey 導出された鍵。
  • outKeySz 導出された鍵のサイズ(バイト単位)。

See:

Return:

  • 0 鍵の導出に成功した場合に返されます。
  • BAD_FUNC_ARG key、salt、またはoutKeyがNULLの場合に返されます
  • BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
  • BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
  • BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
  • MEMORY_E 動的メモリ割り当ての失敗時。

Example

unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[6] = { ... };
unsigned char keyE[16];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;

ret = wc_SRTP_KDF_label(key, sizeof(key), salt, sizeof(salt), kdrIdx, idx,
    WC_SRTP_LABEL_ENCRYPTION, keyE, sizeof(keyE));
if (ret != 0) {
    WOLFSSL_MSG("wc_SRTP_KDF failed");
}

function wc_SRTCP_KDF_label

int wc_SRTCP_KDF_label(
    const byte * key,
    word32 keySz,
    const byte * salt,
    word32 saltSz,
    int kdrIdx,
    const byte * idx,
    byte label,
    byte * outKey,
    word32 outKeySz
)

この関数はSRTCP KDFアルゴリズムを使用してラベル付きの鍵を導出します。

Parameters:

  • key 暗号化で使用する鍵。
  • keySz 鍵のサイズ(バイト単位)。
  • salt ランダムな非秘密値。
  • saltSz ランダム値のサイズ(バイト単位)。
  • kdrIdx 鍵導出率。-1の場合kdr = 0、それ以外の場合kdr = 2^kdrIdx。
  • idx XORするインデックス値。
  • label 鍵を導出する際に使用するラベル。
  • outKey 導出された鍵。
  • outKeySz 導出された鍵のサイズ(バイト単位)。

See:

Return:

  • 0 鍵の導出に成功した場合に返されます。
  • BAD_FUNC_ARG key、salt、またはoutKeyがNULLの場合に返されます
  • BAD_FUNC_ARG 鍵の長さが16、24、または32でない場合に返されます。
  • BAD_FUNC_ARG saltSzが14より大きい場合に返されます。
  • BAD_FUNC_ARG kdrIdxが-1未満または24より大きい場合に返されます。
  • MEMORY_E 動的メモリ割り当ての失敗時。

Example

unsigned char key[16] = { ... };
unsigned char salt[14] = { ... };
unsigned char idx[4] = { ... };
unsigned char keyE[16];
int kdrIdx = 0; // インデックスのすべてを使用
int ret;

ret = wc_SRTCP_KDF_label(key, sizeof(key), salt, sizeof(salt), kdrIdx,
    idx, WC_SRTCP_LABEL_ENCRYPTION, keyE, sizeof(keyE));
if (ret != 0) {
    WOLFSSL_MSG("wc_SRTP_KDF failed");
}

function wc_SRTP_KDF_kdr_to_idx

int wc_SRTP_KDF_kdr_to_idx(
    word32 kdr
)

この関数はkdr値をSRTP/SRTCP KDF APIで使用するインデックスに変換します。

Parameters:

  • kdr 変換する鍵導出率。

See:

Return: インデックスとしての鍵導出率。

Example

word32 kdr = 0x00000010;
int kdrIdx;
int ret;

kdrIdx = wc_SRTP_KDF_kdr_to_idx(kdr);

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