Signature API
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などのキー構造へのポインタ。 Example
// Get signature length
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) {
// Success
}
See:
Return: Returns sig_type_e sig_typeがサポートされていない場合sig_typeが無効な場合はbad_func_argを返します。正の戻り値は、署名の最大サイズを示します。
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などのキー構造へのポインタ。 Example
int ret;
ecc_key eccKey;
// Import the public key
wc_ecc_init(&eccKey);
ret = wc_ecc_import_x963(eccPubKeyBuf, eccPubKeyLen, &eccKey);
// Perform signature verification using public key
ret = wc_SignatureVerify(
WC_HASH_TYPE_SHA256, WC_SIGNATURE_TYPE_ECC,
fileBuf, fileLen,
sigBuf, sigLen,
&eccKey, sizeof(eccKey));
printf("Signature Verification: %s
(%d)\n", (ret == 0) ? "Pass" : "Fail", ret);
wc_ecc_free(&eccKey);
See:
Return:
- 0 成功
- SIG_TYPE_E -231、署名タイプが有効/利用可能です
- BAD_FUNC_ARG -173、関数の不良引数が提供されています
- BUFFER_E -132、出力バッファが小さすぎたり入力が大きすぎたりします。
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 キー構造のサイズ Example
int ret;
WC_RNG rng;
ecc_key eccKey;
wc_InitRng(&rng);
wc_ecc_init(&eccKey);
// Generate key
ret = wc_ecc_make_key(&rng, 32, &eccKey);
// Get signature length and allocate buffer
sigLen = wc_SignatureGetSize(sig_type, &eccKey, sizeof(eccKey));
sigBuf = malloc(sigLen);
// Perform signature verification using public key
ret = wc_SignatureGenerate(
WC_HASH_TYPE_SHA256, WC_SIGNATURE_TYPE_ECC,
fileBuf, fileLen,
sigBuf, &sigLen,
&eccKey, sizeof(eccKey),
&rng);
printf("Signature Generation: %s
(%d)\n", (ret == 0) ? "Pass" : "Fail", ret);
free(sigBuf);
wc_ecc_free(&eccKey);
wc_FreeRng(&rng);
See:
Return:
- 0 成功
- SIG_TYPE_E -231、署名タイプが有効/利用可能です
- BAD_FUNC_ARG -173、関数の不良引数が提供されています
- BUFFER_E -132、出力バッファが小さすぎたり入力が大きすぎたりします。
Updated on 2024-12-26 at 02:26:53 +0000