コンテンツにスキップ

ed25519.h

Functions

Name
int wc_ed25519_make_public(ed25519_key * key, unsigned char * pubKey, word32 pubKeySz)
この関数はEd25519秘密鍵からEd25519公開鍵を生成します。公開鍵をバッファpubkeyに出力します。 この関数の呼び出しに先立ち、ed25519_key構造体にはEd25519秘密鍵がインポートされている必要があります。
int wc_ed25519_make_key(WC_RNG * rng, int keysize, ed25519_key * key)
この関数は新しいed25519_key構造体を生成し、それを引数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構造体を使用してメッセージダイジェストに署名します。 コンテキストは署名されるデータの一部として含まれています。 署名計算の前にメッセージは事前にハッシュされています。 メッセージダイジェストを作成するために使用されるハッシュアルゴリズムはShake-256でなければなりません。
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署名を検証します。 引数hashは、署名計算前のプリハッシュメッセージです。 メッセージダイジェストを作成するために使用されるハッシュアルゴリズムは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署名を検証します。 引数contextは検証すべきデータの一部として含まれています。 検証前にメッセージがプリハッシュされています。 答えは変数resを介して返され、署名が有効ならば1、無効ならば0を返します。
int wc_ed25519_init(ed25519_key * key)
この関数は、後のメッセージ検証で使用のためにed25519_key構造体を初期化します。
void wc_ed25519_free(ed25519_key * key)
この関数は、使用済みのed25519_key構造体を解放します。
int wc_ed25519_import_public(const byte * in, word32 inLen, ed25519_key * key)
この関数はバッファからed25519公開鍵をed25519_key構造体へインポートします。 圧縮あるいは非圧縮の両方の形式の鍵を扱います。
int wc_ed25519_import_public_ex(const byte * in, word32 inLen, ed25519_key * key, int trusted)
この関数はバッファからed25519公開鍵をed25519_key構造体へインポートします。 圧縮あるいは非圧縮の両方の形式の鍵を扱います。 秘密鍵が既にインポートされている場合で、trusted引数が1以外の場合は両鍵が対応しているかをチェックします。
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公開鍵/秘密鍵をそれぞれ含む一対のバッファからEd25519鍵ペアをインポートします。 この関数は圧縮と非圧縮の両方の鍵を処理します。
int wc_ed25519_import_private_key_ex(const byte * priv, word32 privSz, const byte * pub, word32 pubSz, ed25519_key * key, int trusted)
この関数は一対のバッファからEd25519公開鍵/秘密鍵ペアをインポートします。この関数は圧縮キーと非圧縮キーの両方を処理します。公開鍵はtrusted引数により信頼されていないとされた場合には秘密鍵に対して検証されます。
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構造体からの秘密鍵のみをエクスポートします。秘密鍵をバッファアウトに格納し、outlenにこのバッファに書き込まれたバイトを設定します。
int wc_ed25519_export_private(ed25519_key * key, byte * out, word32 * outLen)
この関数は、ed25519_key構造体から鍵ペアをエクスポートします。鍵ペアをバッファoutに格納し、ounterenでこのバッファに書き込まれたバイトを設定します。
int wc_ed25519_export_key(ed25519_key * key, byte * priv, word32 * privSz, byte * pub, word32 * pubSz)
この関数は、ed25519_key構造体から秘密鍵と公開鍵を別々にエクスポートします。 秘密鍵をバッファprivに格納し、priovSzにこのバッファに書き込んだバイト数を設定します。 公開鍵をバッファ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)
この関数は、秘密鍵サイズ(secret + public)をバイト単位で返します。
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秘密鍵からEd25519公開鍵を生成します。公開鍵をバッファpubkeyに出力します。 この関数の呼び出しに先立ち、ed25519_key構造体にはEd25519秘密鍵がインポートされている必要があります。

Parameters:

  • key Ed25519秘密鍵がインポートされているed25519_key構造体へのポインタ。
  • pubKey 公開鍵を出力するバッファへのポインタ。
  • pubKeySz バッファのサイズ。常にED25519_PUB_KEY_SIZE(32)でなければなりません。

See:

Return:

  • 0 公開鍵の作成に成功したときに返されます。
  • BAD_FUNC_ARG 引数keyまたはpubKeyがNULLの場合、または指定された鍵サイズが32バイトではない場合(ED25519に32バイトのキーがあります)。
  • ECC_PRIV_KEY_E ed25519_key構造体にEd25519秘密鍵がインポートされていない場合に返されます。
  • MEMORY_E 関数の実行中にメモリを割り当てエラーがある場合に返されます。

