コンテンツにスキップ

ed25519.h

Functions

Name
int wc_ed25519_make_public(ed25519_key * key, unsigned char * pubKey, word32 pubKeySz)
この関数は、ed25519_keyオブジェクトに格納された秘密鍵からEd25519公開鍵を生成します。公開鍵をバッファpubKeyに格納します。
int wc_ed25519_make_key(WC_RNG * rng, int keysize, ed25519_key * key)
この関数は新しいEd25519キーを生成し、それをkeyに格納します。
int wc_ed25519_sign_msg(const byte * in, word32 inlen, byte * out, word32 * outlen, ed25519_key * key)
この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージに署名します。
int wc_ed25519ctx_sign_msg(const byte * in, word32 inlen, byte * out, word32 * outlen, ed25519_key * key, const byte * context, byte contextLen)
この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージに署名します。コンテキストは署名されるデータの一部です。
int wc_ed25519ph_sign_hash(const byte * hash, word32 hashLen, byte * out, word32 * outLen, ed25519_key * key, const byte * context, byte contextLen)
この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージダイジェストに署名します。コンテキストは署名されるデータの一部として含まれます。メッセージは署名計算前に事前ハッシュ化されます。
int wc_ed25519ph_sign_msg(const byte * in, word32 inlen, byte * out, word32 * outlen, ed25519_key * key, const byte * context, byte contextLen)
この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージに署名します。コンテキストは署名されるデータの一部として含まれます。メッセージは署名計算前に事前ハッシュ化されます。
int wc_ed25519_verify_msg(const byte * sig, word32 siglen, const byte * msg, word32 msgLen, int * ret, ed25519_key * key)
この関数は、真正性を保証するためにメッセージのEd25519署名を検証します。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
int wc_ed25519ctx_verify_msg(const byte * sig, word32 siglen, const byte * msg, word32 msgLen, int * ret, ed25519_key * key, const byte * context, byte contextLen)
この関数は、真正性を保証するためにメッセージのEd25519署名を検証します。コンテキストは検証されるデータの一部として含まれます。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
int wc_ed25519ph_verify_hash(const byte * sig, word32 siglen, const byte * hash, word32 hashLen, int * ret, ed25519_key * key, const byte * context, byte contextLen)
この関数は、真正性を保証するためにメッセージのダイジェストのEd25519署名を検証します。コンテキストは検証されるデータの一部として含まれます。ハッシュは署名計算前の事前ハッシュ化されたメッセージです。メッセージダイジェストの作成に使用されるハッシュアルゴリズムはSHA-512である必要があります。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
int wc_ed25519ph_verify_msg(const byte * sig, word32 siglen, const byte * msg, word32 msgLen, int * ret, ed25519_key * key, const byte * context, byte contextLen)
この関数は、真正性を保証するためにメッセージのEd25519署名を検証します。コンテキストは検証されるデータの一部として含まれます。メッセージは検証前に事前ハッシュ化されます。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。
int wc_ed25519_init(ed25519_key * key)
この関数は、メッセージ検証での将来の使用のためにed25519_keyオブジェクトを初期化します。
void wc_ed25519_free(ed25519_key * key)
この関数は、使用後にEd25519オブジェクトを解放します。
int wc_ed25519_import_public(const byte * in, word32 inLen, ed25519_key * key)
この関数は、公開鍵を含むバッファから公開ed25519_keyをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。公開鍵は、秘密鍵が存在する場合にそれと一致するかチェックされます。
int wc_ed25519_import_public_ex(const byte * in, word32 inLen, ed25519_key * key, int trusted)
この関数は、公開鍵を含むバッファから公開ed25519_keyをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。信頼されていない場合、秘密鍵が存在するときに公開鍵が秘密鍵と一致するかチェックします。
int wc_ed25519_import_private_only(const byte * priv, word32 privSz, ed25519_key * key)
この関数は、バッファからEd25519秘密鍵のみをインポートします。
int wc_ed25519_import_private_key(const byte * priv, word32 privSz, const byte * pub, word32 pubSz, ed25519_key * key)
この関数は、一対のバッファから公開/秘密Ed25519鍵ペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。公開鍵は信頼されていないと想定され、秘密鍵に対してチェックされます。
int wc_ed25519_import_private_key_ex(const byte * priv, word32 privSz, const byte * pub, word32 pubSz, ed25519_key * key, int trusted)
この関数は、一対のバッファから公開/秘密Ed25519鍵ペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。信頼されていない場合、公開鍵が秘密鍵に対してチェックされます。
int wc_ed25519_export_public(ed25519_key * key, byte * out, word32 * outLen)
この関数は、ed25519_key構造体から公開鍵をエクスポートします。公開鍵をバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。
int wc_ed25519_export_private_only(ed25519_key * key, byte * out, word32 * outLen)
この関数は、ed25519_key構造体から秘密鍵のみをエクスポートします。秘密鍵をバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。
int wc_ed25519_export_private(ed25519_key * key, byte * out, word32 * outLen)
この関数は、ed25519_key構造体から鍵ペアをエクスポートします。鍵ペアをバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。
int wc_ed25519_export_key(ed25519_key * key, byte * priv, word32 * privSz, byte * pub, word32 * pubSz)
この関数は、ed25519_key構造体から秘密鍵と公開鍵を個別にエクスポートします。秘密鍵をバッファprivに格納し、このバッファに書き込まれたバイト数をprivSzに設定します。公開鍵をバッファpubに格納し、このバッファに書き込まれたバイト数をpubSzに設定します。
int wc_ed25519_check_key(ed25519_key * key)
この関数は、ed25519_key構造体内の公開鍵が秘密鍵と一致するかチェックします。
int wc_ed25519_size(ed25519_key * key)
この関数は、Ed25519のサイズ(32バイト)を返します。
int wc_ed25519_priv_size(ed25519_key * key)
この関数は、秘密鍵のサイズ(秘密 + 公開)をバイト単位で返します。
int wc_ed25519_pub_size(ed25519_key * key)
この関数は、圧縮鍵のサイズをバイト単位で返します(公開鍵)。
int wc_ed25519_sig_size(ed25519_key * key)
この関数は、Ed25519署名のサイズ(バイト単位で64)を返します。

