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:
- wc_ed25519_import_public_ex
- wc_ed25519_import_private_key
- wc_ed25519_import_private_key_ex
- wc_ed25519_export_public
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:
- wc_ed25519_import_public
- wc_ed25519_import_private_key
- wc_ed25519_import_private_key_ex
- wc_ed25519_export_public
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:
- wc_ed25519_import_public
- wc_ed25519_import_public_ex
- wc_ed25519_import_private_only
- wc_ed25519_import_private_key
- wc_ed25519_export_private
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-11-21 at 02:35:59 +0000