Example

int ret;

ed25519_key key;
byte priv[] = { initialize with 32 byte private key };
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) {
    // error making public key
}

function wc_ed25519_make_key

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

この関数は新しいed25519_key構造体を生成し、それを引数keyのバッファに格納します。

Parameters:

  • rng RNGキーを生成する初期化されたRNGオブジェクトへのポインタ。
  • keysize keyの長さ。ED25519の場合は常に32になります。

See: wc_ed25519_init

Return:

  • 0 ed25519_key構造体を正常に生成すると返されます。
  • BAD_FUNC_ARG RNGまたはKEYがNULLに評価された場合、または指定されたkeysizeが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) {
    // error making key
}

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 出力バッファの最大長。メッセージ署名の生成に成功したときに、書き込まれたバイト数を保持します。
  • 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]; // will hold generated signature
sigSz = sizeof(sig);
byte message[] = { initialize with message };

wc_InitRng(&rng); // initialize rng
wc_ed25519_init(&key); // initialize key
wc_ed25519_make_key(&rng, 32, &key); // make public/private key pair
ret = wc_ed25519_sign_msg(message, sizeof(message), sig, &sigSz, &key);
if (ret != 0) {
    // error generating message signature
}

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 出力バッファの最大長。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。
  • 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]; // will hold generated signature
sigSz = sizeof(sig);
byte message[] = { initialize with message };
byte context[] = { initialize with context of signing };

wc_InitRng(&rng); // initialize rng
wc_ed25519_init(&key); // initialize key
wc_ed25519_make_key(&rng, 32, &key); // make public/private key pair
ret = wc_ed25519ctx_sign_msg(message, sizeof(message), sig, &sigSz, &key,
        context, sizeof(context));
if (ret != 0) {
    // error generating message signature
}

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構造体を使用してメッセージダイジェストに署名します。 コンテキストは署名されるデータの一部として含まれています。 署名計算の前にメッセージは事前にハッシュされています。 メッセージダイジェストを作成するために使用されるハッシュアルゴリズムはShake-256でなければなりません。

Parameters:

  • hash 署名するメッセージのハッシュを含むバッファへのポインタ。
  • hashLen 署名するメッセージのハッシュのサイズ
  • out 生成された署名を格納するためのバッファ。
  • outlen 出力バッファの最大長。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。
  • 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]; // will hold generated signature
sigSz = sizeof(sig);
byte hash[] = { initialize with SHA-512 hash of message };
byte context[] = { initialize with context of signing };

wc_InitRng(&rng); // initialize rng
wc_ed25519_init(&key); // initialize key
wc_ed25519_make_key(&rng, 32, &key); // make public/private key pair
ret = wc_ed25519ph_sign_hash(hash, sizeof(hash), sig, &sigSz, &key,
        context, sizeof(context));
if (ret != 0) {
    // error generating message signature
}

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 出力バッファの最大長。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。
  • 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]; // will hold generated signature
sigSz = sizeof(sig);
byte message[] = { initialize with message };
byte context[] = { initialize with context of signing };

wc_InitRng(&rng); // initialize rng
wc_ed25519_init(&key); // initialize key
wc_ed25519_make_key(&rng, 32, &key); // make public/private key pair
ret = wc_ed25519ph_sign_msg(message, sizeof(message), sig, &sigSz, &key,
        context, sizeof(context));
if (ret != 0) {
    // error generating message signature
}

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[] { initialize with received signature };
byte msg[] = { initialize with message };
// initialize key with received public key
ret = wc_ed25519_verify_msg(sig, sizeof(sig), msg, sizeof(msg), &verified,
        &key);
if (ret < 0) {
    // error performing verification
} else if (verified == 0)
    // the signature is invalid
}

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[] { initialize with received signature };
byte msg[] = { initialize with message };
byte context[] = { initialize with context of signature };
// initialize key with received public key
ret = wc_ed25519ctx_verify_msg(sig, sizeof(sig), msg, sizeof(msg),
        &verified, &key, );
if (ret < 0) {
    // error performing verification
} else if (verified == 0)
    // the signature is invalid
}

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署名を検証します。 引数hashは、署名計算前のプリハッシュメッセージです。 メッセージダイジェストを作成するために使用されるハッシュアルゴリズムはSHA-512でなければなりません。 答えは変数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[] { initialize with received signature };
byte hash[] = { initialize with SHA-512 hash of message };
byte context[] = { initialize with context of signature };
// initialize key with received public key
ret = wc_ed25519ph_verify_hash(sig, sizeof(sig), msg, sizeof(msg),
        &verified, &key, );
