コンテンツにスキップ

ascon.h

Functions

Name
int wc_AsconHash256_Init(wc_AsconHash256 * a)
この関数は、ハッシュ化のためにASCONコンテキストを初期化します。
int wc_AsconHash256_Update(wc_AsconHash256 * a, const byte * data, word32 dataSz)
この関数は、入力データでASCONハッシュを更新します。
int wc_AsconHash256_Final(wc_AsconHash256 * a, byte * hash)
この関数は、ASCONハッシュを完了し、出力を生成します。
wc_AsconAEAD128 * wc_AsconAEAD128_New(void )
この関数は、新しいAscon AEADコンテキストを割り当てて初期化します。
void wc_AsconAEAD128_Free(wc_AsconAEAD128 * a)
この関数は、Ascon AEADコンテキストに関連付けられたリソースを解放します。
int wc_AsconAEAD128_Init(wc_AsconAEAD128 * a)
この関数は、Ascon AEADコンテキストを初期化します。
void wc_AsconAEAD128_Clear(wc_AsconAEAD128 * a)
この関数は、Ascon AEADコンテキストを非初期化します。コンテキストは解放しません。
int wc_AsconAEAD128_SetKey(wc_AsconAEAD128 * a, const byte * key)
この関数は、Ascon AEADコンテキストの鍵を設定します。
int wc_AsconAEAD128_SetNonce(wc_AsconAEAD128 * a, const byte * nonce)
この関数は、Ascon AEADコンテキストのnonceを設定します。
int wc_AsconAEAD128_SetAD(wc_AsconAEAD128 * a, const byte * ad, word32 adSz)
この関数は、Ascon AEADコンテキストの関連データを設定します。
int wc_AsconAEAD128_EncryptUpdate(wc_AsconAEAD128 * a, byte * out, const byte * in, word32 inSz)
この関数は、Ascon AEADを使用して平文メッセージを暗号化します。出力はoutバッファに格納されます。出力の長さは入力の長さと等しくなります。
int wc_AsconAEAD128_EncryptFinal(wc_AsconAEAD128 * a, byte * tag)
この関数は、Ascon AEADを使用した暗号化プロセスを完了し、認証タグを生成します。
int wc_AsconAEAD128_DecryptUpdate(wc_AsconAEAD128 * a, byte * out, const byte * in, word32 inSz)
この関数は、Ascon AEADを使用した復号プロセスを更新します。出力はoutバッファに格納されます。出力の長さは入力の長さと等しくなります。
int wc_AsconAEAD128_DecryptFinal(wc_AsconAEAD128 * a, const byte * tag)
この関数は、Ascon AEADを使用した復号プロセスを完了し、認証タグを検証します。

Functions Documentation

function wc_AsconHash256_Init

int wc_AsconHash256_Init(
    wc_AsconHash256 * a
)

この関数は、ハッシュ化のためにASCONコンテキストを初期化します。

Parameters:

  • a 初期化するASCONコンテキストへのポインタ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストポインタがNULLの場合。

Example

wc_AsconHash256 a;
byte data[] = {0x01, 0x02, 0x03};
byte hash[ASCON_HASH256_SZ];

if (wc_AsconHash256_Init(&a) != 0)
    // エラーを処理
if (wc_AsconHash256_Update(&ctx, data, sizeof(data)) != 0)
    // エラーを処理
if (wc_AsconHash256_Final(&ctx, hash, sizeof(hash)) != 0)
    // エラーを処理
// hashに最終ハッシュが含まれます

function wc_AsconHash256_Update

int wc_AsconHash256_Update(
    wc_AsconHash256 * a,
    const byte * data,
    word32 dataSz
)

この関数は、入力データでASCONハッシュを更新します。

Parameters:

  • ctx ASCONコンテキストへのポインタ。
  • in 入力データへのポインタ。
  • inSz 入力データのサイズ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは入力ポインタがNULLの場合。

Example

wc_AsconHash256 a;
byte data[] = {0x01, 0x02, 0x03};
byte hash[ASCON_HASH256_SZ];

if (wc_AsconHash256_Init(&a) != 0)
    // エラーを処理
if (wc_AsconHash256_Update(&ctx, data, sizeof(data)) != 0)
    // エラーを処理
if (wc_AsconHash256_Final(&ctx, hash, sizeof(hash)) != 0)
    // エラーを処理
// hashに最終ハッシュが含まれます

function wc_AsconHash256_Final

int wc_AsconHash256_Final(
    wc_AsconHash256 * a,
    byte * hash
)

この関数は、ASCONハッシュを完了し、出力を生成します。

Parameters:

  • ctx ASCONコンテキストへのポインタ。
  • out 出力バッファへのポインタ。
  • outSz 出力バッファのサイズ、少なくともASCON_HASH256_SZである必要があります。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合。

Example

wc_AsconHash256 a;
byte data[] = {0x01, 0x02, 0x03};
byte hash[ASCON_HASH256_SZ];