Functions Documentation

function wc_ed25519_make_public

int wc_ed25519_make_public(
    ed25519_key * key,
    unsigned char * pubKey,
    word32 pubKeySz
)

この関数は、ed25519_keyオブジェクトに格納された秘密鍵からEd25519公開鍵を生成します。公開鍵をバッファpubKeyに格納します。

Parameters:

  • key キーを生成するed25519_keyへのポインタ。
  • pubKey 公開鍵を格納するバッファへのポインタ。
  • pubKeySz 公開鍵のサイズ。ED25519_PUB_KEY_SIZEである必要があります。

See:

Return:

  • 0 公開鍵の作成に成功した場合に返されます。
  • BAD_FUNC_ARG keyまたはpubKeyがNULLと評価された場合、または指定されたキーサイズが32バイトでない場合に返されます(Ed25519は32バイトのキーを持ちます)。
  • ECC_PRIV_KEY_E ed25519_keyオブジェクトに秘密鍵が含まれていない場合に返されます。
  • MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。

Example

int ret;

ed25519_key key;
byte priv[] = { 32バイトの秘密鍵で初期化 };
byte pub[32];
word32 pubSz = sizeof(pub);

wc_ed25519_init(&key);
wc_ed25519_import_private_only(priv, sizeof(priv), &key);
ret = wc_ed25519_make_public(&key, pub, &pubSz);
if (ret != 0) {
    // 公開鍵の作成エラー
}

function wc_ed25519_make_key

int wc_ed25519_make_key(
    WC_RNG * rng,
    int keysize,
    ed25519_key * key
)

この関数は新しいEd25519キーを生成し、それをkeyに格納します。

Parameters:

  • rng キーを生成するために使用する初期化済みRNGオブジェクトへのポインタ。
  • keysize 生成するキーの長さ。Ed25519の場合は常に32である必要があります。
  • key キーを生成するed25519_keyへのポインタ。

See: wc_ed25519_init

Return:

  • 0 ed25519_keyの作成に成功した場合に返されます。
  • BAD_FUNC_ARG rngまたはkeyがNULLと評価された場合、または指定されたキーサイズが32バイトでない場合に返されます(Ed25519は32バイトのキーを持ちます)。
  • MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。

Example

int ret;

WC_RNG rng;
ed25519_key key;

wc_InitRng(&rng);
wc_ed25519_init(&key);
wc_ed25519_make_key(&rng, 32, &key);
if (ret != 0) {
    // キー作成エラー
}

function wc_ed25519_sign_msg

int wc_ed25519_sign_msg(
    const byte * in,
    word32 inlen,
    byte * out,
    word32 * outlen,
    ed25519_key * key
)

この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージに署名します。

Parameters:

  • in 署名するメッセージを含むバッファへのポインタ。
  • inlen 署名するメッセージの長さ。
  • out 生成された署名を格納するバッファ。
  • outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
  • key 署名を生成するために使用する秘密ed25519_keyへのポインタ。

See:

Return:

  • 0 メッセージの署名の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます。
  • MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。

Example

ed25519_key key;
WC_RNG rng;
int ret, sigSz;

byte sig[64]; // 生成された署名を保持
sigSz = sizeof(sig);
byte message[] = { メッセージで初期化 };

