コンテンツにスキップ

Algorithms - Poly1305

Functions

Name
int wc_Poly1305SetKey(Poly1305 * poly1305, const byte * key, word32 kySz)
この関数は、Poly1305コンテキスト構造のキーを設定し、ハッシュに初期化します。注:セキュリティを確保するために、WC_POLY1305FINALでメッセージハッシュを生成した後に新しいキーを設定する必要があります。
int wc_Poly1305Update(Poly1305 * poly1305, const byte * m, word32 bytes)
この関数は、Poly1305構造を持つハッシュにメッセージを更新します。
int wc_Poly1305Final(Poly1305 * poly1305, byte * tag)
この関数は入力メッセージのハッシュを計算し、結果をMACに格納します。この後、キーをリセットする必要があります。
int wc_Poly1305_MAC(Poly1305 * ctx, byte * additional, word32 addSz, byte * input, word32 sz, byte * tag, word32 tagSz)
鍵がロードされ、最近のTLS AEADパディング方式を使用してMAC(タグ)を作成する初期化されたPoly1305構造体を取ります。

Functions Documentation

function wc_Poly1305SetKey

int wc_Poly1305SetKey(
    Poly1305 * poly1305,
    const byte * key,
    word32 kySz
)

この関数は、Poly1305コンテキスト構造のキーを設定し、ハッシュに初期化します。注:セキュリティを確保するために、WC_POLY1305FINALでメッセージハッシュを生成した後に新しいキーを設定する必要があります。

Parameters:

  • ctx 初期化するためのPoly1305構造へのポインタ
  • key ハッシュに使用する鍵を含むバッファへのポインタ Example
Poly1305 enc;
byte key[] = { initialize with 32 byte key to use for hashing };
wc_Poly1305SetKey(&enc, key, sizeof(key));

See:

Return:

  • 0 キーを正常に設定し、Poly1305構造の初期化
  • BAD_FUNC_ARG 与えられたキーが32バイトの長さでない場合、またはPoly1305コンテキストがNULLの場合

function wc_Poly1305Update

int wc_Poly1305Update(
    Poly1305 * poly1305,
    const byte * m,
    word32 bytes
)

この関数は、Poly1305構造を持つハッシュにメッセージを更新します。

Parameters:

  • ctx HASHにメッセージを更新するためのPoly1305構造へのポインタ
  • m ハッシュに追加する必要があるメッセージを含むバッファへのポインタ Example
Poly1305 enc;
byte key[] = { }; // initialize with 32 byte key to use for encryption

byte msg[] = { }; // initialize with message to hash
wc_Poly1305SetKey(&enc, key, sizeof(key));

if( wc_Poly1305Update(key, msg, sizeof(msg)) != 0 ) {
    // error updating message to hash
}

See:

Return:

  • 0 ハッシュへのメッセージの更新に成功しました
  • BAD_FUNC_ARG Poly1305構造がNULLの場合に返されます

function wc_Poly1305Final

int wc_Poly1305Final(
    Poly1305 * poly1305,
    byte * tag
)

この関数は入力メッセージのハッシュを計算し、結果をMACに格納します。この後、キーをリセットする必要があります。

Parameters:

  • ctx MACを生成するためのPoly1305構造へのポインタ Example
Poly1305 enc;
byte mac[POLY1305_DIGEST_SIZE]; // space for a 16 byte mac

byte key[] = { }; // initialize with 32 byte key to use for encryption

byte msg[] = { }; // initialize with message to hash
wc_Poly1305SetKey(&enc, key, sizeof(key));
wc_Poly1305Update(key, msg, sizeof(msg));

if ( wc_Poly1305Final(&enc, mac) != 0 ) {
    // error computing final MAC
}

See:

Return:

  • 0 最後のMacの計算に成功した
  • BAD_FUNC_ARG Poly1305構造がNULLの場合に返されます

function wc_Poly1305_MAC

int wc_Poly1305_MAC(
    Poly1305 * ctx,
    byte * additional,
    word32 addSz,
    byte * input,
    word32 sz,
    byte * tag,
    word32 tagSz
)

鍵がロードされ、最近のTLS AEADパディング方式を使用してMAC(タグ)を作成する初期化されたPoly1305構造体を取ります。

Parameters:

  • ctx 初期化されたPoly1305構造物
  • additional 使用する追加データ
  • addSz 追加バッファのサイズ
  • input からタグを作成するための入力バッファ
  • sz 入力バッファのサイズ
  • tag 作成したタグを保持するためのバッファー Example
Poly1305 ctx;
byte key[] = { }; // initialize with 32 byte key to use for hashing
byte additional[] = { }; // initialize with additional data
byte msg[] = { }; // initialize with message
byte tag[16];

wc_Poly1305SetKey(&ctx, key, sizeof(key));
if(wc_Poly1305_MAC(&ctx, additional, sizeof(additional), (byte*)msg,
sizeof(msg), tag, sizeof(tag)) != 0)
{
    // Handle the error
}

See:

Return:

  • 0 成功
  • BAD_FUNC_ARG CTX、INPUT、またはTAGがNULLの場合、または追加がNULLで、ADDSZが0より大きい場合、またはTAGSZがWC_POLY1305_MAC_SZより小さい場合に返されます。

Updated on 2024-11-21 at 02:35:59 +0000