if (ret < 0) {
    // error performing verification
} else if (verified == 0)
    // the signature is invalid
}

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署名を検証します。 引数contextは検証すべきデータの一部として含まれています。 検証前にメッセージがプリハッシュされています。 答えは変数resを介して返され、署名が有効ならば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[] { initialize with received signature };
byte msg[] = { initialize with message };
byte context[] = { initialize with context of signature };
// initialize key with received public key
ret = wc_ed25519ctx_verify_msg(sig, sizeof(sig), msg, sizeof(msg),
        &verified, &key, );
if (ret < 0) {
    // error performing verification
} else if (verified == 0)
    // the signature is invalid
}

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_key構造体を解放します。

Parameters:

  • key ed25519_key構造体へのポインタ

See: wc_ed25519_init

Example

ed25519_key key;
// initialize key and perform secure exchanges
...
wc_ed25519_free(&key);

function wc_ed25519_import_public

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

この関数はバッファからed25519公開鍵をed25519_key構造体へインポートします。 圧縮あるいは非圧縮の両方の形式の鍵を扱います。

Parameters:

  • in 公開鍵を含んだバッファへのポインタ
  • inLen 公開鍵を含んだバッファのサイズ
  • key ed25519_key構造体へのポインタ

See:

Return:

  • 0 ed25519公開鍵のインポートに成功した場合に返されます。
  • BAD_FUNC_ARG inまたはkeyがnullに評価された場合、またはinlenがED25519鍵のサイズよりも小さい場合に返されます。

Example

int ret;
byte pub[] = { initialize Ed25519 public key };

ed_25519 key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_public(pub, sizeof(pub), &key);
if (ret != 0) {
    // error importing key
}

function wc_ed25519_import_public_ex

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

この関数はバッファからed25519公開鍵をed25519_key構造体へインポートします。 圧縮あるいは非圧縮の両方の形式の鍵を扱います。 秘密鍵が既にインポートされている場合で、trusted引数が1以外の場合は両鍵が対応しているかをチェックします。

Parameters:

  • in 公開鍵を含んだバッファへのポインタ
  • inLen 公開鍵を含んだバッファのサイズ
  • key ed25519_key構造体へのポインタ
  • trusted 公開鍵が信頼おけるか否かを示すフラグ

See:

Return:

  • 0 ed25519公開鍵のインポートに成功した場合に返されます。
  • BAD_FUNC_ARG Returned 引数inあるいはkeyがNULLの場合,あるいは引数inLenがEd25519鍵のサイズより小さい場合に返されます。

Example

int ret;
byte pub[] = { initialize Ed25519 public key };

ed_25519 key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_public_ex(pub, sizeof(pub), &key, 1);
if (ret != 0) {
    // error importing key
}

function wc_ed25519_import_private_only

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

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

Parameters:

  • priv 秘密鍵を含むバッファへのポインタ。
  • privSz 秘密鍵を含むバッファのサイズ

See:

Return:

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

Example

int ret;
byte priv[] = { initialize with 32 byte private key };

ed25519_key key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_private_key(priv, sizeof(priv), &key);
if (ret != 0) {
    // error importing private key
}

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公開鍵/秘密鍵をそれぞれ含む一対のバッファからEd25519鍵ペアをインポートします。 この関数は圧縮と非圧縮の両方の鍵を処理します。

Parameters:

  • priv 秘密鍵を含むバッファへのポインタ。
  • privSz 秘密鍵バッファのサイズ
  • pub 公開鍵を含むバッファへのポインタ。
  • pubSz 公開鍵バッファのサイズ

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[] = { initialize with 32 byte private key };
byte pub[]  = { initialize with the corresponding public key };

ed25519_key key;
wc_ed25519_init_key(&key);
ret = wc_ed25519_import_private_key(priv, sizeof(priv), pub, sizeof(pub),
        &key);
if (ret != 0) {
    // error importing key
}

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公開鍵/秘密鍵ペアをインポートします。この関数は圧縮キーと非圧縮キーの両方を処理します。公開鍵はtrusted引数により信頼されていないとされた場合には秘密鍵に対して検証されます。

Parameters:

  • priv 秘密鍵を保持するバッファへのポインタ
  • privSz 秘密鍵バッファのサイズ
  • pub 公開鍵を保持するバッファへのポインタ
  • pubSz 公開鍵バッファのサイズ
  • key インポートされた公開鍵/秘密鍵を保持するed25519_keyオブジェクトへのポインター
  • trusted 公開鍵が信頼できるか否かを指定するフラグ

