コンテンツにスキップ

signature.h

Functions

Name
int wc_SignatureGetSize(enum wc_SignatureType sig_type, const void * key, word32 key_len)
この関数は、結果の署名の最大サイズを返します。
int wc_SignatureVerify(enum wc_HashType hash_type, enum wc_SignatureType sig_type, const byte * data, word32 data_len, const byte * sig, word32 sig_len, const void * key, word32 key_len)
この関数は、データをハッシュ化し、結果のハッシュとキーを使用して署名を検証することで、署名を検証します。
int wc_SignatureGenerate(enum wc_HashType hash_type, enum wc_SignatureType sig_type, const byte * data, word32 data_len, byte * sig, word32 * sig_len, const void * key, word32 key_len, WC_RNG * rng)
この関数は、キーを使用してデータから署名を生成します。最初にデータのハッシュを作成し、次にキーを使用してハッシュに署名します。

Functions Documentation

function wc_SignatureGetSize

int wc_SignatureGetSize(
    enum wc_SignatureType sig_type,
    const void * key,
    word32 key_len
)

この関数は、結果の署名の最大サイズを返します。

Parameters:

  • sig_type WC_SIGNATURE_TYPE_ECCやWC_SIGNATURE_TYPE_RSAなどの署名タイプの列挙値。
  • key ecc_keyやRsaKeyなどのキー構造体へのポインタ。
  • key_len キー構造体のサイズ。

See:

Return: sig_typeがサポートされていない場合、SIG_TYPE_Eを返します。sig_typeが無効な場合、BAD_FUNC_ARGを返します。正の戻り値は、署名の最大サイズを示します。

Example

// 署名の長さを取得
enum wc_SignatureType sig_type = WC_SIGNATURE_TYPE_ECC;
ecc_key eccKey;
word32 sigLen;
wc_ecc_init(&eccKey);
sigLen = wc_SignatureGetSize(sig_type, &eccKey, sizeof(eccKey));
if (sigLen > 0) {
    // 成功
}

function wc_SignatureVerify

int wc_SignatureVerify(
    enum wc_HashType hash_type,
    enum wc_SignatureType sig_type,
    const byte * data,
    word32 data_len,
    const byte * sig,
    word32 sig_len,
    const void * key,
    word32 key_len
)

この関数は、データをハッシュ化し、結果のハッシュとキーを使用して署名を検証することで、署名を検証します。

Parameters:

  • hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ。
  • sig_type WC_SIGNATURE_TYPE_ECCやWC_SIGNATURE_TYPE_RSAなどの署名タイプの列挙値。
  • data ハッシュ化するデータを含むバッファへのポインタ。
  • data_len データバッファの長さ。
  • sig 署名を出力するバッファへのポインタ。
  • sig_len 署名出力バッファの長さ。
  • key ecc_keyやRsaKeyなどのキー構造体へのポインタ。
  • key_len キー構造体のサイズ。

See:

Return:

  • 0 成功
  • SIG_TYPE_E -231、署名タイプが有効化されていない/利用できない
  • BAD_FUNC_ARG -173、不正な関数引数が提供された
  • BUFFER_E -132、出力バッファが小さすぎるか、入力が大きすぎる。

Example

int ret;
ecc_key eccKey;

// 公開鍵をインポート
wc_ecc_init(&eccKey);
ret = wc_ecc_import_x963(eccPubKeyBuf, eccPubKeyLen, &eccKey);
// 公開鍵を使用して署名検証を実行
ret = wc_SignatureVerify(
WC_HASH_TYPE_SHA256, WC_SIGNATURE_TYPE_ECC,
fileBuf, fileLen,
sigBuf, sigLen,
&eccKey, sizeof(eccKey));
printf("署名検証: %s
(%d)\n", (ret == 0) ? "合格" : "不合格", ret);
wc_ecc_free(&eccKey);

function wc_SignatureGenerate

int wc_SignatureGenerate(
    enum wc_HashType hash_type,
    enum wc_SignatureType sig_type,
    const byte * data,
    word32 data_len,
    byte * sig,
    word32 * sig_len,
    const void * key,
    word32 key_len,
    WC_RNG * rng
)

この関数は、キーを使用してデータから署名を生成します。最初にデータのハッシュを作成し、次にキーを使用してハッシュに署名します。

Parameters:

  • hash_type "WC_HASH_TYPE_SHA256"などの"enum wc_HashType"からのハッシュタイプ。
  • sig_type WC_SIGNATURE_TYPE_ECCやWC_SIGNATURE_TYPE_RSAなどの署名タイプの列挙値。
  • data ハッシュ化するデータを含むバッファへのポインタ。
  • data_len データバッファの長さ。
  • sig 署名を出力するバッファへのポインタ。
  • sig_len 署名出力バッファの長さ。
  • key ecc_keyやRsaKeyなどのキー構造体へのポインタ。
  • key_len キー構造体のサイズ。
  • rng 初期化されたRNG構造体へのポインタ。

See:

Return:

  • 0 成功
  • SIG_TYPE_E -231、署名タイプが有効化されていない/利用できない
  • BAD_FUNC_ARG -173、不正な関数引数が提供された
  • BUFFER_E -132、出力バッファが小さすぎるか、入力が大きすぎる。

Example

int ret;
WC_RNG rng;
ecc_key eccKey;

wc_InitRng(&rng);
wc_ecc_init(&eccKey);

// キーを生成
ret = wc_ecc_make_key(&rng, 32, &eccKey);

// 署名の長さを取得してバッファを割り当て
sigLen = wc_SignatureGetSize(sig_type, &eccKey, sizeof(eccKey));
sigBuf = malloc(sigLen);

// 公開鍵を使用して署名検証を実行
ret = wc_SignatureGenerate(
    WC_HASH_TYPE_SHA256, WC_SIGNATURE_TYPE_ECC,
    fileBuf, fileLen,
    sigBuf, &sigLen,
    &eccKey, sizeof(eccKey),
    &rng);
printf("署名生成: %s
(%d)\n", (ret == 0) ? "合格" : "不合格", ret);

free(sigBuf);
wc_ecc_free(&eccKey);
wc_FreeRng(&rng);

Source code


int wc_SignatureGetSize(enum wc_SignatureType sig_type,
    const void* key, word32 key_len);

int wc_SignatureVerify(
    enum wc_HashType hash_type, enum wc_SignatureType sig_type,
    const byte* data, word32 data_len,
    const byte* sig, word32 sig_len,
    const void* key, word32 key_len);

int wc_SignatureGenerate(
    enum wc_HashType hash_type, enum wc_SignatureType sig_type,
    const byte* data, word32 data_len,
    byte* sig, word32 *sig_len,
    const void* key, word32 key_len,
    WC_RNG* rng);

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