コンテンツにスキップ

アルゴリズム - SipHash

Functions

Name
int wc_InitSipHash(SipHash * siphash, const unsigned char * key, unsigned char outSz)
この関数は、MACサイズに対するキーを使用してSipHashを初期化します。
int wc_SipHashUpdate(SipHash * siphash, const unsigned char * in, word32 inSz)
長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
int wc_SipHashFinal(SipHash * siphash, unsigned char * out, unsigned char outSz)
データのMAC処理を完了します。結果はoutに格納されます。
int wc_SipHash(const unsigned char * key, const unsigned char * in, word32 inSz, unsigned char * out, unsigned char outSz)
この関数は、キーに基づいてMACを計算するために、SipHashを使用してデータをワンショットで処理します。

Functions Documentation

function wc_InitSipHash

int wc_InitSipHash(
    SipHash * siphash,
    const unsigned char * key,
    unsigned char outSz
)

この関数は、MACサイズに対するキーを使用してSipHashを初期化します。

Parameters:

  • siphash MACに使用するSipHash構造体へのポインタ
  • key 16バイト配列へのポインタ
  • outSz MACとして出力するバイト数

See:

Return:

  • 0 初期化に成功した場合に返されます
  • BAD_FUNC_ARG sipHashまたはkeyがNULLの場合に返されます
  • BAD_FUNC_ARG outSzが8でも16でもない場合に返されます

Example

SipHash siphash[1];
unsigned char key[16] = { ... };
byte macSz = 8; // 8または16

if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
    WOLFSSL_MSG("wc_InitSipHash failed");
}
else if ((ret = wc_SipHashUpdate(siphash, data, len)) != 0) {
    WOLFSSL_MSG("wc_SipHashUpdate failed");
}
else if ((ret = wc_SipHashFinal(siphash, mac, macSz)) != 0) {
    WOLFSSL_MSG("wc_SipHashFinal failed");
}

function wc_SipHashUpdate

int wc_SipHashUpdate(
    SipHash * siphash,
    const unsigned char * in,
    word32 inSz
)

長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。

Parameters:

  • siphash MACに使用するSipHash構造体へのポインタ
  • in MACするデータ
  • inSz MACするデータのサイズ

See:

Return:

  • 0 MACへのデータ追加に成功した場合に返されます
  • BAD_FUNC_ARG siphashがNULLの場合に返されます
  • BAD_FUNC_ARG inがNULLでinSzがゼロでない場合に返されます

Example

SipHash siphash[1];
byte data[] = { MACするデータ };
word32 len = sizeof(data);

if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
    WOLFSSL_MSG("wc_InitSipHash failed");
}
else if ((ret = wc_SipHashUpdate(siphash, data, len)) != 0) {
    WOLFSSL_MSG("wc_SipHashUpdate failed");
}
else if ((ret = wc_SipHashFinal(siphash, mac, macSz)) != 0) {
    WOLFSSL_MSG("wc_SipHashFinal failed");
}

function wc_SipHashFinal

int wc_SipHashFinal(
    SipHash * siphash,
    unsigned char * out,
    unsigned char outSz
)

データのMAC処理を完了します。結果はoutに格納されます。

Parameters:

  • siphash MACに使用するSipHash構造体へのポインタ
  • out MAC値を保持するバイト配列
  • outSz MACとして出力するバイト数

See:

Return:

  • 0 完了に成功した場合に返されます。
  • BAD_FUNC_ARG siphashまたはoutがNULLの場合に返されます
  • BAD_FUNC_ARG outSzが初期化された値と同じでない場合に返されます

Example

SipHash siphash[1];
byte mac[8] = { ... }; // 8または16バイト
byte macSz = sizeof(mac);

if ((ret = wc_InitSipHash(siphash, key, macSz)) != 0) {
    WOLFSSL_MSG("wc_InitSipHash failed");
}
else if ((ret = wc_SipHashUpdate(siphash, data, len)) != 0) {
    WOLFSSL_MSG("wc_SipHashUpdate failed");
}
else if ((ret = wc_SipHashFinal(siphash, mac, macSz)) != 0) {
    WOLFSSL_MSG("wc_SipHashFinal failed");
}

function wc_SipHash

int wc_SipHash(
    const unsigned char * key,
    const unsigned char * in,
    word32 inSz,
    unsigned char * out,
    unsigned char outSz
)

この関数は、キーに基づいてMACを計算するために、SipHashを使用してデータをワンショットで処理します。

Parameters:

  • key 16バイト配列へのポインタ
  • in MACするデータ
  • inSz MACするデータのサイズ
  • out MAC値を保持するバイト配列
  • outSz MACとして出力するバイト数

See:

Return:

  • 0 MACに成功した場合に返されます
  • BAD_FUNC_ARG keyまたはoutがNULLの場合に返されます
  • BAD_FUNC_ARG inがNULLでinSzがゼロでない場合に返されます
  • BAD_FUNC_ARG outSzが8でも16でもない場合に返されます

Example

unsigned char key[16] = { ... };
byte data[] = { MACするデータ };
word32 len = sizeof(data);
byte mac[8] = { ... }; // 8または16バイト
byte macSz = sizeof(mac);

if ((ret = wc_SipHash(key, data, len, mac, macSz)) != 0) {
    WOLFSSL_MSG("wc_SipHash failed");
}

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