See:

Return:

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

Example

int ret;
byte priv[] = { initialize with 32 byte private key };
byte pub[]  = { initialize with the corresponding public key };
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) {
    // error importing key
}

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 公開鍵を出力する先のバッファサイズを格納するword32型変数へのポインタ。 入力の際はバッファサイズを格納して渡し、出力の際はエクスポートした公開鍵のサイズを格納します。

See:

Return:

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

Example

int ret;
ed25519_key key;
// initialize key, make key

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

ret = wc_ed25519_export_public(&key, pub, &pubSz);
if (ret != 0) {
    // error exporting public key
}

function wc_ed25519_export_private_only

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

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

Parameters:

  • key 秘密鍵をエクスポートするためのed25519_key構造体へのポインタ。
  • out 秘密鍵を保存するバッファへのポインタ。
  • outLen 秘密鍵を出力する先のバッファサイズを格納するword32型変数へのポインタ。 入力の際はバッファサイズを格納して渡し、出力の際はエクスポートした秘密鍵のサイズを格納します。

See:

Return:

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

Example

int ret;
ed25519_key key;
// initialize key, make key

char priv[32]; // 32 bytes because only private key
word32 privSz = sizeof(priv);
ret = wc_ed25519_export_private_only(&key, priv, &privSz);
if (ret != 0) {
    // error exporting private key
}

function wc_ed25519_export_private

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

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

Parameters:

  • 鍵ペアをエクスポートするためのed25519_key構造体へのポインタ。
  • 鍵ペアを保存するバッファへのポインタ。
  • outLen 鍵ペアを出力する先のバッファサイズを格納するword32型変数へのポインタ。 入力の際はバッファサイズを格納して渡し、出力の際はエクスポートした鍵ペアのサイズを格納します。

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); // initialize 32 byte Ed25519 key

byte out[64]; // out needs to be a sufficient buffer size
word32 outLen = sizeof(out);
int key_size = wc_ed25519_export_private(&key, out, &outLen);
if (key_size == BUFFER_E) {
    // Check size of out compared to outLen to see if function reset 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に格納し、priovSzにこのバッファに書き込んだバイト数を設定します。 公開鍵をバッファpubに格納し、pubSzにこのバッファに書き込んだバイト数を設定します。

Parameters:

  • key 鍵ペアをエクスポートするためのed25519_key構造体へのポインタ。
  • priv 秘密鍵を出力するバッファへのポインタ。
  • privSz 秘密鍵を出力する先のバッファのサイズを保持するword32型変数へのポインタ。 秘密鍵のエクスポート後には書き込まれたバイト数がセットされます。
  • pub パブリックキーを出力するバッファへのポインタ
  • pubSz 公開鍵を出力する先のバッファのサイズを保持するword32型変数へのポインタ。 公開鍵のエクスポート後には書き込まれたバイト数がセットされます。

See:

Return:

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

Example

int ret;
ed25519_key key;
// initialize key, make 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) {
    // error exporting public key
}

function wc_ed25519_check_key

int wc_ed25519_check_key(
    ed25519_key * key
)

この関数は、ed25519_key構造体の公開鍵をチェックします。

Parameters:

  • key 公開鍵と秘密鍵の両方を保持しているed25519_key構造体へのポインタ

See: wc_ed25519_import_private_key

Return:

  • 0 プライベートキーと公開鍵が一致した場合に返されます。
  • BAD_FUNC_ARG 与えられた鍵がNULLの場合に返されます。
  • PUBLIC_KEY_E 公開鍵が参照できないか無効の場合に返されます。

Example

int ret;
byte priv[] = { initialize with 57 byte private key };
byte pub[]  = { initialize with the corresponding public key };

ed25519_key key;
wc_ed25519_init_key(&key);
wc_ed25519_import_private_key(priv, sizeof(priv), pub, sizeof(pub), &key);
ret = wc_ed25519_check_key(&key);
if (ret != 0) {
    // error checking key
}

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;
// initialize key, make key
keySz = wc_ed25519_size(&key);
if (keySz == 0) {
    // error determining key size
}

function wc_ed25519_priv_size

int wc_ed25519_priv_size(
    ed25519_key * key
)

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

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); // initialize 32 byte Ed25519 key
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); // initialize 32 byte Ed25519 key
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;
// initialize key, make key

sigSz = wc_ed25519_sig_size(&key);
if (sigSz == 0) {
    // error determining sig size
}

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 2024-02-29 at 02:36:00 +0000