ed25519.h
Functions
Name | |
---|---|
int | wc_ed25519_make_public(ed25519_key * key, unsigned char * pubKey, word32 pubKeySz) この関数は秘密鍵からED25519公開鍵を生成します。公開鍵をバッファPubkeyに格納し、Pubkeyszでこのバッファに書き込まれたバイトを設定します。 |
int | wc_ed25519_make_key(WC_RNG * rng, int keysize, ed25519_key * key) この関数は新しいED25519キーを生成し、それをキーに格納します。 |
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署名を確認して信頼性を確保します。RESを介して答えを返し、有効な署名に対応する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署名を確認して信頼性を確保します。文脈はデータ検証済みの一部として含まれています。RESを介して答えを返し、有効な署名に対応する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でなければなりません。答えはRESを介して返され、有効な署名に対応する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署名を確認して信頼性を確保します。文脈はデータ検証済みの一部として含まれています。検証前にメッセージがプリハッシュされています。RESを介して答えを返し、有効な署名に対応する1、無効な署名に対応する0を返します。 |
int | wc_ed25519_init(ed25519_key * key) この関数は、メッセージ検証で将来の使用のためにED25519_Keyオブジェクトを初期化します。 |
void | wc_ed25519_free(ed25519_key * key) この関数は、使用された後にED25519オブジェクトを解放します。 Example |
int | wc_ed25519_import_public(const byte * in, word32 inLen, ed25519_key * key) この関数は、公開鍵を含むバッファからPublic 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_export_public(ed25519_key * key, byte * out, word32 * outLen) この関数は、秘密鍵をED25519_Key構造体からエクスポートします。公開鍵をバッファアウトに格納し、ounterenでこのバッファに書き込まれたバイトを設定します。 |
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に格納し、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) この関数は、秘密鍵サイズ(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公開鍵を生成します。公開鍵をバッファPubkeyに格納し、Pubkeyszでこのバッファに書き込まれたバイトを設定します。
Parameters:
- キーを生成するED25519_Keyへのキーポインタ。
- 公開鍵を保存するバッファへのポインタ。 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
}
See:
Return:
- 0 公開鍵の作成に成功したときに返されます。
- BAD_FUNC_ARG IFIキーまたはPubKeyがNULLに評価された場合、または指定されたキーサイズが32バイトではない場合(ED25519に32バイトのキーがあります)。
- MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
function wc_ed25519_make_key
int wc_ed25519_make_key(
WC_RNG * rng,
int keysize,
ed25519_key * key
)
この関数は新しいED25519キーを生成し、それをキーに格納します。
Parameters:
- RNGキーを生成する初期化されたRNGオブジェクトへのポインタ。
- keysize keyの長さを生成します。ED25519の場合は常に32になります。 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
}
See: wc_ed25519_init
Return:
- 0 ED25519_KEYを正常に行うと返されます。
- BAD_FUNC_ARG RNGまたはKEYがNULLに評価された場合、または指定されたキーサイズが32バイトではない場合(ED25519に32バイトのキーがあります)。
- MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
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:
- 署名するメッセージを含むバッファへのポインタ。
- 署名するメッセージのインレル長。
- 生成された署名を格納するためのバッファー。
- 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。 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
}
See:
Return:
- 0 メッセージの署名を正常に生成すると返されます。
- BAD_FUNC_ARG 入力パラメータのいずれかがNULLに評価された場合、または出力バッファが小さすぎて生成された署名を保存する場合は返されます。
- MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
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:
- 署名するメッセージを含むバッファへのポインタ。
- 署名するメッセージのインレル長。
- 生成された署名を格納するためのバッファー。
- 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。
- 署名を生成するプライベートED25519_KEYへのキーポインタ。
- メッセージが署名されているコンテキストを含むバッファへのコンテキストポインタ。 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
}
See:
Return:
- 0 メッセージの署名を正常に生成すると返されます。
- BAD_FUNC_ARG 返された入力パラメータはNULLに評価されます。出力バッファが小さすぎて生成された署名を保存するには小さすぎます。
- MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
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:
- サインへのメッセージのハッシュを含むバッファへのハッシュポインタ。
- サインへのメッセージのハッシュのハッシュの長さ。
- 生成された署名を格納するためのバッファー。
- 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。
- 署名を生成するプライベートED25519_KEYへのキーポインタ。
- メッセージが署名されているコンテキストを含むバッファへのコンテキストポインタ。 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
}
See:
Return:
- 0 メッセージダイジェストの署名を正常に生成すると返されます。
- BAD_FUNC_ARG 返された入力パラメータはNULLに評価されます。出力バッファが小さすぎて生成された署名を保存するには小さすぎます。
- MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
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:
- 署名するメッセージを含むバッファへのポインタ。
- 署名するメッセージのインレル長。
- 生成された署名を格納するためのバッファー。
- 出力バッファの最大長の範囲内。メッセージ署名の生成に成功したときに、書き込まれたバイトを保存します。
- 署名を生成するプライベートED25519_KEYへのキーポインタ。
- メッセージが署名されているコンテキストを含むバッファへのコンテキストポインタ。 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
}
See:
Return:
- 0 メッセージの署名を正常に生成すると返されます。
- BAD_FUNC_ARG 返された入力パラメータはNULLに評価されます。出力バッファが小さすぎて生成された署名を保存するには小さすぎます。
- MEMORY_E 関数の実行中にメモリを割り当てるエラーがある場合に返されます。
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署名を確認して信頼性を確保します。RESを介して答えを返し、有効な署名に対応する1、無効な署名に対応する0を返します。
Parameters:
- 検証するシグネチャを含むバッファへのSIGポインタ。
- 検証するシグネチャのシグレンの長さ。
- メッセージを含むバッファへのMSGポインタを確認する。
- 検証するメッセージのMSGlen長。
- 検証の結果へのRESポインタ。1メッセージが正常に検証されたことを示します。 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
}
See:
Return:
- 0 署名検証と認証を正常に実行したときに返されます。
- BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
- SIG_VERIFY_E 検証が完了した場合は返されますが、生成された署名は提供された署名と一致しません。
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署名を確認して信頼性を確保します。文脈はデータ検証済みの一部として含まれています。RESを介して答えを返し、有効な署名に対応する1、無効な署名に対応する0を返します。
Parameters:
- 検証するシグネチャを含むバッファへのSIGポインタ。
- 検証するシグネチャのシグレンの長さ。
- メッセージを含むバッファへのMSGポインタを確認する。
- 検証するメッセージのMSGlen長。
- 検証の結果へのRESポインタ。1メッセージが正常に検証されたことを示します。
- 署名を検証するためのPublic ED25519キーへのキーポインタ。
- メッセージが署名されたコンテキストを含むバッファへのコンテキストポインタ。 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
}
See:
Return:
- 0 署名検証と認証を正常に実行したときに返されます。
- BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
- SIG_VERIFY_E 検証が完了した場合は返されますが、生成された署名は提供された署名と一致しません。
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でなければなりません。答えはRESを介して返され、有効な署名に対応する1、無効な署名に対応する0を返します。
Parameters:
- 検証するシグネチャを含むバッファへのSIGポインタ。
- 検証するシグネチャのシグレンの長さ。
- 検証するメッセージのハッシュを含むバッファへのハッシュポインタ。
- 検証するハッシュのハッシュレン長。
- 検証の結果へのRESポインタ。1メッセージが正常に検証されたことを示します。
- 署名を検証するためのPublic ED25519キーへのキーポインタ。
- メッセージが署名されたコンテキストを含むバッファへのコンテキストポインタ。 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
}
See:
Return:
- 0 署名検証と認証を正常に実行したときに返されます。
- BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
- SIG_VERIFY_E 検証が完了した場合は返されますが、生成された署名は提供された署名と一致しません。
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署名を確認して信頼性を確保します。文脈はデータ検証済みの一部として含まれています。検証前にメッセージがプリハッシュされています。RESを介して答えを返し、有効な署名に対応する1、無効な署名に対応する0を返します。
Parameters:
- 検証するシグネチャを含むバッファへのSIGポインタ。
- 検証するシグネチャのシグレンの長さ。
- メッセージを含むバッファへのMSGポインタを確認する。
- 検証するメッセージのMSGlen長。
- 検証の結果へのRESポインタ。1メッセージが正常に検証されたことを示します。
- 署名を検証するためのPublic ED25519キーへのキーポインタ。
- メッセージが署名されたコンテキストを含むバッファへのコンテキストポインタ。 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
}
See:
Return:
- 0 署名検証と認証を正常に実行したときに返されます。
- BAD_FUNC_ARG いずれかの入力パラメータがNULLに評価された場合、またはSIGLENが署名の実際の長さと一致しない場合に返されます。
- SIG_VERIFY_E 検証が完了した場合は返されますが、生成された署名は提供された署名と一致しません。
function wc_ed25519_init
int wc_ed25519_init(
ed25519_key * key
)
この関数は、メッセージ検証で将来の使用のためにED25519_Keyオブジェクトを初期化します。
See:
Return:
- 0 ED25519_Keyオブジェクトの初期化に成功したときに返されます。
- BAD_FUNC_ARG キーがNULLの場合は返されます。 Example
ed25519_key key;
wc_ed25519_init(&key);
function wc_ed25519_free
void wc_ed25519_free(
ed25519_key * key
)
この関数は、使用された後にED25519オブジェクトを解放します。 Example
See: wc_ed25519_init
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
)
この関数は、公開鍵を含むバッファからPublic ED25519_Keyペアをインポートします。この関数は圧縮キーと非圧縮キーの両方を処理します。
Parameters:
- 公開鍵を含むバッファへのポインタ。
- 公開鍵を含むバッファのインレル長。 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
}
See:
Return:
- 0 ED25519_KEYのインポートに成功しました。
- BAD_FUNC_ARG inまたはkeyがnullに評価された場合、またはInlenがED25519キーのサイズよりも小さい場合に返されます。
function wc_ed25519_import_private_only
int wc_ed25519_import_private_only(
const byte * priv,
word32 privSz,
ed25519_key * key
)
この関数は、ed25519秘密鍵をバッファからのみインポートします。
Parameters:
- 秘密鍵を含むバッファへのPRIVポインタ。
- 秘密鍵のPrivsz長さ。
- 公開鍵を含むバッファへのPubポインタ。
- 公開鍵のPubszの長さ。 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
}
See:
Return:
- 0 ED25519キーのインポートに成功しました。
- BAD_FUNC_ARG INまたはKEYがNULLに評価された場合、またはPRIVSZがED25519_KEY_SIZEよりも小さい場合に返されます。
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の長さ。 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
}
See:
Return:
- 0 ED25519_KEYのインポートに成功しました。
- BAD_FUNC_ARG INまたはKEYがNULLに評価された場合、またはいずれかのPROVSZがED25519_SEY_SIZEまたはPUBSZよりも小さい場合は、ED25519_PUB_KEY_SIZEよりも小さい場合に返されます。
function wc_ed25519_export_public
int wc_ed25519_export_public(
ed25519_key * key,
byte * out,
word32 * outLen
)
この関数は、秘密鍵をED25519_Key構造体からエクスポートします。公開鍵をバッファアウトに格納し、ounterenでこのバッファに書き込まれたバイトを設定します。
Parameters:
- 公開鍵をエクスポートするためのED25519_Key構造体へのキーポインタ。
- 公開鍵を保存するバッファへのポインタ。 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
}
See:
Return:
- 0 公開鍵のエクスポートに成功したら返されます。
- BAD_FUNC_ARG いずれかの入力値がNULLに評価された場合に返されます。
- BUFFER_E 提供されたバッファーが秘密鍵を保存するのに十分な大きさでない場合に返されます。このエラーを返すと、outlenに必要なサイズを設定します。
function wc_ed25519_export_private_only
int wc_ed25519_export_private_only(
ed25519_key * key,
byte * out,
word32 * outLen
)
この関数は、ED25519_Key構造体からの秘密鍵のみをエクスポートします。秘密鍵をバッファアウトに格納し、outlenにこのバッファに書き込まれたバイトを設定します。
Parameters:
- 秘密鍵をエクスポートするためのED25519_Key構造体へのキーポインタ。
- 秘密鍵を保存するバッファへのポインタ。 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
}
See:
Return:
- 0 秘密鍵のエクスポートに成功したら返されます。
- ECC_BAD_ARG_E いずれかの入力値がNULLに評価された場合に返されます。
- BUFFER_E 提供されたバッファーが秘密鍵を保存するのに十分な大きさでない場合に返されます。
function wc_ed25519_export_private
int wc_ed25519_export_private(
ed25519_key * key,
byte * out,
word32 * outLen
)
この関数は、ED25519_Key構造体からキーペアをエクスポートします。キーペアをバッファOUTに格納し、ounterenでこのバッファに書き込まれたバイトを設定します。
Parameters:
- キーペアをエクスポートするためのED25519_Key構造体へのキーポインタ。
- キーペアを保存するバッファへのポインタ。 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
}
See:
Return:
- 0 キーペアのエクスポートに成功したら返されます。
- ECC_BAD_ARG_E いずれかの入力値がNULLに評価された場合に返されます。
- BUFFER_E 提供されているバッファーがキーペアを保存するのに十分な大きさでない場合に返されます。
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:
- キーペアをエクスポートするためのED25519_Key構造体へのキーポインタ。
- 秘密鍵を保存するバッファへのPRIVポインタ。
- PRIVSZ PIVINSZポインタサイズが表示されているサイズを持つWord32オブジェクトへのポインタ。秘密鍵のエクスポート後に書き込まれたバイト数を設定します。
- パブリックキーを保存するバッファへのPub。 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
}
See:
Return:
- 0 キーペアのエクスポートに成功したら返されます。
- ECC_BAD_ARG_E いずれかの入力値がNULLに評価された場合に返されます。
- BUFFER_E 提供されているバッファーがキーペアを保存するのに十分な大きさでない場合に返されます。
function wc_ed25519_check_key
int wc_ed25519_check_key(
ed25519_key * key
)
この関数は、ED25519_KEY構造体の公開鍵をチェックします。
See: wc_ed25519_import_private_key
Return:
- 0 プライベートキーと公開鍵が一致した場合に返されます。
- BAD_FUNC_ARGS 与えられたキーがNULLの場合に返されます。 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バイトのサイズを返します。
See: wc_ed25519_make_key
Return:
- ED25519_KEY_SIZE 有効な秘密鍵のサイズ(32バイト)。
- BAD_FUNC_ARGS 与えられたキーが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)をバイト単位で返します。
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
)
この関数は圧縮鍵サイズをバイト単位で返します(公開鍵)。
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)を返します。
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_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_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 2023-03-29 at 08:44:34 +0000