wc_InitRng(&rng); // rngを初期化
wc_ed25519_init(&key); // keyを初期化
wc_ed25519_make_key(&rng, 32, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed25519_sign_msg(message, sizeof(message), sig, &sigSz, &key);
if (ret != 0) {
    // メッセージ署名の生成エラー
}

function wc_ed25519ctx_sign_msg

int wc_ed25519ctx_sign_msg(
    const byte * in,
    word32 inlen,
    byte * out,
    word32 * outlen,
    ed25519_key * key,
    const byte * context,
    byte contextLen
)

この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージに署名します。コンテキストは署名されるデータの一部です。

Parameters:

  • in 署名するメッセージを含むバッファへのポインタ。
  • inlen 署名するメッセージの長さ。
  • out 生成された署名を格納するバッファ。
  • outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
  • key 署名を生成するために使用する秘密ed25519_keyへのポインタ。
  • context メッセージが署名されているコンテキストを含むバッファへのポインタ。
  • contextLen コンテキストバッファの長さ。

See:

Return:

  • 0 メッセージの署名の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます。
  • MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。

Example

ed25519_key key;
WC_RNG rng;
int ret, sigSz;

byte sig[64]; // 生成された署名を保持
sigSz = sizeof(sig);
byte message[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };

wc_InitRng(&rng); // rngを初期化
wc_ed25519_init(&key); // keyを初期化
wc_ed25519_make_key(&rng, 32, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed25519ctx_sign_msg(message, sizeof(message), sig, &sigSz, &key,
        context, sizeof(context));
if (ret != 0) {
    // メッセージ署名の生成エラー
}

function wc_ed25519ph_sign_hash

int wc_ed25519ph_sign_hash(
    const byte * hash,
    word32 hashLen,
    byte * out,
    word32 * outLen,
    ed25519_key * key,
    const byte * context,
    byte contextLen
)

この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージダイジェストに署名します。コンテキストは署名されるデータの一部として含まれます。メッセージは署名計算前に事前ハッシュ化されます。

Parameters:

  • hash 署名するメッセージのハッシュを含むバッファへのポインタ。
  • hashLen 署名するメッセージのハッシュの長さ。
  • out 生成された署名を格納するバッファ。
  • outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
  • key 署名を生成するために使用する秘密ed25519_keyへのポインタ。
  • context メッセージが署名されているコンテキストを含むバッファへのポインタ。
  • contextLen コンテキストバッファの長さ。

See:

Return:

  • 0 メッセージダイジェストの署名の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます。
  • MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。

Example

ed25519_key key;
WC_RNG rng;
int ret, sigSz;

byte sig[64]; // 生成された署名を保持
sigSz = sizeof(sig);
byte hash[] = { メッセージのSHA-512ハッシュで初期化 };
byte context[] = { 署名のコンテキストで初期化 };

wc_InitRng(&rng); // rngを初期化
wc_ed25519_init(&key); // keyを初期化
wc_ed25519_make_key(&rng, 32, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed25519ph_sign_hash(hash, sizeof(hash), sig, &sigSz, &key,
        context, sizeof(context));
if (ret != 0) {
    // メッセージ署名の生成エラー
}

function wc_ed25519ph_sign_msg

int wc_ed25519ph_sign_msg(
    const byte * in,
    word32 inlen,
    byte * out,
    word32 * outlen,
    ed25519_key * key,
    const byte * context,
    byte contextLen
)

この関数は、真正性を保証するためにed25519_keyオブジェクトを使用してメッセージに署名します。コンテキストは署名されるデータの一部として含まれます。メッセージは署名計算前に事前ハッシュ化されます。

Parameters:

  • in 署名するメッセージを含むバッファへのポインタ。
  • inlen 署名するメッセージの長さ。
  • out 生成された署名を格納するバッファ。
  • outlen 出力バッファの最大長。メッセージ署名の生成に成功した後、outに書き込まれたバイト数が格納されます。
  • key 署名を生成するために使用する秘密ed25519_keyへのポインタ。
  • context メッセージが署名されているコンテキストを含むバッファへのポインタ。
  • contextLen コンテキストバッファの長さ。

See:

Return:

  • 0 メッセージの署名の生成に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、または出力バッファが生成された署名を格納するには小さすぎる場合に返されます。
  • MEMORY_E 関数実行中にメモリの割り当てエラーが発生した場合に返されます。

Example

ed25519_key key;
WC_RNG rng;
int ret, sigSz;

byte sig[64]; // 生成された署名を保持
sigSz = sizeof(sig);
byte message[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };

wc_InitRng(&rng); // rngを初期化
wc_ed25519_init(&key); // keyを初期化
wc_ed25519_make_key(&rng, 32, &key); // 公開/秘密鍵ペアを作成
ret = wc_ed25519ph_sign_msg(message, sizeof(message), sig, &sigSz, &key,
        context, sizeof(context));
if (ret != 0) {
    // メッセージ署名の生成エラー
}

function wc_ed25519_verify_msg

int wc_ed25519_verify_msg(
    const byte * sig,
    word32 siglen,
    const byte * msg,
    word32 msgLen,
    int * ret,
    ed25519_key * key
)

この関数は、真正性を保証するためにメッセージのEd25519署名を検証します。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。

Parameters:

  • sig 検証する署名を含むバッファへのポインタ。
  • siglen 検証する署名の長さ。
  • msg 検証するメッセージを含むバッファへのポインタ。
  • msgLen 検証するメッセージの長さ。
  • ret 検証結果へのポインタ。1はメッセージが正常に検証されたことを示します。
  • key 署名を検証するために使用する公開Ed25519鍵へのポインタ。

See:

Return:

  • 0 署名の検証と認証の実行に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます。
  • SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます。

Example

ed25519_key key;
int ret, verified = 0;

byte sig[] { 受信した署名で初期化 };
byte msg[] = { メッセージで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed25519_verify_msg(sig, sizeof(sig), msg, sizeof(msg), &verified,
        &key);
if (ret < 0) {
    // 検証実行エラー
} else if (verified == 0)
    // 署名が無効
}

function wc_ed25519ctx_verify_msg

int wc_ed25519ctx_verify_msg(
    const byte * sig,
    word32 siglen,
    const byte * msg,
    word32 msgLen,
    int * ret,
    ed25519_key * key,
    const byte * context,
    byte contextLen
)

この関数は、真正性を保証するためにメッセージのEd25519署名を検証します。コンテキストは検証されるデータの一部として含まれます。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。

Parameters:

  • sig 検証する署名を含むバッファへのポインタ。
  • siglen 検証する署名の長さ。
  • msg 検証するメッセージを含むバッファへのポインタ。
  • msgLen 検証するメッセージの長さ。
  • ret 検証結果へのポインタ。1はメッセージが正常に検証されたことを示します。
  • key 署名を検証するために使用する公開Ed25519鍵へのポインタ。
  • context メッセージが署名されたコンテキストを含むバッファへのポインタ。
  • contextLen コンテキストバッファの長さ。

See:

Return:

  • 0 署名の検証と認証の実行に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます。
  • SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます。

Example

ed25519_key key;
int ret, verified = 0;

byte sig[] { 受信した署名で初期化 };
byte msg[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed25519ctx_verify_msg(sig, sizeof(sig), msg, sizeof(msg),
        &verified, &key, );
if (ret < 0) {
    // 検証実行エラー
} else if (verified == 0)
    // 署名が無効
}

function wc_ed25519ph_verify_hash

int wc_ed25519ph_verify_hash(
    const byte * sig,
    word32 siglen,
    const byte * hash,
    word32 hashLen,
    int * ret,
    ed25519_key * key,
    const byte * context,
    byte contextLen
)

この関数は、真正性を保証するためにメッセージのダイジェストのEd25519署名を検証します。コンテキストは検証されるデータの一部として含まれます。ハッシュは署名計算前の事前ハッシュ化されたメッセージです。メッセージダイジェストの作成に使用されるハッシュアルゴリズムはSHA-512である必要があります。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。

Parameters:

  • sig 検証する署名を含むバッファへのポインタ。
  • siglen 検証する署名の長さ。
  • hash 検証するメッセージのハッシュを含むバッファへのポインタ。
  • hashLen 検証するハッシュの長さ。
  • ret 検証結果へのポインタ。1はメッセージが正常に検証されたことを示します。
  • key 署名を検証するために使用する公開Ed25519鍵へのポインタ。
  • context メッセージが署名されたコンテキストを含むバッファへのポインタ。
  • contextLen コンテキストバッファの長さ。

See:

Return:

  • 0 署名の検証と認証の実行に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます。
  • SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます。

Example

ed25519_key key;
int ret, verified = 0;

byte sig[] { 受信した署名で初期化 };
byte hash[] = { メッセージのSHA-512ハッシュで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed25519ph_verify_hash(sig, sizeof(sig), msg, sizeof(msg),
        &verified, &key, );
if (ret < 0) {
    // 検証実行エラー
} else if (verified == 0)
    // 署名が無効
}

function wc_ed25519ph_verify_msg

int wc_ed25519ph_verify_msg(
    const byte * sig,
    word32 siglen,
    const byte * msg,
    word32 msgLen,
    int * ret,
    ed25519_key * key,
    const byte * context,
    byte contextLen
)

この関数は、真正性を保証するためにメッセージのEd25519署名を検証します。コンテキストは検証されるデータの一部として含まれます。メッセージは検証前に事前ハッシュ化されます。答えはretを通じて返され、1は有効な署名に対応し、0は無効な署名に対応します。

Parameters:

  • sig 検証する署名を含むバッファへのポインタ。
  • siglen 検証する署名の長さ。
  • msg 検証するメッセージを含むバッファへのポインタ。
  • msgLen 検証するメッセージの長さ。
  • ret 検証結果へのポインタ。1はメッセージが正常に検証されたことを示します。
  • key 署名を検証するために使用する公開Ed25519鍵へのポインタ。
  • context メッセージが署名されたコンテキストを含むバッファへのポインタ。
  • contextLen コンテキストバッファの長さ。

See:

Return:

  • 0 署名の検証と認証の実行に成功した場合に返されます。
  • BAD_FUNC_ARG 入力パラメータのいずれかがNULLと評価された場合、またはsiglenが署名の実際の長さと一致しない場合に返されます。
  • SIG_VERIFY_E 検証は完了したが、生成された署名が提供された署名と一致しない場合に返されます。

Example

ed25519_key key;
int ret, verified = 0;

byte sig[] { 受信した署名で初期化 };
byte msg[] = { メッセージで初期化 };
byte context[] = { 署名のコンテキストで初期化 };
// 受信した公開鍵でkeyを初期化
ret = wc_ed25519ctx_verify_msg(sig, sizeof(sig), msg, sizeof(msg),
        &verified, &key, );
if (ret < 0) {
    // 検証実行エラー
} else if (verified == 0)
    // 署名が無効
}

function wc_ed25519_init

int wc_ed25519_init(
    ed25519_key * key
)

この関数は、メッセージ検証での将来の使用のためにed25519_keyオブジェクトを初期化します。

Parameters:

  • key 初期化するed25519_keyオブジェクトへのポインタ。

See:

Return:

  • 0 ed25519_keyオブジェクトの初期化に成功した場合に返されます。
  • BAD_FUNC_ARG keyがNULLの場合に返されます。

Example

ed25519_key key;
wc_ed25519_init(&key);

function wc_ed25519_free

void wc_ed25519_free(
    ed25519_key * key
)

この関数は、使用後にEd25519オブジェクトを解放します。

Parameters:

  • key 解放するed25519_keyオブジェクトへのポインタ

See: wc_ed25519_init

Example

ed25519_key key;
// keyを初期化し、安全な交換を実行
...
wc_ed25519_free(&key);

function wc_ed25519_import_public

int wc_ed25519_import_public(
    const byte * in,
    word32 inLen,
    ed25519_key * key
)

この関数は、公開鍵を含むバッファから公開ed25519_keyをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。公開鍵は、秘密鍵が存在する場合にそれと一致するかチェックされます。

Parameters:

  • in 公開鍵を含むバッファへのポインタ。
  • inLen 公開鍵を含むバッファの長さ。
  • key 公開鍵を格納するed25519_keyオブジェクトへのポインタ。

See:

Return:

  • 0 ed25519_keyのインポートに成功した場合に返されます。
  • BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはinLenがEd25519鍵のサイズより小さい場合に返されます。

Example

int ret;
byte pub[] = { Ed25519公開鍵で初期化 };

ed_25519 key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_public(pub, sizeof(pub), &key);
if (ret != 0) {
    // 鍵のインポートエラー
}

function wc_ed25519_import_public_ex

int wc_ed25519_import_public_ex(
    const byte * in,
    word32 inLen,
    ed25519_key * key,
    int trusted
)

この関数は、公開鍵を含むバッファから公開ed25519_keyをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。信頼されていない場合、秘密鍵が存在するときに公開鍵が秘密鍵と一致するかチェックします。

Parameters:

  • in 公開鍵を含むバッファへのポインタ。
  • inLen 公開鍵を含むバッファの長さ。
  • key 公開鍵を格納するed25519_keyオブジェクトへのポインタ。
  • trusted 公開鍵データが信頼されているかどうか。

See:

Return:

  • 0 ed25519_keyのインポートに成功した場合に返されます。
  • BAD_FUNC_ARG inまたはkeyがNULLと評価された場合、またはinLenがEd25519鍵のサイズより小さい場合に返されます。

Example

int ret;
byte pub[] = { Ed25519公開鍵で初期化 };

ed_25519 key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_public_ex(pub, sizeof(pub), &key, 1);
if (ret != 0) {
    // 鍵のインポートエラー
}

function wc_ed25519_import_private_only

int wc_ed25519_import_private_only(
    const byte * priv,
    word32 privSz,
    ed25519_key * key
)

この関数は、バッファからEd25519秘密鍵のみをインポートします。

Parameters:

  • priv 秘密鍵を含むバッファへのポインタ。
  • privSz 秘密鍵の長さ。
  • key インポートされた秘密鍵を格納するed25519_keyオブジェクトへのポインタ。

See:

Return:

  • 0 Ed25519鍵のインポートに成功した場合に返されます。
  • BAD_FUNC_ARG privまたはkeyがNULLと評価された場合、またはprivSzがED25519_KEY_SIZEと等しくない場合に返されます。

Example

int ret;
byte priv[] = { 32バイトの秘密鍵で初期化 };

ed25519_key key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_private_only(priv, sizeof(priv), &key);
if (ret != 0) {
    // 秘密鍵のインポートエラー
}

function wc_ed25519_import_private_key

int wc_ed25519_import_private_key(
    const byte * priv,
    word32 privSz,
    const byte * pub,
    word32 pubSz,
    ed25519_key * key
)

この関数は、一対のバッファから公開/秘密Ed25519鍵ペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。公開鍵は信頼されていないと想定され、秘密鍵に対してチェックされます。

Parameters:

  • priv 秘密鍵を含むバッファへのポインタ。
  • privSz 秘密鍵の長さ。
  • pub 公開鍵を含むバッファへのポインタ。
  • pubSz 公開鍵の長さ。
  • key インポートされた秘密/公開鍵ペアを格納するed25519_keyオブジェクトへのポインタ。

See:

Return:

  • 0 ed25519_keyのインポートに成功した場合に返されます。
  • BAD_FUNC_ARG privまたはkeyがNULLと評価された場合、またはprivSzがED25519_KEY_SIZEにもED25519_PRV_KEY_SIZEにも等しくない、もしくはpubSzがED25519_PUB_KEY_SIZEより小さい場合に返されます。

Example

int ret;
byte priv[] = { 32バイトの秘密鍵で初期化 };
byte pub[]  = { 対応する公開鍵で初期化 };

ed25519_key key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_private_key(priv, sizeof(priv), pub, sizeof(pub),
        &key);
if (ret != 0) {
    // 鍵のインポートエラー
}

function wc_ed25519_import_private_key_ex

int wc_ed25519_import_private_key_ex(
    const byte * priv,
    word32 privSz,
    const byte * pub,
    word32 pubSz,
    ed25519_key * key,
    int trusted
)

この関数は、一対のバッファから公開/秘密Ed25519鍵ペアをインポートします。この関数は、圧縮キーと非圧縮キーの両方を処理します。信頼されていない場合、公開鍵が秘密鍵に対してチェックされます。

Parameters:

  • priv 秘密鍵を含むバッファへのポインタ。
  • privSz 秘密鍵の長さ。
  • pub 公開鍵を含むバッファへのポインタ。
  • pubSz 公開鍵の長さ。
  • key インポートされた秘密/公開鍵ペアを格納するed25519_keyオブジェクトへのポインタ。
  • trusted 公開鍵データが信頼されているかどうか。

See:

Return:

  • 0 ed25519_keyのインポートに成功した場合に返されます。
  • BAD_FUNC_ARG privまたはkeyがNULLと評価された場合、またはprivSzがED25519_KEY_SIZEにもED25519_PRV_KEY_SIZEにも等しくない、もしくはpubSzがED25519_PUB_KEY_SIZEより小さい場合に返されます。

Example

int ret;
byte priv[] = { 32バイトの秘密鍵で初期化 };
byte pub[]  = { 対応する公開鍵で初期化 };

ed25519_key key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_private_key(priv, sizeof(priv), pub, sizeof(pub),
        &key, 1);
if (ret != 0) {
    // 鍵のインポートエラー
}

function wc_ed25519_export_public

int wc_ed25519_export_public(
    ed25519_key * key,
    byte * out,
    word32 * outLen
)

この関数は、ed25519_key構造体から公開鍵をエクスポートします。公開鍵をバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。

Parameters:

  • key 公開鍵をエクスポートするed25519_key構造体へのポインタ。
  • out 公開鍵を格納するバッファへのポインタ。
  • outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。公開鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。

See:

Return:

  • 0 公開鍵のエクスポートに成功した場合に返されます。
  • BAD_FUNC_ARG 入力値のいずれかがNULLと評価された場合に返されます。
  • BUFFER_E 提供されたバッファが秘密鍵を格納するのに十分な大きさでない場合に返されます。このエラーを返す際、関数はoutLenに必要なサイズを設定します。

Example

int ret;
ed25519_key key;
// keyを初期化し、keyを作成

char pub[32];
word32 pubSz = sizeof(pub);

ret = wc_ed25519_export_public(&key, pub, &pubSz);
if (ret != 0) {
    // 公開鍵のエクスポートエラー
}

function wc_ed25519_export_private_only

int wc_ed25519_export_private_only(
    ed25519_key * key,
    byte * out,
    word32 * outLen
)

この関数は、ed25519_key構造体から秘密鍵のみをエクスポートします。秘密鍵をバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。

Parameters:

  • key 秘密鍵をエクスポートするed25519_key構造体へのポインタ。
  • out 秘密鍵を格納するバッファへのポインタ。
  • outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。秘密鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。

See:

Return:

  • 0 秘密鍵のエクスポートに成功した場合に返されます。
  • BAD_FUNC_ARG 入力値のいずれかがNULLと評価された場合に返されます。
  • BUFFER_E 提供されたバッファが秘密鍵を格納するのに十分な大きさでない場合に返されます。

Example

int ret;
ed25519_key key;
// keyを初期化し、keyを作成

char priv[32]; // 秘密鍵のみなので32バイト
word32 privSz = sizeof(priv);
ret = wc_ed25519_export_private_only(&key, priv, &privSz);
if (ret != 0) {
    // 秘密鍵のエクスポートエラー
}

function wc_ed25519_export_private

int wc_ed25519_export_private(
    ed25519_key * key,
    byte * out,
    word32 * outLen
)

この関数は、ed25519_key構造体から鍵ペアをエクスポートします。鍵ペアをバッファoutに格納し、このバッファに書き込まれたバイト数をoutLenに設定します。

Parameters:

  • key 鍵ペアをエクスポートするed25519_key構造体へのポインタ。
  • out 鍵ペアを格納するバッファへのポインタ。
  • outLen outで利用可能なサイズを持つword32オブジェクトへのポインタ。鍵ペアのエクスポートに成功した後、outに書き込まれたバイト数が設定されます。

See:

Return:

  • 0 鍵ペアのエクスポートに成功した場合に返されます。
  • BAD_FUNC_ARG 入力値のいずれかがNULLと評価された場合に返されます。
  • BUFFER_E 提供されたバッファが鍵ペアを格納するのに十分な大きさでない場合に返されます。

Example

ed25519_key key;
wc_ed25519_init(&key);

WC_RNG rng;
wc_InitRng(&rng);

wc_ed25519_make_key(&rng, 32, &key); // 32バイトのEd25519鍵を初期化

byte out[64]; // outは十分なバッファサイズである必要があります
word32 outLen = sizeof(out);
int key_size = wc_ed25519_export_private(&key, out, &outLen);
if (key_size == BUFFER_E) {
    // 関数がoutLenをリセットしたかどうかを確認するため、outのサイズとoutLenを比較
}

function wc_ed25519_export_key

int wc_ed25519_export_key(
    ed25519_key * key,
    byte * priv,
    word32 * privSz,
    byte * pub,
    word32 * pubSz
)

この関数は、ed25519_key構造体から秘密鍵と公開鍵を個別にエクスポートします。秘密鍵をバッファprivに格納し、このバッファに書き込まれたバイト数をprivSzに設定します。公開鍵をバッファpubに格納し、このバッファに書き込まれたバイト数をpubSzに設定します。

Parameters:

  • key 鍵ペアをエクスポートするed25519_key構造体へのポインタ。
  • priv 秘密鍵を格納するバッファへのポインタ。
  • privSz outで利用可能なサイズを持つword32オブジェクトへのポインタ。秘密鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。
  • pub 公開鍵を格納するバッファへのポインタ。
  • pubSz outで利用可能なサイズを持つword32オブジェクトへのポインタ。公開鍵のエクスポートに成功した後、outに書き込まれたバイト数が設定されます。

See:

Return:

  • 0 鍵ペアのエクスポートに成功した場合に返されます。
  • BAD_FUNC_ARG 入力値のいずれかがNULLと評価された場合に返されます。
  • BUFFER_E 提供されたバッファが鍵ペアを格納するのに十分な大きさでない場合に返されます。

Example

int ret;
ed25519_key key;
// keyを初期化し、keyを作成

char pub[32];
word32 pubSz = sizeof(pub);
char priv[32];
word32 privSz = sizeof(priv);

ret = wc_ed25519_export_key(&key, priv, &pubSz, pub, &pubSz);
if (ret != 0) {
    // 公開鍵のエクスポートエラー
}

function wc_ed25519_check_key

int wc_ed25519_check_key(
    ed25519_key * key
)

この関数は、ed25519_key構造体内の公開鍵が秘密鍵と一致するかチェックします。

Parameters:

  • key 秘密鍵と公開鍵を保持するed25519_key構造体へのポインタ。

See:

Return:

  • 0 秘密鍵と公開鍵が一致した場合に返されます。
  • BAD_FUNC_ARG 指定されたkeyがNULLの場合に返されます。
  • PUBLIC_KEY_E 公開鍵が利用できない、または無効な場合に返されます。

Example

int ret;
byte priv[] = { 57バイトの秘密鍵で初期化 };
byte pub[]  = { 対応する公開鍵で初期化 };

ed25519_key key;
wc_ed25519_init_key(&key);
wc_ed25519_import_private_key_ex(priv, sizeof(priv), pub, sizeof(pub), &key,
    1);
ret = wc_ed25519_check_key(&key);
if (ret != 0) {
    // 鍵のチェックエラー
}

function wc_ed25519_size

int wc_ed25519_size(
    ed25519_key * key
)

この関数は、Ed25519のサイズ(32バイト)を返します。

Parameters:

  • key 鍵サイズを取得するed25519_key構造体へのポインタ。

See: wc_ed25519_make_key

Return:

  • ED25519_KEY_SIZE 有効な秘密鍵のサイズ(32バイト)。
  • BAD_FUNC_ARG 指定されたkeyがNULLの場合に返されます。

Example

int keySz;
ed25519_key key;
// keyを初期化し、keyを作成
keySz = wc_ed25519_size(&key);
if (keySz == 0) {
    // 鍵サイズの決定エラー
}

function wc_ed25519_priv_size

int wc_ed25519_priv_size(
    ed25519_key * key
)

この関数は、秘密鍵のサイズ(秘密 + 公開)をバイト単位で返します。

Parameters:

  • key 鍵サイズを取得するed25519_key構造体へのポインタ。

See: wc_ed25519_pub_size

Return:

  • ED25519_PRV_KEY_SIZE 秘密鍵のサイズ(64バイト)。
  • BAD_FUNC_ARG key引数がNULLの場合に返されます。

Example

ed25519_key key;
wc_ed25519_init(&key);

WC_RNG rng;
wc_InitRng(&rng);

wc_ed25519_make_key(&rng, 32, &key); // 32バイトのEd25519鍵を初期化
int key_size = wc_ed25519_priv_size(&key);

function wc_ed25519_pub_size

int wc_ed25519_pub_size(
    ed25519_key * key
)

この関数は、圧縮鍵のサイズをバイト単位で返します(公開鍵)。

Parameters:

  • key 鍵サイズを取得するed25519_key構造体へのポインタ。

See: wc_ed25519_priv_size

Return:

  • ED25519_PUB_KEY_SIZE 圧縮公開鍵のサイズ(32バイト)。
  • BAD_FUNC_ARG key引数がNULLの場合に返されます。

Example

ed25519_key key;
wc_ed25519_init(&key);
WC_RNG rng;
wc_InitRng(&rng);

wc_ed25519_make_key(&rng, 32, &key); // 32バイトのEd25519鍵を初期化
int key_size = wc_ed25519_pub_size(&key);

function wc_ed25519_sig_size

int wc_ed25519_sig_size(
    ed25519_key * key
)

この関数は、Ed25519署名のサイズ(バイト単位で64)を返します。

Parameters:

  • key 署名サイズを取得するed25519_key構造体へのポインタ。

See: wc_ed25519_sign_msg

Return:

  • ED25519_SIG_SIZE Ed25519署名のサイズ(64バイト)。
  • BAD_FUNC_ARG key引数がNULLの場合に返されます。

Example

int sigSz;
ed25519_key key;
// keyを初期化し、keyを作成

sigSz = wc_ed25519_sig_size(&key);
if (sigSz == 0) {
    // 署名サイズの決定エラー
}

Source code


int wc_ed25519_make_public(ed25519_key* key, unsigned char* pubKey,
                           word32 pubKeySz);

int wc_ed25519_make_key(WC_RNG* rng, int keysize, ed25519_key* key);

int wc_ed25519_sign_msg(const byte* in, word32 inlen, byte* out,
                        word32 *outlen, ed25519_key* key);

int wc_ed25519ctx_sign_msg(const byte* in, word32 inlen, byte* out,
                        word32 *outlen, ed25519_key* key,
                        const byte* context, byte contextLen);

int wc_ed25519ph_sign_hash(const byte* hash, word32 hashLen, byte* out,
                           word32 *outLen, ed25519_key* key,
                           const byte* context, byte contextLen);

int wc_ed25519ph_sign_msg(const byte* in, word32 inlen, byte* out,
                        word32 *outlen, ed25519_key* key,
                        const byte* context, byte contextLen);

int wc_ed25519_verify_msg(const byte* sig, word32 siglen, const byte* msg,
                          word32 msgLen, int* ret, ed25519_key* key);

int wc_ed25519ctx_verify_msg(const byte* sig, word32 siglen, const byte* msg,
                             word32 msgLen, int* ret, ed25519_key* key,
                             const byte* context, byte contextLen);

int wc_ed25519ph_verify_hash(const byte* sig, word32 siglen, const byte* hash,
                             word32 hashLen, int* ret, ed25519_key* key,
                             const byte* context, byte contextLen);

int wc_ed25519ph_verify_msg(const byte* sig, word32 siglen, const byte* msg,
                            word32 msgLen, int* ret, ed25519_key* key,
                            const byte* context, byte contextLen);

int wc_ed25519_init(ed25519_key* key);

void wc_ed25519_free(ed25519_key* key);

int wc_ed25519_import_public(const byte* in, word32 inLen, ed25519_key* key);

int wc_ed25519_import_public_ex(const byte* in, word32 inLen, ed25519_key* key,
    int trusted);

int wc_ed25519_import_private_only(const byte* priv, word32 privSz,
                                   ed25519_key* key);

int wc_ed25519_import_private_key(const byte* priv, word32 privSz,
                               const byte* pub, word32 pubSz, ed25519_key* key);

int wc_ed25519_import_private_key_ex(const byte* priv, word32 privSz,
    const byte* pub, word32 pubSz, ed25519_key* key, int trusted);

int wc_ed25519_export_public(ed25519_key* key, byte* out, word32* outLen);

int wc_ed25519_export_private_only(ed25519_key* key, byte* out, word32* outLen);

int wc_ed25519_export_private(ed25519_key* key, byte* out, word32* outLen);

int wc_ed25519_export_key(ed25519_key* key,
                          byte* priv, word32 *privSz,
                          byte* pub, word32 *pubSz);

int wc_ed25519_check_key(ed25519_key* key);

int wc_ed25519_size(ed25519_key* key);

int wc_ed25519_priv_size(ed25519_key* key);

int wc_ed25519_pub_size(ed25519_key* key);

int wc_ed25519_sig_size(ed25519_key* key);

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