if (wc_AsconHash256_Init(&a) != 0)
    // エラーを処理
if (wc_AsconHash256_Update(&ctx, data, sizeof(data)) != 0)
    // エラーを処理
if (wc_AsconHash256_Final(&ctx, hash, sizeof(hash)) != 0)
    // エラーを処理
// hashに最終ハッシュが含まれます

function wc_AsconAEAD128_New

wc_AsconAEAD128 * wc_AsconAEAD128_New(
    void 
)

この関数は、新しいAscon AEADコンテキストを割り当てて初期化します。

See: wc_AsconAEAD128_Free

Return:

  • pointer 新しく割り当てられたAscon AEADコンテキストへのポインタ
  • NULL 失敗時。

Example

wc_AsconAEAD128* a = wc_AsconAEAD128_New();
if (a == NULL) {
    // 割り当てエラーを処理
}
wc_AsconAEAD128_Free(a);

function wc_AsconAEAD128_Free

void wc_AsconAEAD128_Free(
    wc_AsconAEAD128 * a
)

この関数は、Ascon AEADコンテキストに関連付けられたリソースを解放します。

Parameters:

  • a 解放するAscon AEADコンテキストへのポインタ。

See: wc_AsconAEAD128_New

Example

wc_AsconAEAD128* a = wc_AsconAEAD128_New();
if (a == NULL) {
    // 割り当てエラーを処理
}
// コンテキストを使用
wc_AsconAEAD128_Free(a);

function wc_AsconAEAD128_Init

int wc_AsconAEAD128_Init(
    wc_AsconAEAD128 * a
)

この関数は、Ascon AEADコンテキストを初期化します。

Parameters:

  • a 初期化するAscon AEADコンテキストへのポインタ。

See:

  • wc_AsconAeadEncrypt
  • wc_AsconAeadDecrypt

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合。

Example

AsconAead a;

if (wc_AsconAEAD128_Init(&a) != 0)
    // エラーを処理

function wc_AsconAEAD128_Clear

void wc_AsconAEAD128_Clear(
    wc_AsconAEAD128 * a
)

この関数は、Ascon AEADコンテキストを非初期化します。コンテキストは解放しません。

Parameters:

  • a 非初期化するAscon AEADコンテキストへのポインタ。

See:

  • wc_AsconAeadEncrypt
  • wc_AsconAeadDecrypt

Example

AsconAead a;

if (wc_AsconAEAD128_Init(&a) != 0)
    // エラーを処理
wc_AsconAEAD128_Clear(&a);

function wc_AsconAEAD128_SetKey

int wc_AsconAEAD128_SetKey(
    wc_AsconAEAD128 * a,
    const byte * key
)

この関数は、Ascon AEADコンテキストの鍵を設定します。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • key ASCON_AEAD128_KEY_SZの長さの鍵バッファへのポインタ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは鍵ポインタがNULLの場合。
  • BAD_STATE_E 鍵が既に設定されている場合。

Example

wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };

if (wc_AsconAEAD128_Init(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
    // エラーを処理

function wc_AsconAEAD128_SetNonce

int wc_AsconAEAD128_SetNonce(
    wc_AsconAEAD128 * a,
    const byte * nonce
)

この関数は、Ascon AEADコンテキストのnonceを設定します。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • nonce ASCON_AEAD128_NONCE_SZの長さのnonceバッファへのポインタ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたはnonceポインタがNULLの場合。
  • BAD_STATE_E nonceが既に設定されている場合。

Example

wc_AsconAEAD128 a;
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };

if (wc_AsconAEAD128_Init(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
    // エラーを処理

function wc_AsconAEAD128_SetAD

int wc_AsconAEAD128_SetAD(
    wc_AsconAEAD128 * a,
    const byte * ad,
    word32 adSz
)

この関数は、Ascon AEADコンテキストの関連データを設定します。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • ad 関連データバッファへのポインタ。
  • adSz 関連データバッファのサイズ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは関連データポインタがNULLの場合。
  • BAD_STATE_E 鍵またはnonceが設定されていない場合。

Example

wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte ad[] = { ... };

if (wc_AsconAEAD128_Init(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
    // エラーを処理

function wc_AsconAEAD128_EncryptUpdate

int wc_AsconAEAD128_EncryptUpdate(
    wc_AsconAEAD128 * a,
    byte * out,
    const byte * in,
    word32 inSz
)

この関数は、Ascon AEADを使用して平文メッセージを暗号化します。出力はoutバッファに格納されます。出力の長さは入力の長さと等しくなります。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • out 暗号文を格納する出力バッファへのポインタ。
  • in 平文メッセージを含む入力バッファへのポインタ。
  • inSz 入力バッファの長さ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合、または入力サイズが0より大きいのに入力がNULLの場合。
  • BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に復号に使用された場合。

Example

wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte plaintext[PLAIN_TEXT_SIZE] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };

if (wc_AsconAeadInit(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_EncryptUpdate(&a, ciphertext, plaintext,
                                  sizeof(plaintext)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_EncryptFinal(&a, tag) != 0)
    // エラーを処理

function wc_AsconAEAD128_EncryptFinal

int wc_AsconAEAD128_EncryptFinal(
    wc_AsconAEAD128 * a,
    byte * tag
)

この関数は、Ascon AEADを使用した暗号化プロセスを完了し、認証タグを生成します。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • tag 認証タグを格納する出力バッファへのポインタ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合、または入力サイズが0より大きいのに入力がNULLの場合。
  • BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に復号に使用された場合。

Example

wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte plaintext[PLAIN_TEXT_SIZE] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };

if (wc_AsconAeadInit(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_EncryptUpdate(&a, ciphertext, plaintext,
                                  sizeof(plaintext)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_EncryptFinal(&a, tag) != 0)
    // エラーを処理

function wc_AsconAEAD128_DecryptUpdate

int wc_AsconAEAD128_DecryptUpdate(
    wc_AsconAEAD128 * a,
    byte * out,
    const byte * in,
    word32 inSz
)

この関数は、Ascon AEADを使用した復号プロセスを更新します。出力はoutバッファに格納されます。出力の長さは入力の長さと等しくなります。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • out 平文を格納する出力バッファへのポインタ。
  • in 暗号文メッセージを含む入力バッファへのポインタ。
  • inSz 入力バッファの長さ。

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたは出力ポインタがNULLの場合、または入力サイズが0より大きいのに入力がNULLの場合。
  • BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に暗号化に使用された場合。

Example

wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE] = { ... };
byte plaintext[PLAIN_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };

if (wc_AsconAeadInit(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_DecryptUpdate(&a, plaintext, ciphertext,
                                  sizeof(ciphertext)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_DecryptFinal(&a, tag) != 0)
    // エラーを処理

function wc_AsconAEAD128_DecryptFinal

int wc_AsconAEAD128_DecryptFinal(
    wc_AsconAEAD128 * a,
    const byte * tag
)

この関数は、Ascon AEADを使用した復号プロセスを完了し、認証タグを検証します。

Parameters:

  • a 初期化されたAscon AEADコンテキストへのポインタ。
  • tag 検証する認証タグを含むバッファへのポインタ

See:

Return:

  • 0 成功時。
  • BAD_FUNC_ARG コンテキストまたはタグポインタがNULLの場合。
  • BAD_STATE_E 鍵、nonce、または追加データが設定されていない場合、またはコンテキストが以前に暗号化に使用された場合。
  • ASCON_AUTH_E 認証タグが一致しない場合。

Example

wc_AsconAEAD128 a;
byte key[ASCON_AEAD128_KEY_SZ] = { ... };
byte nonce[ASCON_AEAD128_NONCE_SZ] = { ... };
byte ciphertext[CIPHER_TEXT_SIZE] = { ... };
byte plaintext[PLAIN_TEXT_SIZE];
byte tag[ASCON_AEAD128_TAG_SZ] = { ... };

if (wc_AsconAeadInit(&a) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetKey(&a, key) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetNonce(&a, nonce) != 0)
    // エラーを処理
if (wc_AsconAEAD128_SetAD(&a, ad, sizeof(ad)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_DecryptUpdate(&a, plaintext, ciphertext,
                                  sizeof(ciphertext)) != 0)
    // エラーを処理
if (wc_AsconAEAD128_DecryptFinal(&a, tag) != 0)
    // エラーを処理

Source code


int wc_AsconHash256_Init(wc_AsconHash256* a);

int wc_AsconHash256_Update(wc_AsconHash256* a, const byte* data, word32 dataSz);

int wc_AsconHash256_Final(wc_AsconHash256* a, byte* hash);

wc_AsconAEAD128* wc_AsconAEAD128_New(void);

void wc_AsconAEAD128_Free(wc_AsconAEAD128 *a);


int wc_AsconAEAD128_Init(wc_AsconAEAD128* a);

void wc_AsconAEAD128_Clear(wc_AsconAEAD128 *a);

int wc_AsconAEAD128_SetKey(wc_AsconAEAD128* a, const byte* key);

int wc_AsconAEAD128_SetNonce(wc_AsconAEAD128* a, const byte* nonce);

int wc_AsconAEAD128_SetAD(wc_AsconAEAD128* a, const byte* ad, word32 adSz);

int wc_AsconAEAD128_EncryptUpdate(wc_AsconAEAD128* a, byte* out, const byte* in,
                                  word32 inSz);

int wc_AsconAEAD128_EncryptFinal(wc_AsconAEAD128* a, byte* tag);

int wc_AsconAEAD128_DecryptUpdate(wc_AsconAEAD128* a, byte* out, const byte* in,
                                  word32 inSz);

int wc_AsconAEAD128_DecryptFinal(wc_AsconAEAD128* a, const byte* tag);

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